A Linux 6.2 kernel kiadása.

Két hónapi fejlesztés után Linus Torvalds bemutatta a Linux 6.2 kernel kiadását. A legfontosabb változások között szerepel: lehetővé vált a Copyleft-Next licenc alatt történő kódfogadás, javult a RAID5/6 megvalósítása a Btrfs-ben, folytatódott a Rust nyelv támogatásának integrációja, csökkentek a költségek a Retbleed támadások védelme érdekében, lehetőség nyílt a memóriafogyasztás szabályozására visszaírásnál, a TCP-hez hozzáadva a PLB (Protective Load Balancing) terheléselosztó mechanizmust, hybrid mechanizmus került a végrehajtási folyamatok védelmére (FineIBT), a BPF-ben lehetőség nyílt saját objektumok és adatstruktúrák meghatározására, bekerült az rv (Runtime Verification) utility, csökkent a RCU zárolások megvalósításának energiafogyasztása.

Az új verzióba 16843 javítást fogadtak el 2178 fejlesztőtől, a patch mérete 62 MB (a változások 14108 fájlt érintettek, 730195 kódsort adtak hozzá, 409485 sort töröltek). A 6.2-es verzióban bemutatott változások körülbelül 42%-a az eszközmeghajtókhoz kapcsolódik, körülbelül 16% a hardverarchitektúrákhoz specifikusan frissített kódhoz tartozik, 12% kapcsolódik a hálózati stackhez, 4% a fájlrendszerekhez, és 3% a kernel belső alrendszereihez.

