Két hónapos fejlesztés után Linus Torvalds bemutatta a Linux 6.10 kernel kiadását. A legszembetűnőbb változások között van: ntsync illesztőprogram Windows NT szinkronizálási primitívekkel, DRM Panic komponensek a „kék képernyő” analóg megvalósításához, az Alpha CPU-k régi verzióinak támogatásának leállítása, a FUSE alapú fájlrendszerek integritásának ellenőrzésére szolgáló lehetőség, az ioctl-hoz való hozzáférés korlátozása a Landlock mechanizmuson keresztül, a memóriaallokációs műveletek profilozására szolgáló alrendszer, az mseal() rendszerhívás, titkosított adatcserének lehetősége TPM eszközökkel, a dm-crypt-ban a nagy prioritású munkafolyamatok támogatása, valamint a panthor illesztőprogram tizedik generációs Mali GPU-hoz.
Az új verzióban 14564 javítást fogadtak el, 1989 fejlesztőtől, a javítócsomag mérete 41 MB (a változások 12509 fájlt érintettek, 547663 kódsort adtak hozzá, 312464 kódsort töröltek). Az előző kiadásban 15680 javítást fogadtak el 2106 fejlesztőtől, a javítócsomag mérete 54 MB volt. A 6.10-es verzióban bemutatott változások körülbelül 41%-a az eszközillesztőkkel kapcsolatos, körülbelül 15%-a a hardverarchitektúrákhoz specifikus kód frissítésével, 13%-a a hálózati veremhez, 5%-a a fájlrendszerekhez és 4%-a a kernel belső alrendszereihez kapcsolódik.
A 6.10-es kernel fő újításai:
- Lemezszubszisztéma, bemenet/kipontozás és fájlrendszerek
- Új fcntl művelet, az F_DUPFD_QUERY került hozzáadásra, amellyel a folyamat meghatározhatja, hogy két különböző fájlleíró ugyanarra a fájlra hivatkozik-e. A kcmp() rendszerhívással ellentétben az F_DUPFD_QUERY nem fed fel felesleges információt, és működik olyan rendszereken is, ahol a kcmp ki van kapcsolva.
- A felhasználói térben megvalósított fájlrendszerekhez használt FUSE alrendszerben megvalósították az fs-verity mechanizmus alkalmazásának lehetőségét a fájlok integritásának és hitelességének ellenőrzésére.
- A blokkeszközök titkosítására használt dm-crypt modulba hozzáadták a "high_priority" opciót, amely lehetővé teszi a nagy prioritású munkafolyamatok alkalmazását a teljesítmény növelésére erős gépeken. szerverekenAlapértelmezés szerint ez a mód ki van kapcsolva, mivel a titkosításon kívüli feladatok végrehajtása során, mint például a hangfeldolgozás, késleltetésekhez vezethet átlagos PC-ken.
- Bevezetésre került a netlink alapú protokoll az NFS-szerver kezelésére a kernelben. A felhasználói térben e protokoll alapján elkészült az nfsdctl eszköz. Az NFS v2 csatolásának támogatása alapértelmezés szerint letiltva maradt (az mount.nfs eszköznél az NFS v2 támogatását 2021-ben megszüntették).
- Az XFS fájlrendszerben folytatódik a fsck eszköz online üzemmódban, azaz a fájlrendszer leválasztása nélkül végzett ellenőrzés és hibajavítás lehetőségének megvalósítása. Hozzáadva az XFS_IOC_EXCHANGE_RANGE ioctl a byte-sávok atomikus cseréjéhez két fájl között.
- A Btrfs rendszerében megvalósításra került a nem rögzített extents térképek lecsökkentésének támogatása (shrinker), ami hasznos lehet a memóriafogyasztás csökkentésére memóriakorlátozott környezetben. Az adatok tömörítéséhez szükséges kód és a put_file_data() függvény áttértek a memória oldalak (page folios) használatára. Átdolgozásra került az extents zármechanizmusa a háttérírási műveletek végrehajtásakor.
- Az Ext4 fájlrendszerhez hozzáadva az FS_IOC_GETFSSYSFSPATH ioctl támogatása a megadott csatolt fájlrendszer helyének meghatározásához a /sys/fs hierarchiájában.
- Az OPENPROMFS, ISOFS, QNX6, NILFS2, MINIX és FREEVXFS fájlrendszerek áttértek az új partíciócsatolási API használatára.
- Az EROFS (Extendable Read-Only File System) fájlrendszer, amelyet csak olvasható módban elérhető partíciókon való használatra terveztek, támogatja a Zstandard tömörítési algoritmus használatát.
- A Bcachefs rendszerében előkészítették a fsck végrehajtását leválasztás nélkül (online ellenőrzés). Változtatások és javítások kerültek hozzáadásra a megbízhatóság növelése érdekében. Megvalósult a fájlrendszer formátumának frissítése és visszaállítása 'nochanges' módban, amely letiltja az írást, és a metaadatokat csak a memóriában tárolja.
- Az OverlayFS fájlrendszerhez hozzáadva a lehetőség ideiglenes fájlok létrehozására az O_TMPFILE opcióval.
- Megszűnt a blokkeszközök áteresztőképesség korlátozásának "CONFIG_BLK_DEV_THROTTLING_LOW" mechanizmusának támogatása, amely 2017 óta kísérleti státuszban van, nem terjedt el a gyakorlatban, és nehezíti a blokkeszközök alrendszerének karbantartását.
- Memória és rendszerszolgáltatások
- Hozzáadva, de le van tiltva a build során, az ntsync illesztőprogram, amely megvalósítja a szimbolikus eszközt /dev/ntsync és a Windows NT kernelben használt szinkronizáló primitívek készletét. Az ilyen primitívek kernel szintű megvalósítása jelentősen fokozza a Wine segítségével futtatott Windows-játékok teljesítményét. A teljesítménynövekedés a felhasználói térben való RPC használatával kapcsolatos költségek megszüntetéséből származik. A külön kernel illesztőprogram létrehozása a Linux rendszeren a NT szinkronizáló API helyes megvalósításának problémásságával magyarázható a meglévő primitívek felett.
- Hozzáadva egy alrendszer a memóriafoglalási műveletek profilozására a Linux kernelben, amely lehetővé teszi a memória szivárgások észlelését a kernelben és megkönnyíti a memóriafogyasztás optimalizálását. Az alrendszer alacsony költségeket biztosít, így használható nemcsak a kernel hibakereső buildjeiben, hanem a működő rendszereken is.
- Hozzáadva a hibahelyreállító kezelő elsődleges implementációja a kernelben - DRM Panic, amely a DRM (Direct Rendering Manager) alrendszert használja a klasszikus kék képernyős jelentés megjelenítésére. A következő kiadásban tervezzük a lehetőséget, hogy logót és QR-kódot jelenítsünk meg a képernyőn, ha hiba áll be.
- Fokozatosan folytatódik a módosítások átvitele a Rust-for-Linux ágból, kapcsolódva ahhoz, hogy a Rust nyelvet második nyelvként használják illesztőprogramok és modulok fejlesztésére (a Rust támogatás alapértelmezés szerint nem aktív, és nem vezet a Rust kötelező build függőségek közé sorolásához a kernel számára). Átállás történt a Rust 1.78 verzióra, amely lehetővé tette a standard alloc könyvtár használatát a saját elágazás helyett. Hozzáadtunk absztrakciókat az idő kezelésére a kernelben (wrap a ktime_t struktúra fölött). Hozzáadtuk a kernel komponensek Rust nyelven való használatának támogatását RISC-V architektúrával rendelkező rendszereken.
- A BPF-programokban megvalósult a várakozási sorok (wait queue) használatának lehetősége a kernelben. Hozzáadták a bpf_preempt_disable és bpf_preempt_enable függvényeket, amelyek lehetővé teszik a feladatütemező által meg nem szakítható kódblokkok létrehozását. Lehetőséget biztosítanak a BPF-programok számára, hogy hozzáférjenek a kernel kriptográfiai funkcióihoz (crypto). Megvalósították a JIT-kompiláció támogatását BPF-programok számára 32-bites processzorokkal rendelkező rendszereken ARCv2.
- A 32-bites ARM rendszerek számára megvalósították a kernel fordításának támogatását Clang fordítóval, bekapcsolt CFI (Control Flow Integrity) védelmi móddal, amely megakadályozza a normális végrehajtási rend megsértését (control flow) exploitok által, amelyek megváltoztatják a memóriában tárolt függvénymutatókat.
- Hozzáadták a közvetlen leképezés lehetőségét mmap() használatával a nyomkövető körgyűrűs pufferei számára, hogy azok tartalmát felhasználói térbe továbbíthassák másolás nélkül.
- Hozzáadták az "mseal" rendszerhívást, amely lehetővé teszi a folyamatok számára, hogy zároljanak bizonyos részeket a címük megváltoztatására. A gyakorlatban ezt az új rendszerhívást a Chrome böngészőben kívánják használni a sandbox izoláció fokozására.
- A x32 alarchitektúra számára, amely hibrid x86_64 ABI-t biztosít, lehetővé téve a 32-bites memória címzés használatát 64-bites rendszereken (a processzor 64-bites módban működik, de 32-bites mutatókat és aritmetikai műveleteket használ), hozzáadva támogatást kapott a Shadow Stack mechanizmusa, amely lehetővé teszi több exploit működésének blokkolását, az Intel processzorok hardveres képességeit kihasználva, a visszatérési cím védelmére a függvényből történő kipufogás esetén.
- ARM64 architektúrával rendelkező rendszerek esetén a userfaultfd() rendszerhívásban, amely lehetőséget ad nem allokált memóriaoldalak (page faults) hívási kezelőinek létrehozására a felhasználói térben, megvalósították az írásvédelmi területek és a memóriaoldal táblák elemeinek védelmével kapcsolatos képességeket.
- Eltávolították a 1995 óta kiadott Alpha 21164 (EV5) processzorok és korábbi szériák támogatásához szükséges kódot. A kód karbantartása ezen processzorok esetében bonyolulttá vált, mivel nem volt bennük lehetőség a memória byte szintű elérésére. Az Alpha volt az első architektúra, amelyre a Linux kernel portálva lett, amely eredetileg csak az x86 rendszerek számára volt elérhető.
- Virtualizáció és biztonság
- Hozzáadva a TPM (Trusted Platform Module) eszközökkel való titkosított adatcserét és tranzakciók integritásának ellenőrzését támogató funkció.
- A Landlock LSM modulba, amely lehetővé teszi a folyamatcsoportok külső környezettel való interakciójának korlátozását, felkerült a ioctl() híváskorlátozó szabályok alkalmazásának lehetősége.
- A init_mlocked_on_free indításkor beállítható opció javasolta, amely biztosítja, hogy a memória tartalmát, amely mlock() hívással van védve a lapozás ellen, nullára állítsák, ha azt feloldás nélkül szabadítják fel munlock() hívás nélkül. Ezen opció használata lehetővé teszi a titkosítási kulcsok memóriafelhalmozódásának megakadályozását, ha a velük dolgozó alkalmazás összeomlik.
- A crypto alrendszerben felgyorsult a lemezes titkosítási műveletek végrehajtása az AES-XTS algoritmus használatával x86_64 rendszerekben olyan Intel és AMD processzorokkal, amelyek támogatják a VAES, AVX2, VPCLMULQDQ, AVX10 vagy AVX512 kiterjesztéseket.
- Eltávolították a kernel kriptográfiai alrendszerének statisztikai gyűjtésére vonatkozó lehetőséget (CONFIG_CRYPTO_STATS). Ezt a lehetőséget a gyakorlatban nem használták, és jelentős teljesítménycsökkenést okozott, valamint érezhető plusz terhet jelentett a karbantartóknak.
- Hálózati alrendszer
- Jelentősen megnövelték a zero-copy módú adatküldési műveletek teljesítményét az io_uring alrendszer használatakor. Hozzáadva a lehetőség több ("bundle") puffer egyesítésére az adatküldési és -fogadási műveletekhez.
- Átírták a szemétgyűjtési kódot, amelyet Unix socketeken keresztül fájldeszkriptorok küldésénél alkalmaznak SCM_RIGHTS üzenetek használatával. A módosítás megoldja a ciklikus hivatkozás-ellenőrző számlálók felhalmozódásának problémáját.
- Hozzáadva a PFCP (Packet Forwarding Control Protocol) protokoll szűrők beállításának lehetősége, amelyet a 4G és 5G hálózatokban használnak.
- Hozzáadva a SO_PEEK_OFF hálózati socket opció támogatása, amely az Unix-socketekhez hasonlóan lehetővé teszi az adatokat tartalmazó sorban lévő adatok eltolásának meghatározását a recv rendszerhívás során, amikor a MSG_PEEK flaget használják (megjegyzi az olvasatlan adatokat, amelyek a következő recv híváskor újra előkerülnek).
- Az io_uring alrendszerhez hozzáadva az IORING_CQE_F_SOCK_NONEMPTY operáció támogatása, amely lehetővé teszi, hogy egy hálózati socket esetében megállapítsuk, hogy vannak-e várakozó csatlakozási kérelmek.
- Javasolt egy PoE (Power over Ethernet) technológia megvalósítása, amely az előzőleg elérhető PoDL (Power over Data Line) támogatási kódra épül, és kompatibilis a Microchip PD692x0 és TI TPS23881 PoE vezérlőkkel.
- A TCP, DCCP és MPTC protokollokhoz hozzáadva az rstreason mechanizmus támogatása, amely lehetővé teszi a RST-csomagok küldésének okának meghatározását (például NO_SOCKET).
- Hardver
- A panthor illesztőprogram bekerült a Mali GPU tizedik generációjához (G310, G510, G710), amely a CSF (Command Stream Frontend) technológiát alkalmazza, kiszorítva a firmware oldalára néhány illesztőprogram funkciót, csökkentve a CPU terhelését és új munkavégzési szervezési modellt kínálva a GPU-n. Az új illesztőprogram támogatásához szükséges változtatásokat a Mesa is elfogadta, és bekerültek a Gallium illesztőprogram panfrost részlegébe a Mali GPU számára.
- Az i915 illesztőprogramhoz hozzáadva az új Intel Arc (DG2/Alchemist) diszkrét grafikus kártyák PCI-azonosítói.
- Folytatódott a Xe drm-illesztőprogram (Direct Rendering Manager) fejlesztése, amely az Intel Xe architektúrára épül, és az Intel Arc család videokártyáiban és integrált grafikáiban használják, kezdve a Tiger Lake processzoroktól. Hozzáadva az Arrow Lake H CPU támogatás. Folytatva a Lunar Lake processzorok támogatásának megvalósítását. Kezdeti támogatás hozzáadva az SR-IOV (Single Root I/O Virtualization) mechanizmushoz.
- Az AMDGPU illesztőprogramhoz hozzáadva a SMU 14.0 (System Management Unit) támogatása. Lehetővé vált az új AMD GPU-k használata RISC-V architektúrájú rendszereken.
- Hozzáadva a Tegra Security Engine kriptográfiai műveletek gyorsító illesztőprogramja, amely az AES és különböző hash algoritmusok gyorsítására használható.
- Hozzáadva a következő kijelzőpanelek támogatása: LG SW43408, Innolux G121XCE-L01 LVDS, RK3326 GameForce Chi, Crystal Clear CMT430B19N00, POWERTIP PH128800T006-ZHC01, Startek KD050HDFIA020-C020A, Pixel 3a, Khadas TS050 V2, Raydium RM69380, BOE NT116WHM-N44, CMN N116BCA-EA1 és AUO B120XAN01.0.
- Hozzáadva a Lenovo Thinkbook 13x Gen 4, Lenovo Thinkbook 16P Gen 5, Lenovo Thinkbook 13X és ASUS Zenbook 2024 HN7306 laptopok hangrendszerének támogatása. Hozzáadva a Vocaster One és Vocaster Two külső hangkártyák támogatása. Telepítve lett a Nuvoton Technology NAU8325 erősítők vezérlője.
- A HID-Steam vezérlőn hozzáadva az IMU (Inertial Measurement Unit) támogatás, ami lehetővé teszi a Steam Deck játékkontrollerhez egy külön evdev csomópont használatát a giroszkóp és gyorsulásmérő adatok eléréséhez.
- Be lett kapcsolva a Snapdragon X Elite ARM SoC támogatása, amely saját 12-magos Qualcomm Oryon CPU-t és Qualcomm Adreno GPU-t használ. A chip laptopok és PC-k számára készült, és sok teljesítményteszten megelőzi az Apple M3 és Intel Core Ultra 155H chipeket.
- Hozzáadva ARM platformok, SoC-k és eszközök támogatása: PocketBook 614 Plus, Sony Xperia Z3, Xperia 1 V, Samsung Galaxy S5 Kína, Motorola Moto G, RK3326 GameForce Chi, Anbernic RG35XX (Plus/H/2024), Airoha EN7581, Radxa ROCK 3C, ArmSom Sige7, Tanix TX1, Toradex Colibri iMX8DX, Renesas RZ/V2H, Forlinx OK3588-C, Protonic MECSBC, Emcraft Systems NavQ+, NXP S32G3, Wolfvision pf5, Amlogic A4/A5, ASUS RT-AC3200, ASUS RT-AC5300, ASrock E3C256D4I, IBM system1 BMC, Meta Harma BMC(AST2600), ASRock X570D4U BMC, Au-Zone Maivin AI Vision Starter Kit.
- Hozzáadva a Milk-V Mars platformok támogatása, amelyek a RISC-V architektúrára épülő Starfive JH7110 SoC-t használnak.
Egy időben a latin-amerikai Szabad Szoftver Alapítvány kiadta a teljesen szabad 6.10-es Linux-libre kernelt, amely mentes minden nem szabad firmware-től és vezérlőtől, amelyek nem szabad összetevőket vagy olyan kódot tartalmaznak, amelynek használata a gyártó által korlátozott. A 6.10-es kiadásban frissítve lett a blobok tisztítási kódja az Intel i915, rtl8xxxu, qla2xxx és QCAI sahara vezérlőkben. A blobok nevei a dts fájlokban (devicetree) is ki lettek tisztítva az Aarch64 architektúrához. Az új fájlok, amelyeket az Adreno, Intel IPU3 és PRUEth vezérlőkben adtak hozzá, szintén blobmentessé váltak. Új vezérlők, mint a Panthor, Intel IPU6, PRUEth SR1, rtw8703b, tps23881, air_en8811h, Intel ISH HID és pcm6240 is tisztító fázison mentek keresztül. A Prism2.5/3 USB vezérlő tisztítását leállították, mivel azt eltávolították a kerneltől.
Forrás: opennet.ru
