Linux 6.2 kernel kiadás

Két hónapos fejlesztés után Linus Torvalds bemutatta a Linux kernel 6.2 kiadását. A legfigyelemreméltóbb változtatások közé tartozik: a Copyleft-Next licenc alatti kód elfogadása engedélyezett, a RAID5/6 implementációja javult a Btrfs-ben, folytatódik a Rust nyelv támogatásának integrációja, csökken a Retbleed támadások elleni védekezés többletköltsége, hozzáadásra került a memóriafelhasználás szabályozásának képessége a visszaírás során, hozzáadásra került egy mechanizmus a TCP kiegyenlítéséhez PLB (Protective Load Balancing), egy hibrid parancsfolyam-védelmi mechanizmus (FineIBT), a BPF mostantól képes saját objektumokat és adatstruktúrákat definiálni , az rv (Runtime Verification) segédprogram is benne van, az energiafogyasztás az RCU-zárak megvalósításában csökkent.

Az új verzió 16843 2178 javítást tartalmaz 62 14108 fejlesztőtől, a patch mérete 730195 MB (a változtatások 409485 42 fájlt érintettek, 6.2 16 kódsor került hozzáadásra, 12 4 sor törölve lett). A 3-ben bevezetett változtatások körülbelül XNUMX%-a az eszközillesztőkkel kapcsolatos, a változtatások körülbelül XNUMX%-a a hardverarchitektúrák kódjának frissítéséhez, XNUMX%-a a hálózati veremhez, XNUMX%-a a fájlrendszerekhez és XNUMX%-a. belső kernel alrendszerekhez kapcsolódnak.