A 6.2-es kernel legfőbb újításai:

  • Memória és rendszerszolgáltatások
    • Lehetővé vált a kernelbe történő bevitel olyan kódok és változtatások esetén, amelyeket a Copyleft-Next 0.3.1 licenc alapján biztosítanak. A Copyleft-Next licencet a GPLv3 egyik szerzője hozta létre, és teljesen kompatibilis a GPLv2 licenccel, amit a SUSE és a Red Hat jogászai is megerősítettek. A GPLv2-hez képest a Copyleft-Next licenc lényegesen tömörebb és érthetőbb (eltávolították a bevezető részt és a rég elavult kompromisszumok említését), megszabja a megsértések megszüntetésének időtartamát és folyamatát, automatikusan eltávolítja a copyleft követelményeket a 15 évnél régebbi anyagok esetében.

      A Copyleft-Next szintén tartalmazza a szabadalmi technológiákra vonatkozó jogok biztosításának pontját, ami miatt a GPLv2-től eltérően ez a licenc kompatibilis az Apache 2.0 licenccel. A GPLv2-vel való teljes kompatibilitás biztosítása érdekében a Copyleft-Next szövege egyértelműen jelzi, hogy a származékos munka nemcsak a Copyleft-Next eredeti licenc alatt adható ki, hanem GPL licenc alatt is.

    • A rendszer tartalmazza az 'rv' segédprogramot, amely felhasználói interfészt biztosít az RV (Runtime Verification) alrendszer kezelőivel való interakcióhoz, amely a rendkívül megbízható rendszerek működésének helyességét ellenőrzi, garantálva a leállások hiányát. Az ellenőrzés a végrehajtás során történik, a nyomkövetési pontokhoz való kezelők csatolásával, amelyek az aktuális végrehajtást egy előre meghatározott referencia determinisztikus automatamodellhez viszonyítják, amely a rendszer elvárt viselkedését definiálja.
    • A zRAM eszköze lehetővé teszi a swap tér tárolását tömörített formában a memóriában (a memóriában létrejön egy blokkberendezés, amelyre tömörítéssel történik a swapelés), és megvalósította az oldalak alternatív algoritmus felhasználásával történő újrapakolásának lehetőségét, hogy magasabb tömörítési szintet érjen el. Az alapötlet az, hogy választhatunk a különböző algoritmusok (lzo, lzo-rle, lz4, lz4hc, zstd) között, amelyek a tömörítés/dekompresszió sebessége és a tömörítési szint között kínálnak kompromisszumokat, vagy amelyek optimálisak speciális helyzetekben (például nagy memóriacsomagok tömörítésére).
    • Hozzáadva az 'iommufd' API a felhasználói térből történő memóriakezelés irányításához az IOMMU (I/O Memory Management Unit) rendszerén belül. Az új API lehetővé teszi a bemeneti/kimeneti memóriaoldal-táblák kezelését fájlleírók segítségével.
    • A BPF keretében lehetőség van típusok létrehozására, saját objektumok meghatározására, saját objektumhierarchia felépítésére és rugalmasan saját adatstruktúrák, mint például láncolt listák kialakítására. A BPF-programok alvó üzemmódjára (BPF_F_SLEEPABLE) hozzáadva lett a bpf_rcu_read_{,un}lock() blokkolásainak támogatása. Bevezetésre került a task_struct objektumok megőrzésének támogatása. Hozzáadva lett a BPF_MAP_TYPE_CGRP_STORAGE map-típus, amely helyi tárolást biztosít a cgroups számára.
    • Az RCU (Read-copy-update) blokkolási mechanizmus számára megvalósítva lett egy választható 'lustasági' callback-hívások mechanizmusa, amely több callback-hívást egyszerre, egy időzítővel batch módban dolgoz fel. A javasolt optimalizálás alkalmazása 5-10%-kal csökkenti az energiafogyasztást Android és ChromeOS eszközökön az RCU-kérések késlekedése révén, amikor a rendszer inaktív vagy alacsony terhelés alatt áll.
    • Hozzáadva a sysctl split_lock_mitigate a rendszer reakciójának kezelésére a felosztott zárak ("split lock") észlelésénél, amelyek a memóriában nem igazított adatokhoz való hozzáférés során lépnek fel, ami miatt egy atomikus utasítás végrehajtása során az adatok átfedik a CPU cache két vonalát. Az ilyen blokkok jelentős teljesítménycsökkenést okoznak. Ha a split_lock_mitigate értéke 0, csak figyelmeztetés jelenik meg a problémáról, míg az érték 1 beállításakor a figyelmeztetés mellett a problémát okozó folyamat végrehajtása is lelassul, hogy megőrizze a rendszer többi részének teljesítményét.
    • A PowerPC architektúrához új qspinlock zárak megvalósítását javasolják, amelyek magasabb teljesítményt mutatnak és néhány, kivételes esetekben fellépő zárakkal kapcsolatos problémát megoldanak.
    • Átdolgozták az MSI (Message-Signaled Interrupts) megszakításkezelő kódját, eltávolítva a felhalmozódott architekturális problémákat és hozzáadva a lehetőséget, hogy különböző eszközöknek külön handler-eket rendeljenek.
    • A LoongArch utasításkészlet architektúrán alapuló rendszerekhez, amelyet a Loongson 3 5000 processzorok használnak és amely egy új, a MIPS-hez és RISC-V-hez hasonló RISC ISA-t valósít meg, bevezették az ftrace, stack protection, alvó és várakozó üzemmódok támogatását.
    • Lehetővé vált megosztott anonimitás memóriaterületek nevének hozzárendelése (korábban nevek csak a konkrét folyamathoz kötött privát anonimitás memóriához rendelhetők voltak).
    • Új kernel parancssori paraméter, a "trace_trigger" került hozzáadásra, amely a nyomkövetési triggereket aktiválja, a kondicionális parancsok kiváltásához kapcsolódik, amelyeket kontrollálásakor hajtanak végre (például trace_trigger="sched_switch.stacktrace if prev_state == 2").
    • Növelték a binutils csomag verziójának követelményeit. A kernel összegyűjtéséhez most legalább binutils 2.25 szükséges.
    • Az exec() hívásánál lehetőség nyílt a folyamatot az időterületekbe (time namespace) helyezni, ahol az idő eltér a rendszertől.
    • Megkezdődött a Rust-for-Linux ágból kapcsolódó funkciók átvitele, amelyek a Rust nyelv második nyelvként való használatára vonatkoznak illesztőprogramok és a kernel modulok fejlesztésében. A Rust támogatása alapértelmezés szerint inaktív, és nem jár a Rust kötelező buildfüggőségek közé sorolásával a kernelhez. A múltbeli kiadásban javasolt alapfunkcionalitás kiterjesztve lett alacsony szintű kód támogatásával, mint például a Vec típus és a pr_debug!(), pr_cont!() és pr_alert!() makrók, valamint a "#[vtable]" procedurális makró, amely megkönnyíti a funkciómutató táblák kezelését. A kernel alrendszerek fölött található magas szintű Rust-borítók hozzáadása, amelyek lehetővé teszik a teljes értékű Rust alapú illesztőprogramok létrehozását, a következő kiadásokban várható.
    • A kernelben használt "char" típus mostantól minden architektúrára alapértelmezettként aláíratlanként van deklarálva.
    • A memóriakezelési mechanizmus, a SLOB (slab allocator), amelyet kis memória kapacitású rendszerekhez terveztek, elavultnak lett nyilvánítva. Helyette normál körülmények között a SLUB vagy SLAB használata ajánlott. Kis memória kapacitású rendszerek esetén a SLUB használata SLUB_TINY módban javasolt.
  • Lemezszubszisztéma, bemenet/kipontozás és fájlrendszerek
    • A Btrfs-ben javításokat hoztak, amelyek a RAID 5/6 megvalósításához kapcsolódó "write hole" problémák orvoslására irányultak (a RAID helyreállítási kísérlete, ha a hiba írás közben következik be, és nem lehet meghatározni, hogy melyik blokk lett helyesen rögzítve az RAID eszközök egyikén, ami a még nem rögzített blokkokhoz kapcsolódó blokkok romlásához vezethet). Ezenkívül SSD esetén mostantól automatikusan engedélyezésre kerül az alapértelmezett aszinkron "discard" művelet, amely lehetővé teszi a magasabb teljesítmény elérését a "discard" műveletek sorozatának hatékony csoportosítása és a háttérfeldolgozó által történő sor kezelése révén. Növelték a send és lseek műveletek, valamint az ioctl FIEMAP teljesítményét.
    • Bővült a késleltetett írás kezelésének lehetősége (writeback, háttérben történő módosított adatok mentése) blokkeszközök esetében. Bizonyos helyzetekben, például hálózati blokkeszközök vagy USB-meghajtók használatakor, a késleltetett írás jelentős memóriafogyasztást okozhat. A késleltetett írás viselkedésének irányítására és a lapcache méretének meghatározott keretek között tartására új paraméterek kerültek bevezetésre a sysfs-en (/sys/class/bdi/): strict_limit, min_bytes, max_bytes, min_ratio_fine és max_ratio_fine.
    • Az F2FS fájlrendszerben megvalósították az ioctl atomikus csere műveletét, amely lehetővé teszi az adatok fájlba történő írását egy atomikus művelet keretein belül. Az F2FS-be a blokkosztályok cache-ét is bevezették, amely segít meghatározni az aktívan használt adatokat vagy azokat, amelyekhez régóta nem nyúltak.
    • Az ext4 fájlrendszerben csak a hibajavítást hajtottak végre.
    • Az ntfs3 fájlrendszerben több új csatlakoztatási opciót javasoltak: «nocase» a fájl- és könyvtárnevek kis- és nagybetűinek figyelembevételéhez; windows_name a Windows operációs rendszer számára nem megfelelő karaktereket tartalmazó fájlnevek létrehozásának megakadályozásához; hide_dot_files a ponttal kezdődő fájlok rejtett fájlként való kezeléséhez.
    • A Squashfs fájlrendszerben megvalósították a «threads=» csatlakozási opciót, amellyel meghatározható a műveletek párhuzamos végrehajtásához szükséges szálak száma. A Squashfs-ben megjelent a csatlakoztatott fájlrendszerek felhasználói azonosítók térképezésének lehetősége is, amely az adott felhasználó fájljainak egy idegen partición való összevetését teszi lehetővé a jelenlegi rendszer más felhasználójával.
    • A POSIX hozzáférés-ellenőrzési listák (POSIX ACL) megvalósítását újragondolták. Az új megvalósítás megszüntette az architekturális problémákat, egyszerűsítette a kód karbantartását és biztonságosabb adattípusokat alkalmazott.
    • Az fscrypt alrendszer, amely a fájlok és könyvtárak átlátszó titkosítására szolgál, támogatást kapott az SM4 titkosítási algoritmushoz (kínai szabvány GB/T 32907-2016).
    • Lehetőséget biztosítottak a kernel NFSv2 támogatás nélküli összeállítására (a jövőben az NFSv2 támogatását teljesen meg kívánják szüntetni).
    • Megváltozott a NVMe-eszközökhöz való hozzáférés-ellenőrzés szervezése. Lehetővé vált az olvasás és írás az NVMe-eszközön, ha az író folyamat hozzáféréssel rendelkezik egy speciális eszközfájlhoz (korábban a folyamatnak rendelkeznie kellett a CAP_SYS_ADMIN jogosultsággal).
    • Eltávolították a CD/DVD-hez tartozó illesztőprogram-csomagot, amelyet 2016-ban elavultnak nyilvánítottak.
  • Virtualizáció és biztonság
    • Megvalósítva az új védelmi módszert az Intel és AMD CPU-k Retbleed sérülékenysége ellen, amely a hívások mélységének nyomon követését használja, és nem lassítja le annyira a működést, mint a korábban alkalmazott Retbleed védelem. Az új üzemmód aktiválásához javasolt a kernel parancssori paraméter 'retbleed=stuff'.
    • Hibrid végrehajtási védelmi mechanizmus került bevezetésre a FineIBT alkalmazásával, amely az Intel IBT (Indirect Branch Tracking) hardveres utasításait és a kCFI (kernel Control Flow Integrity) szoftveres védelmét kombinálja a vezérlési áramlás (control flow) normális sorrendjének megsértése elleni blokkolás érdekében, amelyet a memória módosításával elérhető exploitok okoznak. A FineIBT csak akkor engedélyezi az indirekt ugrás végrehajtását, ha az ENDBR instrukcióra ugrik, amely a funkció elején helyezkedik el. Továbbá, a kCFI mechanizmushoz hasonlóan, ellenőrző hash-eket is végrehajtanak, amelyek garantálják az állapotok változatlanságát.
    • Korlátozásokat vezettek be az 'oops' állapotok generálásának manipulálására irányuló támadások blokkolására, amelyek után a problémás feladatok befejeződnek, és az állapot helyreállítása a rendszer működésének megállítása nélkül történik. Nagy számú 'oops' állapot hívás esetén a hivatkozási számláló (refcount) túlcsordulása léphet fel, amely lehetőséget ad a NULL mutatók dereferálásából eredő sérülékenységek kihasználására. Az ilyen támadások védelmére a kernelbe egy maximális 'oops' trigger számot építettek be, amelynek túllépése esetén a kernel pánik állapotba lép, majd újraindul, megakadályozva a refcount túlcsordulásához szükséges iterációk elérését. Alapértelmezés szerint a limit 10 ezer 'oops'-ra van beállítva, de ezt az oops_limit paraméter segítségével módosítani lehet.
    • Hozzáadva a LEGACY_TIOCSTI konfigurációs paraméter és a sysctl legacy_tiocsti, amely lehetővé teszi, hogy letiltsuk az adatok terminálba való beírását az ioctl TIOCSTI segítségével, mivel ez a funkció lehetővé teheti tetszőleges karakterek beszúrását a terminál bemeneti pufférébe, és ezzel felhasználói bevitel szimulálását.
    • Javasolt egy új típusú belső struktúra, az encoded_page, amelynek alsó bitei a pointer kiegészítő információinak tárolására szolgálnak, alkalmazva a pointerek véletlenszerű dereferálása ellen (valódi dereferálás szükség esetén először ezeket a kiegészítő biteket kell törölni).
    • ARM64 platformon a bootolási folyamat során lehetőség nyílik a Shadow Stack mechanizmus szoftveres megvalósításának engedélyezésére és letiltására, amely a visszatérési cím felülírása ellen véd a verem túltöltése esetén (a védelem lényege, hogy a funkcióhívás után a visszatérési címet egy külön "árnyék" veremben tárolja, és ezt a címet a funkcióból való kilépés előtt nyerjük vissza). A hardveres és szoftveres Shadow Stack megvalósítás egy kernel buildben való támogatása lehetővé teszi egy kernel használatát különböző ARM rendszereken, függetlenül attól, hogy támogatják-e a pointerek hitelesítésének utasításait. A szoftveres megvalósítást a bootolás során szükséges utasítások kódba való behelyettesítésével lehet engedélyezni.
    • Hozzáadva az Intel processzorokon való aszinkron kilépési értesítési mechanizmus támogatása, amely lehetővé teszi a single-step támadások észlelését az SGX enclávékban végrehajtott kódon.
    • Javasolt egy műveletsor, amely lehetővé teszi a hipervizor számára, hogy támogassa a vendégrendszerek Intel TDX (Trusted Domain Extensions) kéréseit.
    • Eltávolítva a RANDOM_TRUST_BOOTLOADER és RANDOM_TRUST_CPU kernel beállításokat, helyettük a megfelelő parancssori opciókat kell használni: random.trust_bootloader és random.trust_cpu.
    • A Landlock mechanizmushoz, amely lehetővé teszi a folyamatcsoportok külső környezettel való interakciójának korlátozását, hozzáadva a LANDLOCK_ACCESS_FS_TRUNCATE jelző támogatását, amely lehetővé teszi a fájlok megcsonkítási műveleteinek ellenőrzését.
  • Hálózati alrendszer
    • Az IPv6-hoz hozzáadva a PLB (Protective Load Balancing) támogatás, amely egy terheléselosztó mechanizmus a hálózati kapcsolatok között, célja a túlterhelési pontok csökkentése a datacenter switch-eken. Az IPv6 Flow Label megváltoztatásával a PLB véletlenszerűen megváltoztatja a csomagok útvonalát a switch portjain a terhelés kiegyensúlyozása érdekében. A csomagok újrasorrendzésének csökkentése érdekében ezt az eljárást lehetőség szerint leállási időszakok (idle) után hajtják végre. A PLB alkalmazása a Google datacenteiben lehetővé tette a switch portjain a terhelés egyensúlyának átlagosan 60%-os csökkentését, a csomagvesztés 33%-os csökkentését, és a késleltetések 20%-os csökkentését.
    • MédiaTek eszközök Wi-Fi 7 (802.11be) támogatással rendelkező meghajtó hozzáadva.
    • 800 gigabites linkek támogatása hozzáadva.
    • A hálózati interfészek átnevezése valós időben, leállítás nélkül, hozzáadva.
    • A SYN-flood jelentésekbe hozzáadva a paketett érkező IP-címének említése.
    • UDP esetén külön hash táblák használatának lehetősége különböző névkörnyezetek számára implementálva.
    • A hálózati hibridek támogatásba került a MAB (MAC Authentication Bypass) hitelesítési módszer.
    • A CAN (CAN_RAW) protokollhoz elérhető a SO_MARK socket üzemmód támogatása, ami lehetővé teszi a fwmark alapú forgalomszűrők csatolását.
    • Az ipsethez új bitmask paraméter került bevezetésre, amely lehetővé teszi egy IP-címen belüli tetszőleges bitek alapján maskot megadni (például, „ipset create set1 hash:ip bitmask 255.128.255.0”).
    • Az nf_tables támogatást kapott a belső (inner) fejléc feldolgozásához a tunneling csomagokban.
  • Hardver
    • Hozzáadva az 'accel' alrendszer a számítási gyorsítók keretrendszerének megvalósításával, amelyek megtalálhatók külön ASIC formájában, illetve IP-blokkoként SoC és GPU belsejében. Ezek a gyorsítók elsősorban a gépi tanulási feladatok gyorsítására összpontosítanak.
    • Az amdgpu meghajtó támogatásba vette az IP komponenseket GC, PSP, SMU és NBIO. ARM64 rendszerekhez a DCN (Display Core Next) támogatás is elérhető. A védett kijelzők kimenete át lett állítva a DCN10 használatáról DCN21-re, és most több monitor csatlakoztatásakor is használható.
    • Az i915 (Intel) meghajtó stabilizálta a diszkrét Intel Arc (DG2/Alchemist) grafikus kártyák támogatását.
    • A Nouveau meghajtó implementálta az NVIDIA GA102 (RTX 30) GPU támogatását az Ampere architektúra alapján. Az nva3 (GT215) kártyák esetében lehetővé vált a háttérvilágítás kezelésének lehetősége.
    • Hozzáadva a Realtek 8852BE, Realtek 8821CU, 8822BU, 8822CU, 8723DU (USB) chipkészleteket és a MediaTek MT7996, Broadcom BCM4377/4378/4387 Bluetooth interfészeket, valamint a Motorcomm yt8521, NVIDIA Tegra GE Ethernet vezérlőket támogató funkció.
    • Hozzáadva az ASoC (ALSA Rendszer chip) támogatása az integrált hangchip-ekhez, mint például a HP Stream 8, Advantech MICA-071, Dell SKU 0C11, Intel ALC5682I-VD, Xiaomi Redmi Book Pro 14 2022, i.MX93, Armada 38x és RK3588. Hang interfész támogatás a Focusrite Saffire Pro 40-hez. Hozzáadva a Realtek RT1318 hangkódolót.
    • Hozzáadva a Sony okostelefonok és táblagépek támogatása (Xperia 10 IV, 5 IV, X és X compact, OnePlus One, 3, 3T és Nord N100, Xiaomi Poco F1 és Mi6, Huawei Watch, Google Pixel 3a, Samsung Galaxy Tab 4 10.1).
    • Hozzáadva az ARM SoC és az Apple T6000 (M1 Pro), T6001 (M1 Max), T6002 (M1 Ultra), Qualcomm MSM8996 Pro (Snapdragon 821), SM6115 (Snapdragon 662), SM4250 (Snapdragon 460), SM6375 (Snapdragon 695), SDM670 (Snapdragon 670), MSM8976 (Snapdragon 652), MSM8956 (Snapdragon 650), RK3326 Odroid-Go/rg351, Zyxel NSA310S, InnoComm i.MX8MM, Odroid Go Ultra támogatása.

Az amerikai Szabad Szoftver Alapítvány ez idő alatt elkészítette a teljesen szabad 6.2-es Linux-libre 6.2-gnu kernel változatot, amelyet megtisztítottak a nem szabad összetevőket tartalmazó firmware és driver elemeket. Az új kiadásban tisztítás zajlott a nouveau driver új blobjain. A blobok betöltése a mt7622, mt7996 wifi és bcm4377 bluetooth driverekben leállítva. A blobok neveinek tisztítása az Aarch64 architektúrához tartozó dts fájlokban. Frissítve a blobok tisztításához szükséges kód különböző driverekben és alrendszerekben. A s5k4ecgx driver tisztítása leállítva, mivel az eltávolításra került a kernelből.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster