Linux 6.1 kernel kiadás

Két hónapos fejlesztés után Linus Torvalds bemutatta a Linux kernel 6.1 kiadását. A legfigyelemreméltóbb változások: a Rust nyelvű illesztőprogramok és modulok fejlesztésének támogatása, a használt memórialapok meghatározására szolgáló mechanizmus korszerűsítése, speciális memóriakezelő a BPF-programokhoz, a memóriaproblémák diagnosztizálására szolgáló rendszer KMSAN, a KCFI (Kernelk Control). -Flow Integrity) védelmi mechanizmus, a Maple szerkezetfa bevezetése.

Az új verzió 15115 2139 javítást tartalmaz 51 2 fejlesztőtől, a patch mérete 6.0 MB, ami körülbelül 5.19-szer kisebb, mint a 13165 és 716247 kernelből származó javítások mérete. A változtatások 304560 45 fájlt érintettek, 6.1 14 kódsort adtak hozzá, és 14 3 sort töröltek. A 3-ben bevezetett változtatások körülbelül XNUMX%-a az eszközillesztőkkel kapcsolatos, a változtatások hozzávetőleg 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.1-as kernelben:

  • Memória- és rendszerszolgáltatások
    • Hozzáadtuk a Rust második nyelvként való használatát az illesztőprogramok és a kernelmodulok fejlesztéséhez. A Rust támogatásának fő oka az, hogy megkönnyítse a biztonságos és jó minőségű illesztőprogramok írását azáltal, hogy csökkenti a hibák előfordulásának valószínűségét a memóriával való munka során. 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. A kernel eddig a javítások minimális, lecsupaszított változatát fogadta el, amely 40-ről 13 ezer sornyi kódra csökkent, és csak a szükséges minimumot biztosítja, ami elegendő egy egyszerű, Rust nyelven írt kernelmodul felépítéséhez. A jövőben a tervek szerint fokozatosan bővítik a meglévő funkcionalitást, más változtatásokat átvetve a Rust-for-Linux ágból. Ezzel párhuzamosan projekteket fejlesztenek ki a javasolt infrastruktúra felhasználásával az NVMe meghajtók, a 9p hálózati protokoll és az Apple M1 GPU Rust nyelvű illesztőprogramjainak fejlesztésére.
    • Az EFI-vel rendelkező AArch64, RISC-V és LoongArch architektúrákon alapuló rendszerek esetében megvalósul a tömörített kernelképek közvetlen betöltésének képessége. Hozzáadott kezelők a kernelképek betöltéséhez, futtatásához és eltávolításához, közvetlenül az EFI zbootból meghívva. Az EFI protokoll-adatbázisból protokollok telepítésére és törlésére szolgáló kezelők is hozzáadásra kerültek. Korábban a kicsomagolást külön bootloader végezte, most azonban már magában a kernelben lévő kezelő is megteheti – a kernelkép EFI-alkalmazásként jön létre.
    • A kompozíció tartalmazza a javítások egy részét egy többszintű memóriakezelési modell megvalósításával, amely lehetővé teszi a különböző teljesítményjellemzőkkel rendelkező memóriabankok elkülönítését. Például a leggyakrabban használt oldalak a leggyorsabb memóriában, míg a legritkábban használt oldalak a viszonylag lassú memóriában tárolhatók. A 6.1-es kernel bevezet egy mechanizmust annak meghatározására, hogy az erősen használt oldalak hol helyezkednek el a lassú memóriában, így gyors memóriává alakíthatók, valamint bemutatja a memóriaszintek és azok relatív teljesítményének általános fogalmát.
    • Tartalmazza az MGLRU (Multi-Generational LRU) mechanizmust, amely felváltja a régi, két soron alapuló LRU (Least Recently Used) megvalósítást egy többlépcsős struktúrával, amely jobban meghatározza, hogy mely memórialapok vannak ténylegesen használatban, és melyeket lehet kinyomni. a cserepartíciót.
    • Az Oracle mérnökei által javasolt „juharfa” adatstruktúra támogatása, amely a „vörös-fekete fa” struktúra hatékonyabb helyettesítésére szolgál. A Maple tree a B-tree egyik változata, amely támogatja a tartományindexelést, és a modern processzorok gyorsítótárának hatékony kihasználására készült. Néhány memóriakezelési alrendszer már átkerült a juharfába, ami pozitívan befolyásolta a teljesítményüket. A jövőben a juharfa felhasználható tartományzár megvalósítására.
    • A „pusztító” BPF-programok létrehozásának képessége, amelyet kifejezetten a crash_kexec() híváson keresztül történő vészleállítás kezdeményezésére terveztek, hozzáadták a BPF alrendszerhez. Az ilyen BPF programokra szükség lehet hibakeresési célokra, hogy egy bizonyos időpontban összeomlási kiíratást hozzon létre. A destruktív műveletek eléréséhez BPF-program betöltésekor meg kell adnia a BPF_F_DESTRUCTIVE jelzőt, aktiválnia kell a sysctl kernel.destructive_bpf_enabled fájlt, és rendelkeznie kell CAP_SYS_BOOT jogokkal.
    • A BPF programok esetében lehetőség van a cgroup elemek felsorolására, valamint egy adott szál vagy feladat erőforrásainak (fájlok, vma, folyamatok stb.) felsorolására. Új térképtípus került bevezetésre a felhasználói csengetési pufferek létrehozásához.
    • Speciális hívás a memóriafoglaláshoz a BPF-programokban (memóriafoglaló), amely biztonságosabb memóriafoglalást biztosít a BPF-környezetben, mint a szabványos kmalloc().
    • A változtatások első része integrálásra került, lehetővé téve a HID (Human Interface Device) interfésszel rendelkező beviteli eszközök illesztőprogramjainak létrehozását, BPF programok formájában megvalósítva.
    • A kernel teljesen eltávolította a kódot, hogy támogassa az a.out futtatható fájlformátumot, amely az 5.1-es kiadásban elavult volt, és az 5.18-as és 5.19-es verzió óta le van tiltva a főbb architektúráknál. Az a.out formátum már régóta elavult Linux rendszereken, és az a.out fájlok generálását a modern eszközök nem támogatják az alapértelmezett Linux konfigurációkban. Az a.out fájlok betöltője teljes egészében a felhasználói térben megvalósítható.
    • A Loongson 3 5000 processzorokban használt LoongArch utasításkészlet-architektúrán alapuló és az új RISC ISA-t megvalósító rendszerek esetében, hasonlóan a MIPS-hez és a RISC-V-hez, a teljesítménymérési események (perf események), a kexec, a kdump és a BPF JIT fordítások támogatása megvalósul. .
    • Az io_uring aszinkron I/O interfész egy új módot kínál, az IORING_SETUP_DEFER_TASKRUN, amely lehetővé teszi a csengetési pufferrel kapcsolatos munka ideiglenes elhalasztását az alkalmazáskérésig, amely felhasználható kötegelt munkavégzésre és az elővásárlási problémák miatti késleltetés elkerülésére. rossz idő.
    • A felhasználói térben lévő folyamatok lehetőséget kapnak arra, hogy a normál memórialapok tartományának konverzióját kezdeményezzék nagy memórialapok halmazává (Transparent Huge-Pages).
    • A /dev/userfaultfd eszköz hozzáadott megvalósítása, amely lehetővé teszi a userfaultfd() rendszerhívás funkcióinak elérését az FS hozzáférési jogaival. A userfaultfd funkció lehetővé teszi kezelők létrehozását a felhasználói térben lévő le nem osztott memóriaoldalak (oldalhibák) eléréséhez.
    • A GNU Make segédprogram verziójával szemben támasztott követelmények megemelkedtek – a kernel felépítéséhez már legalább a 3.82-es verzió szükséges.
  • Lemez alrendszer, I/O és fájlrendszerek
    • Jelentős teljesítményoptimalizálás történt a Btrfs fájlrendszeren, többek között a FIEMAP ioctl hívás teljesítménye is nagyságrendekkel nőtt. Támogatás hozzáadva az aszinkron pufferelt írásokhoz az io_uring függvényt használó alkalmazásokhoz. Az fs-verity által védett fájlok támogatása hozzáadva a „küldés” művelethez.
    • Az ext4 fájlrendszer teljesítményoptimalizálást adott a naplókarbantartáshoz és a csak olvasható működéshez.
    • Az EROFS (Enhanced Read-Only File System) fájlrendszer, amelyet csak olvasható módban elérhető partíciókon való használatra terveztek, lehetővé teszi a különböző fájlrendszerekben duplikált adatok megosztását.
    • A statx() rendszerhívás hozzáadásra került, hogy információt jelenítsen meg arról, hogy a közvetlen I/O alkalmazható-e egy fájlra.
    • A FUSE (Fájlrendszerek a felhasználói térben) alrendszerhez hozzáadták az O_TMPFILE jelzővel ellátott ideiglenes fájlok létrehozásának támogatását.
  • Virtualizáció és biztonság
    • A CFI (Control Flow Integrity) védelmi mechanizmus megvalósítása le lett cserélve, és egy függvény minden közvetett hívása előtt ellenőrzéseket ad, hogy felderítsék a nem meghatározott viselkedés bizonyos formáit, amelyek potenciálisan a normál végrehajtási sorrend (vezérlési folyamat) megsértéséhez vezethetnek. olyan exploitok használatának eredménye, amelyek a memóriában tárolt függvényekre mutató mutatókat változtatnak. Az LLVM projekt CFI szabványos megvalósítását felváltotta egy szintén a Clang használatán alapuló opció, de kifejezetten az alacsony szintű alrendszerek és operációs rendszermagok védelmére lett kialakítva. Az LLVM-ben a Clang 16 kiadásban egy új implementációt kínálnak, amely a "-fsanitize=kcfi" opcióval lesz engedélyezve. A legfontosabb különbség az új megvalósítással szemben az, hogy nincs kötve a link-time optimalizáláshoz (LTO), és nem eredményezi a függvénymutatók hivatkozásokkal való helyettesítését az ugrástáblázatban.
    • Az LSM modulok (Linux Security Module) esetében lehetőség van olyan kezelők létrehozására, amelyek elfogják a műveleteket névterek létrehozása céljából.
    • Eszközök állnak rendelkezésre a PKCS#7 digitális aláírások ellenőrzéséhez a BPF programokban.
    • A nem blokkoló módban való megnyitás képessége (O_NONBLOCK), amelyet az 5.6-os kernelben véletlenül eltávolítottak, visszakerült a /dev/random mappába.
    • Az x86-os architektúrájú rendszereken figyelmeztetést adtunk a memórialapoknak a végrehajtást és az írást egyidejűleg lehetővé tevő kernel-alrendszerek általi leképezése esetén. A jövőben mérlegelik az ilyen memórialeképezés teljes betiltásának lehetőségét.
    • Hozzáadott KMSAN (Kernel Memory Sanitizer) hibakereső mechanizmus, amely észleli az inicializálatlan memóriahasználatot a kernelben, valamint a felhasználói terület és az eszközök közötti inicializálatlan memóriaszivárgást.
    • A getrandom hívásban használt kripto-biztonságos CRNG pszeudo-véletlenszám-generátor fejlesztése történt. A változtatásokat Jason A. Donenfeld, a VPN WireGuard szerzője készítette elő, és célja a pszeudo-véletlen egész számok kinyerése biztonságának javítása.
  • Hálózati alrendszer
    • A TCP verem lehetővé teszi (alapértelmezés szerint letiltva) a socket hash táblák külön használatát minden névtérhez, ami javítja a teljesítményt a nagyszámú névteret tartalmazó rendszereken.
    • A régi DECnet protokoll támogatása érdekében eltávolítottuk a kódot. A felhasználói terület API-csonkjai megmaradnak, hogy lehetővé tegyék a DECnetet használó alkalmazások fordítását, de ezek az alkalmazások nem tudnak csatlakozni a hálózathoz.
    • A netlink protokoll dokumentálva van.
  • Оборудование
    • Az amdgpu illesztőprogram támogatja a DSC (Display Stream Compression) továbbítást a veszteségmentes adattömörítés érdekében, amikor nagyon nagy felbontást támogató képernyőkkel cserél információt. Továbbra is folyik a munka az AMD RDNA3 (RX 7000) és a CDNA (Instinct) platformok támogatásán. Hozzáadott támogatás a DCN 3.2, SMU 13.x, NBIO 7.7, GC 11.x, PSP 13.x, SDMA 6.x és GMC 11.x IP-komponensekhez. Az amdkfd illesztőprogram (a különálló AMD GPU-khoz, például a Polarishoz) támogatja a GFX 11.0.3-at.
    • Az i915 (Intel) illesztőprogram támogatja a Meteor Lake GPU-t. A Meteor Lake és az újabb GPU-k támogatják a DP 2.0 (DisplayPort) interfészt. Hozzáadott azonosítók az Alder Lake S mikroarchitektúrán alapuló videokártyákhoz.
    • Hozzáadott támogatás az Apple Silicon, Intel SkyLake és Intel KabyLake processzorokban megvalósított audio alrendszerekhez. A CS35L41 HDA audio-illesztőprogram támogatja az alvó üzemmódot. Hozzáadott ASoC (ALSA System on Chip) támogatás az Apple Silicon, AMD Rembrant DSP-k, AMD Pink Sardine ACP 6.2, Everest ES8326, Intel Sky Lake és Kaby Lake, Mediatek MT8186, NXP i.MX8ULP DSP-k, Qualcomm SC8280XP, Qualcomm SC8250X8450, SM4392 és Texas Instruments SRCXNUMX
    • Támogatás hozzáadva a Samsung LTL101AL01, B120XAN01.0, R140NWF5 RH, Densitron DMT028VGHMCMI-1A TFT, AUO B133UAN02.1, M133NW4J-R3, IVO M120NW1J-R116, Innolux N01.6ACA-116BO21E B116ACA-EA2H116H1X, 0800 N9, INX NXNUMXBCA- EAXNUMX , INX NXNUMXBCN-EAXNUMX, Multi-Inno technológia MIXNUMXFT-XNUMX.
    • Hozzáadott támogatás a Baikal-T1 SoC-ben használt AHCI SATA vezérlőkhöz.
    • Támogatás hozzáadva a MediaTek MT7921, Intel Magnetor (CNVi, integrált kapcsolat), Realtek RTL8852C, RTW8852AE és RTL8761BUV (Edimax BT-8500) Bluetooth chipekhez.
    • A Qualcomm vezeték nélküli modulok ath11k illesztőprogramja a 160 MHz-es tartományban támogatja a spektrális pásztázást, többszálú NAPI-t valósított meg, és továbbfejlesztette a Qualcomm WCN6750 Wi-Fi chipek támogatását.
    • Illesztőprogramok hozzáadva a PinePhone billentyűzethez, InterTouch érintőpadokhoz (ThinkPad P1 G3), X-Box adaptív vezérlőhöz, PhoenixRC repülésvezérlőhöz, VRC-2 autóvezérlőhöz, DualSense Edge vezérlőhöz, IBM kezelőpulthoz, XBOX One Elite távirányítókhoz, táblagépekhez XP-PEN Deco Pro S és Intuos Pro Small (PTH-460).
    • Illesztőprogram hozzáadva az Aspeed HACE (Hash és Crypto Engine) kriptográfiai gyorsítókhoz.
    • Hozzáadott támogatás az integrált Thunderbolt/USB4 Intel Meteor Lake vezérlőkhöz.
    • Támogatás hozzáadva a Sony Xperia 1 IV, Samsung Galaxy E5, E7 és Grand Max, Pine64 Pinephone Pro okostelefonokhoz.
    • Hozzáadott támogatás az ARM SoC-hoz és kártyákhoz: AMD DaytonaX, Mediatek MT8186, Rockchips RK3399 és RK3566, TI AM62A, NXP i.MX8DXL, Renesas R-Car H3Ne-1.7G, Qualcomm IPQ8064-v2.0, IPQQ8062/8065, IPQQ8/8195 BL i.MX4MM OSM-S, MT4 (Acer Tomato), Radxa ROCK 1C+, NanoPi RXNUMXS Enterprise Edition, JetHome JetHub DXNUMXp. Frissített illesztőprogramok SoC Samsung, Mediatek, Renesas, Tegra, Qualcomm, Broadcom és NXP számára.

Ezzel egy időben a Latin American Free Software Foundation létrehozta a teljesen ingyenes kernel 6.1 - Linux-libre 6.1-gnu - verzióját, amely megtisztította a firmware elemeitől és a nem szabad komponenseket vagy kódrészleteket tartalmazó illesztőprogramoktól, amelyek hatóköre korlátozott. a gyártó által. Az új kiadás megtisztítja az új rtw8852b illesztőprogramot és a DTS fájlokat a különböző Qualcomm és MediaTek SoC-okhoz, amelyek AArch64 architektúrára épülnek. Frissített blobtisztító kód az amdgpu, i915, brcmfmac, r8188eu, rtw8852c, Intel ACPI illesztőprogramokban és alrendszerekben. Az elavult tm6000 TV-kártyák, cpia2 v4l, sp8870, av7110 illesztőprogramok tisztítása javítva.

Forrás: opennet.ru

Hozzászólás