Főbb újítások a 6.2-as kernelben:

  • Memória- és rendszerszolgáltatások
    • A rendszermag kódjába és a Copyleft-Next 0.3.1 licenc alatt biztosított változtatások belefoglalása megengedett. A Copyleft-Next licencet a GPLv3 egyik szerzője hozta létre, és teljes mértékben kompatibilis a GPLv2 licenccel, amint azt a SUSE és a Red Hat ügyvédei megerősítették. A GPLv2-höz képest a Copyleft-Next licenc sokkal kompaktabb és könnyebben érthető (a bevezető részt és az elavult kompromisszumok említését eltávolítottuk), meghatározza a jogsértések kiküszöbölésének időkeretét és eljárását, és automatikusan eltávolítja az elavult szoftverekre vonatkozó copyleft követelményeket, amelyek több mint 15 éves.

      A Copyleft-Next tartalmaz egy szabadalmaztatott technológia engedélyezési záradékot is, amely a GPLv2-vel ellentétben ezt a licencet kompatibilissé teszi az Apache 2.0 licenccel. A GPLv2-vel való teljes kompatibilitás biztosítása érdekében a Copyleft-Next kifejezetten kijelenti, hogy az eredeti Copyleft-Next licenc mellett származékos mű is biztosítható a GPL licence alapján.

    • A struktúra magában foglalja az „rv” segédprogramot, amely interfészt biztosít a felhasználói térből az RV (Runtime Verification) alrendszer kezelőivel való interakcióhoz, amelyet úgy terveztek, hogy ellenőrizze a megfelelő működést a rendkívül megbízható rendszereken, amelyek garantálják a hibák hiányát. Az ellenőrzés futás közben történik úgy, hogy kezelőket csatolnak a nyomkövetési pontokhoz, amelyek ellenőrzik a végrehajtás tényleges előrehaladását a gép előre meghatározott referenciadeterminisztikus modelljéhez képest, amely meghatározza a rendszer várható viselkedését.
    • A zRAM eszköz, amely lehetővé teszi a swap partíció tömörített formában történő tárolását a memóriában (a memóriában egy blokkeszköz jön létre, amelyre a csere tömörítéssel történik), az oldalak alternatív algoritmussal történő újracsomagolását valósítja meg a magasabb szint elérése érdekében. a tömörítésről. A fő ötlet az, hogy lehetőséget biztosítsunk több algoritmus (lzo, lzo-rle, lz4, lz4hc, zstd) között, amelyek saját kompromisszumot kínálnak a tömörítési/dekompressziós sebesség és a tömörítési szint között, vagy optimális speciális helyzetekben (például nagy tömörítéshez). memórialapok).
    • Hozzáadtuk az „iommufd” API-t az I/O memóriakezelő rendszer – IOMMU (I/O Memory-Management Unit) felhasználói térből történő kezeléséhez. Az új API lehetővé teszi az I/O memórialaptáblázatok fájlleírók használatával történő kezelését.
    • A BPF lehetőséget biztosít típusok létrehozására, saját objektumok meghatározására, saját objektumhierarchia felépítésére, valamint saját adatszerkezetek, például csatolt listák rugalmas létrehozására. Az alvó módba (BPF_F_SLEEPABLE) átlépő BPF-programok esetében a bpf_rcu_read_{,un}lock() zárolások támogatása hozzáadásra került. Megvalósított támogatás a task_struct objektumok mentéséhez. BPF_MAP_TYPE_CGRP_STORAGE térképtípus hozzáadva, amely helyi tárhelyet biztosít a cgroupok számára.
    • Az RCU (Olvasás-másolás-frissítés) blokkoló mechanizmushoz a „lusta” visszahívások opcionális mechanizmusa valósul meg, amelyben egyszerre több visszahívást dolgoznak fel egy időzítő segítségével kötegelt módban. A javasolt optimalizálás alkalmazása lehetővé teszi, hogy 5-10%-kal csökkentsük az Android és ChromeOS eszközök energiafogyasztását azáltal, hogy elhalasztjuk az RCU kéréseket üresjárati időkben vagy alacsony rendszerterhelésben.
    • A sysctl split_lock_mitigate hozzáadva annak vezérléséhez, hogy a rendszer hogyan reagáljon, amikor olyan megosztott zárolásokat észlel, amelyek akkor fordulnak elő, amikor nem igazodó adatokhoz hozzáférnek a memóriában, mivel az adatok egy atomi utasítás végrehajtása során keresztezik a két CPU gyorsítótár vonalát. Az ilyen dugulások a teljesítmény jelentős csökkenéséhez vezetnek. A split_lock_mitigate 0-ra állítása csak figyelmeztetést ad a probléma fennállására, míg a split_lock_mitigate 1-re való beállítása azt a folyamatot is okozza, amely a zárolás lelassulását okozta, hogy megőrizze a teljesítményt a rendszer többi része számára.
    • A qspinlock új megvalósítását javasolták a PowerPC architektúrához, amely nagyobb teljesítményt mutat, és megold néhány kivételes esetekben felmerülő zárolási problémát.
    • Az MSI (Message-Signaled Interrupts) megszakításkezelő kódot átdolgozták, kiküszöbölve a felhalmozódott architektúra problémákat, és támogatást nyújtottak az egyes kezelők különböző eszközökhöz való kötéséhez.
    • A Loongson 3 5000 processzorokban használt LoongArch utasításkészlet architektúrán alapuló és a MIPS-hez és a RISC-V-hez hasonlóan az új RISC ISA-t megvalósító rendszerek esetében az ftrace, veremvédelem, alvó és készenléti módok támogatása megvalósul.
    • Lehetőség van arra, hogy a megosztott névtelen memória területeihez neveket rendeljenek (korábban csak egy adott folyamathoz rendelt privát névtelen memóriához lehetett neveket rendelni).
    • Hozzáadott egy új „trace_trigger” kernel parancssori paramétert, amely a vezérlőellenőrzés indításakor meghívott feltételes parancsok összekapcsolására szolgáló nyomkövetési trigger aktiválására szolgál (például trace_trigger=”sched_switch.stacktrace, ha prev_state == 2″).
    • A binutils csomag verziójára vonatkozó követelmények megemelkedtek. A kernel felépítéséhez most legalább binutils 2.25 szükséges.
    • Az exec() meghívásakor lehetőség nyílik egy folyamat idő-névtérbe helyezésére, amelyben az idő eltér a rendszeridőtől.
    • Megkezdtük a Rust-for-Linux ágból további funkciók átvitelét, amelyek a Rust nyelv második nyelvként való használatához kapcsolódnak az illesztőprogramok és kernelmodulok fejlesztéséhez. A Rust támogatása alapértelmezés szerint le van tiltva, és nem eredményezi, hogy a Rust szerepeljen a szükséges kernel-felépítési függőségként. Az utolsó kiadásban kínált alapfunkciók kibővültek az alacsony szintű kódok támogatására, például a Vec típusra és a pr_debug!(), pr_cont!() és pr_alert!() makrókra, valamint a „#[vtable” eljárási makróra. ]”, amely leegyszerűsíti a függvények mutatótábláival való munkát. A jövőbeni kiadásokban várható a magas szintű Rust-kötések hozzáadása a kernel-alrendszerekhez, amelyek lehetővé teszik a teljes értékű meghajtók létrehozását a Rustban.
    • A rendszermagban használt "char" típus alapértelmezés szerint minden architektúra esetében aláíratlan.
    • Elavultnak nyilvánították a kis memóriával rendelkező rendszerekre tervezett födémmemória-kiosztási mechanizmust - SLOB (slab allocator). SLOB helyett normál körülmények között SLUB vagy SLAB használata javasolt. Kis mennyiségű memóriával rendelkező rendszerek esetén a SLUB használata javasolt SLUB_TINY módban.
  • Lemez alrendszer, I/O és fájlrendszerek
    • A Btrfs-ben olyan fejlesztések történtek, amelyek célja a RAID 5/6 implementációk „írási lyuk” problémájának kijavítása (kísérlet a RAID visszaállítására, ha az írás során összeomlik, és lehetetlen megérteni, hogy melyik blokkra melyik RAID-eszköz íródott helyesen, ami blokk-megsemmisüléshez vezethet, ami megfelel az aláírt blokkoknak). Ezen túlmenően, az SSD-k ezentúl alapértelmezés szerint automatikusan engedélyezik az aszinkron selejtezési műveletet, ha lehetséges, ami jobb teljesítményt tesz lehetővé a selejtezési műveletek hatékony sorokba csoportosítása és a sor háttérprocesszor általi feldolgozása révén. A küldési és lseek műveletek, valamint a FIEMAP ioctl jobb teljesítménye.
    • Bővültek a blokkeszközök késleltetett írásának kezelésének lehetőségei (visszaírás, a megváltozott adatok háttérben történő mentése). Bizonyos helyzetekben, például hálózati blokkoló eszközök vagy USB-meghajtók használatakor, a lusta írás nagy RAM-felhasználást eredményezhet. A lusta írások viselkedésének szabályozása és az oldal gyorsítótár méretének bizonyos korlátok között tartása érdekében új paramétereket vezettek be a strict_limit, min_bytes, max_bytes, min_ratio_fine és max_ratio_fine a sysfs-ben (/sys/class/bdi/).
    • Az F2FS fájlrendszer atomic csere ioctl műveletet valósít meg, amely lehetővé teszi, hogy egyetlen atomi műveleten belül adatokat írjunk egy fájlba. Az F2FS egy blokk kiterjedésű gyorsítótárat is hozzáad, amely segít azonosítani az aktívan használt vagy hosszú ideje nem elért adatokat.
    • Az ext4 FS csak a hibajavításokat veszi figyelembe.
    • Az ntfs3 fájlrendszer számos új beillesztési lehetőséget kínál: „nocase” a kis- és nagybetűk érzékenységének szabályozására a fájl- és könyvtárnevekben; windows_name a Windows rendszerre nem érvényes karaktereket tartalmazó fájlnevek létrehozásának tiltására; hide_dot_files a ponttal kezdődő fájlok rejtett fájlcímkéjének hozzárendelésének szabályozásához.
    • A Squashfs fájlrendszer egy „threads=” beillesztési opciót valósít meg, amely lehetővé teszi a szálak számának meghatározását a kicsomagolási műveletek párhuzamosításához. A Squashfs emellett bevezette a csatlakoztatott fájlrendszerek felhasználói azonosítóinak leképezésének lehetőségét is, amellyel egy adott felhasználó fájljait egy felcsatolt idegen partíción egy másik felhasználóval egyeztetik a jelenlegi rendszeren.
    • A POSIX hozzáférés-vezérlési listák (POSIX ACL-ek) megvalósítása átdolgozásra került. Az új megvalósítás megszünteti az architekturális problémákat, leegyszerűsíti a kódbázis karbantartását, és biztonságosabb adattípusokat vezet be.
    • Az fscrypt alrendszer, amelyet a fájlok és könyvtárak transzparens titkosítására használnak, kiegészítette az SM4 titkosítási algoritmus támogatását (GB/T 32907-2016 kínai szabvány).
    • Lehetőség van a kernel felépítésére NFSv2 támogatás nélkül (a jövőben azt tervezik, hogy teljesen leállítják az NFSv2 támogatását).
    • Módosult az NVMe eszközök hozzáférési jogainak ellenőrzésének szervezete. Lehetőséget biztosít egy NVMe-eszköz olvasására és írására, ha az írási folyamat hozzáfér az eszköz dedikált fájljához (korábban a folyamatnak rendelkeznie kellett a CAP_SYS_ADMIN engedéllyel).
    • Eltávolította a CD/DVD-csomag illesztőprogramját, amely 2016-ban elavult.
  • Virtualizáció és biztonság
    • A Retbleed sérülékenység elleni védelem új módszerét implementálták az Intel és az AMD CPU-kban, a hívásmélység-követéssel, amely nem lassítja annyira a munkát, mint a Retbleed elleni korábbi védelem. Az új mód engedélyezéséhez a rendszermag „retbleed=stuff” parancssori paramétere javasolt.
    • Hozzáadott egy hibrid FineIBT utasításfolyam-védelmi mechanizmust, amely egyesíti az Intel IBT (Indirekt Branch Tracking) hardverutasítások és a kCFI (kernel Control Flow Integrity) szoftvervédelem használatát, hogy blokkolja a vezérlőfolyamat-sértéseket, amelyek a memóriában tárolt mutatókat módosító exploitok használatából erednek. funkciókat. A FineIBT csak a függvény legelején elhelyezett ENDBR utasításra való ugrás esetén engedélyezi a közvetett ugrással történő végrehajtást. Ezenkívül a kCFI-mechanizmussal analóg módon a hash-eket ezután ellenőrizzük, hogy garantálják a mutatók megváltoztathatatlanságát.
    • Korlátozások hozzáadva a támadások blokkolásához, amelyek manipulálják az "hoppá" állapotok generálását, amelyek után a problémás feladatok befejeződnek, és az állapot visszaáll a rendszer leállítása nélkül. Nagyon sok "hoppá" állapot hívása esetén referenciaszámláló túlcsordulás lép fel (refcount), ami lehetővé teszi a NULL mutatóhivatkozások által okozott sebezhetőségek kihasználását. Az ilyen támadások elleni védelem érdekében a rendszermagban korlátot adtunk az „oops” triggerek maximális számához, amelynek túllépése után a kernel átmenetet kezdeményez „pánik” állapotba, majd újraindítás következik, ami nem teszi lehetővé a az újraszámlálás túlcsordulásához szükséges iterációk száma. Alapértelmezés szerint a korlát 10 ezer „hoppá”, de kívánság szerint az oops_limit paraméteren keresztül módosítható.
    • A LEGACY_TIOCSTI és a sysctl legacy_tiocsti konfigurációs paraméter hozzáadva az ioctl TIOCSTI használatával letiltható adatok terminálba való behelyezésére, mivel ez a funkció tetszőleges karakterek helyettesítésére használható a terminál beviteli pufferében, és szimulálja a felhasználói bevitelt.
    • Egy új típusú belső struktúra, az encoded_page javasolt, amelyben a mutató alsó bitjei további információk tárolására szolgálnak, amelyek a mutató véletlen dereferenciája elleni védelemre szolgálnak (ha a hivatkozás megszüntetésére valóban szükség van, először ezeket a további biteket kell törölni) .
    • Az ARM64 platformon a rendszerindítási szakaszban engedélyezhető vagy letiltható a Shadow Stack mechanizmus szoftveres megvalósítása, amely a verem puffertúlcsordulása esetén védi a függvényből a visszatérési címet. a védelem lényege, hogy a visszaküldési címet egy külön „árnyék” verembe mentjük, miután a vezérlés átkerült a függvényhez, és a függvényből való kilépés előtt visszakeresi a megadott címet). A Shadow Stack hardveres és szoftveres megvalósításának támogatása egy kernel-összeállításban lehetővé teszi egy kernel használatát különböző ARM-rendszereken, függetlenül attól, hogy azok támogatják-e a mutató-hitelesítési utasításokat. A szoftveres implementáció beillesztése a kódban a szükséges utasítások betöltés közbeni helyettesítésével történik.
    • Támogatás hozzáadva az aszinkron kilépési értesítési mechanizmus használatához az Intel processzorokon, amely lehetővé teszi az SGX enklávékban végrehajtott kód elleni egylépéses támadások észlelését.
    • A javasolt műveletsor lehetővé teszi a hypervisor számára, hogy támogassa az Intel TDX (Trusted Domain Extensions) vendégrendszerekből érkező kéréseket.
    • A rendszermag RANDOM_TRUST_BOOTLOADER és RANDOM_TRUST_CPU összeállítási beállításait eltávolítottuk, a megfelelő random.trust_bootloader és random.trust_cpu parancssori beállítások javára.
    • A Landlock mechanizmus, amely lehetővé teszi a folyamatok egy csoportjának a külső környezettel való interakciójának korlátozását, kiegészítette a LANDLOCK_ACCESS_FS_TRUNCATE jelzővel, amely lehetővé teszi a fájlcsonkítási műveletek végrehajtásának vezérlését.
  • Hálózati alrendszer
    • Az IPv6-hoz hozzáadták a PLB (Protective Load Balancing) támogatását, amely a hálózati kapcsolatok közötti terheléselosztó mechanizmus, amely az adatközponti kapcsolókon lévő túlterhelési pontok csökkentését célozza. Az IPv6 Flow Label megváltoztatásával a PLB véletlenszerűen változtatja a csomagútvonalakat, hogy egyensúlyba hozza a kapcsolóportok terhelését. A csomagok újrarendezésének csökkentése érdekében ezt a műveletet tétlenségi időszakok után hajtja végre, amikor csak lehetséges. A PLB használata a Google adatközpontjaiban átlagosan 60%-kal csökkentette a kapcsolóportok terhelési kiegyensúlyozatlanságát, 33%-kal csökkentette a csomagvesztést és 20%-kal csökkentette a várakozási időt.
    • Illesztőprogram hozzáadva a Wi-Fi 7-et (802.11be) támogató MediaTek eszközökhöz.
    • Hozzáadott támogatás a 800 gigabites kapcsolatokhoz.
    • Hozzáadtuk a hálózati interfészek menet közbeni átnevezésének lehetőségét, a munka leállítása nélkül.
    • A SYN-áradásról szóló naplóüzenetekben megemlítésre került az IP-cím, amelyre a csomag érkezett.
    • Az UDP esetében lehetőség van külön hash táblák használatára a különböző hálózati névterekhez.
    • A hálózati hidak esetében a MAB (MAC Authentication Bypass) hitelesítési módszer támogatása megtörtént.
    • A CAN protokoll (CAN_RAW) esetében a SO_MARK socket mód támogatása megvalósult az fwmark alapú forgalmi szűrők csatlakoztatásához.
    • Az ipset új bitmaszk paramétert valósít meg, amely lehetővé teszi az IP-cím tetszőleges bitjei alapján maszk beállítását (például "ipset create set1 hash:ip bitmask 255.128.255.0").
    • Támogatás hozzáadva az nf_tables-hoz alagútba helyezett csomagokon belüli belső fejlécek feldolgozásához.
  • Оборудование
    • Az „accel” alrendszer a számítási gyorsítók keretrendszerének megvalósításával egészült ki, amely akár egyedi ASIC-ek formájában, akár IP blokkok formájában az SoC-n és GPU-n belül szállítható. Ezek a gyorsítók elsősorban a gépi tanulási problémák megoldásának felgyorsítását célozzák.
    • Az amdgpu illesztőprogram támogatja a GC, PSP, SMU és NBIO IP összetevőket. Az ARM64 rendszerek esetében a DCN (Display Core Next) támogatása megvalósul. A védett képernyőkimenet megvalósítása a DCN10 használatáról átkerült a DCN21-re, és mostantól több képernyő csatlakoztatásakor is használható.
    • Az i915 (Intel) illesztőprogram stabilan támogatja a diszkrét Intel Arc (DG2/Alchemist) videokártyákat.
    • A Nouveau meghajtó támogatja az Ampere architektúrán alapuló NVIDIA GA102 (RTX 30) GPU-kat. Az nva3 (GT215) kártyákhoz hozzáadták a háttérvilágítás vezérlésének lehetőségét.
    • Támogatás hozzáadva a Realtek 8852BE, Realtek 8821CU, 8822BU, 8822CU, 8723DU (USB) és MediaTek MT7996 chipeken alapuló vezeték nélküli adapterekhez, Broadcom BCM4377/4378/4387 Bluetooth interfészekhez, valamint Ethernet vezérlőkhöz Motorcomm yt8521 TegraXNUMX, ytXNUMX
    • Hozzáadott ASoC (ALSA System on Chip) támogatás a HP Stream 8, Advantech MICA-071, Dell SKU 0C11, Intel ALC5682I-VD, Xiaomi Redmi Book Pro 14 2022, i.MX93, Armada 38x, RK3588 hangchipekhez. Támogatás hozzáadva a Focusrite Saffire Pro 40 audio interfészhez Realtek RT1318 audiokodek hozzáadva.
    • Hozzáadott támogatás a Sony okostelefonokhoz és táblagépekhez (Xperia 10 IV, 5 IV, X and 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.
    • 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), SM670dragon670 (SM8976dragon652) támogatása hozzáadva kártyák, SDM8956 (Snapdragon 650), MSM3326 (Snapdragon 351), MSM310 (Snapdragon 8), RKXNUMX Odroid-Go/rgXNUMX, Zyxel NSAXNUMXS, InnoComm i.MXXNUMXMM, Odroid Go Ultra.

Ezzel egyidejűleg a Latin-Amerikai Szabad Szoftver Alapítvány létrehozta a teljesen ingyenes kernel 6.2 - Linux-libre 6.2-gnu változatát, amely megtisztította a firmware elemeitől és a saját komponenseket vagy kódrészleteket tartalmazó illesztőprogramoktól, amelyek hatókörét korlátozza a gyártó. Az új kiadás megtisztítja az új foltokat a nouveau driverben. A blob betöltés le van tiltva az mt7622, ​​mt7996 wifi és bcm4377 bluetooth illesztőprogramokban. A blobnevek megtisztítása a dts-fájlokban az Aarch64 architektúrához. Frissített blob-tisztító kód különböző illesztőprogramokban és alrendszerekben. Leállította az s5k4ecgx illesztőprogram tisztítását, mivel eltávolították a kernelből.

Forrás: opennet.ru

Hozzászólás