Po dvoch mesiacoch vývoja predstavil Linus Torvalds uvoľnenie jadra Linux 6.10. Medzi najvýznamnejšie zmeny patrí: ovládač ntsync s primitívami synchronizácie Windows NT, komponenty DRM Panic na implementáciu analógu «modrej obrazovky smrti», zastavenie podpory starých CPU Alpha, možnosť verifikácie integrity v FS založenom na FUSE, obmedzenie prístupu k ioctl prostredníctvom mechanizmu Landlock, subsystém na profilovanie operácií alokácie pamäte, systémové volanie mseal(), možnosť šifrovaného prenosu dát s TPM zariadeniami, podpora vysoko priorítových pracovných frontov v dm-crypt, ovládač panthor pre desiaty generáciu GPU Mali.
Do novej verzie bolo zahrnutých 14564 opráv od 1989 vývojárov, veľkosť patchu je 41 MB (zmiany sa dotkli 12509 súborov, pridalo sa 547663 riadkov kódu, odstránilo 312464 riadkov). V predchádzajúcej verzii bolo 15680 opráv od 2106 vývojárov, veľkosť patchu bola 54 MB. Približne 41% všetkých zmien v 6.10 sa týka ovládačov zariadení, približne 15% zmien sa dotýka aktualizácie kódu špecifického pre hardvérové architektúry, 13% súvisí so sieťovým zásobníkom, 5% s súborovými systémami a 4% s vnútornými subsystémami jadra.
Hlavné novinky v jadre 6.10:
- Diskový subsystém, I/O a súborové systémy
- Bol pridaný nový fcntl-operácia F_DUPFD_QUERY, pomocou ktorej proces môže zistiť, že dva rôzne súborové deskriptoru odkazujú na ten istý súbor. Na rozdiel od podobných možností, poskytovaných systémovým volaním kcmp(), F_DUPFD_QUERY nevedie k odhaleniu zbytočných informácií a funguje na systémoch s vypnutým kcmp().
- V subsystéme FUSE, aplikovanom na realizáciu súborových systémov v priestore používateľa, bola implementovaná možnosť použitia mechanizmu fs-verity na kontrolu integrity a autentickosti súborov.
- Do modulu dm-crypt, používaného na šifrovanie blokových zariadení, bola pridaná možnosť „high_priority“, ktorá umožňuje aktivovať vysoko priorítové pracovné fronty na zvýšenie výkonu na výkonných. serveroch. Predvolene je režim vypnutý, pretože môže spôsobiť na bežných počítačoch zvýšenie latencií pri vykonávaní prác, ktoré nie sú spojené so šifrovaním, ako je spracovanie zvuku.
- Bol pridán protokol založený na netlink pre správu NFS servera v jadre. V užívateľskom priestore bola na základe tohto protokolu pripravená utilita nfsdctl. Podpora montovania NFS v2 je predvolene vypnutá (v utilite mount.nfs bola podpora NFS v2 zrušená už v roku 2021).
- V súborovom systéme XFS pokračuje práca na implementácii možnosti použitia utility fsck na kontrolu a opravu zistených problémov v online režime, bez odmontovania súborového systému. Bol pridaný ioctl XFS_IOC_EXCHANGE_RANGE na výmenu bajtových rozsahov medzi dvoma súbormi v atomickom režime.
- V Btrfs bola implementovaná podpora zmenšovania (shrinker) nezamknutých máp extenzív, čo môže byť užitočné na zníženie spotreby pamäte v podmienkach nedostatku pamäte v systéme. Kód na kompresiu dát a funkcia put_file_data() boli prevedené na použitie stránkových folíí (page folios). Bol prepracovaný mechanizmus zamykania extenzív pri vykonávaní operácií spätnej zápisu.
- Vo FS Ext4 bola pridaná podpora ioctl FS_IOC_GETFSSYSFSPATH na určenie umiestnenia zadaného pripojeného FS v hierarchii /sys/fs.
- Súborové systémy OPENPROMFS, ISOFS, QNX6, NILFS2, MINIX a FREEVXFS prešli na použitie nového API na montovanie oddielov.
- V súborovom systéme EROFS (Extendable Read-Only File System), určeného na použitie na oddieloch dostupných v režime iba na čítanie, bola pridaná podpora algoritmu kompresie Zstandard.
- V Bcachefs bola vykonaná príprava na vykonanie fsck bez odmontovania oddielu (online kontrola). Boli pridané zmeny a opravy na zvýšenie spoľahlivosti. Bol implementovaný spôsob aktualizácie a vrátenia formátu FS v režime „nochanges“, ktorý vypína zápis a uchováva metadata len v pamäti.
- Vo súborovom systéme OverlayFS bola pridaná podpora na vytvorenie dočasných súborov s použitím voľby O_TMPFILE.
- Podpora mechanizmu obmedzenia priepustnosti blokových zariadení „CONFIG_BLK_DEV_THROTTLING_LOW“ bola zrušená; od roku 2017 mal status experimentálneho, nevrhol sa do praxe a sťažoval údržbu subsystému blokových zariadení.
- Pamäť a systémové služby
- Pridaný, ale vypnutý pri zostavení, ovládač ntsync, implementujúci symbolické zariadenie /dev/ntsync a súbor primitív na synchronizáciu, ktoré sa používajú v jadre Windows NT. Implementácia takýchto primitív na úrovni jadra významne zvyšuje výkon hier na Windows spustených prostredníctvom Wine. Zlepšenie výkonu sa dosahuje vďaka zbaveniu sa nákladov spojených s použitím RPC v užívateľskom priestore. Vytvorenie samostatného ovládača pre Linuxové jadro je vysvetlené problémami s správnou implementáciou API synchronizácie NT nad existujúcimi primitívami v jadre.
- Pridaný subsystém na profilovanie operácií alokácie pamäte v jadre Linux, ktorý umožňuje odhaľovanie pamäťových únikov v jadre a zjednodušuje optimalizáciu spotreby pamäte. Subsystém zabezpečuje nízke náklady, čo umožňuje jeho použitie nielen v ladacích zostavách jadra, ale aj na pracovných systémoch.
- Pridaná počiatočná implementácia obsluhy havarijných situácií v jadre — DRM Panic, ktorá využíva subsystém DRM (Direct Rendering Manager) na zobrazenie názorného farebného reportu v štýle „modrého smrteľného hlasu“. V nasledujúcom vydaní sa plánuje pridať možnosť zobrazenia loga a QR kódu na obrazovke pri vzniku havarijného stavu.
- Pokračuje prenos zmien z vetvy Rust-for-Linux, týkajúcich sa použitia jazyka Rust ako druhého jazyka pre vývoj ovládačov a modulov jadra (podpora Rust nie je predvolene aktívna, a nevedie k zahrnutiu Rust medzi povinné závislosti pri zostavení jadra). Bol uskutočnený prechod na verziu Rust 1.78, ktorý umožnil prepnúť na používanie štandardnej knižnice alloc, namiesto vlastného vetvenia. Boli pridané abstrakcie na prácu s časom v jadre (obal nad štruktúrou ktime_t). Bola pridaná podpora použitia komponentov jadra v jazyku Rust na systémoch s architektúrou RISC-V.
- V BPF programách je implementovaná možnosť používania čakacích front (wait queue) v jadre. Pridané funkcie bpf_preempt_disable a bpf_preempt_enable umožňujú vytvárať sekcie kódu, ktoré nie sú prerušené plánovačom úloh. Poskytla sa možnosť prístupu BPF programov k kryptografickým funkciám jadra (crypto). Implementovala sa podpora JIT kompilácie BPF programov na systémoch so 32-bitovými procesormi ARCv2.
- Pre 32-bitové systémy ARM bola implementovaná podpora pre zostavovanie jadra kompilátorom Clang s povoleným režimom ochrany CFI (Control Flow Integrity), ktorý blokuje porušenia normálnych poradia vykonávania (control flow) v dôsledku použitia exploitov, ktoré menia uložené v pamäti ukazovatele na funkcie.
- Pridaná možnosť priameho odrazu cez mmap() kruhových bufferov trasovania na prenos ich obsahu do užívateľského priestoru bez ďalšieho kopírovania.
- Pridaný systémový volanie "mseal", ktorý umožňuje procesom nastaviť zámok na zmenu určitých častí ich adresného priestoru. V praxi sa nový systémový volanie plánuje používať v prehliadači Chrome na posilnenie izolácie sandboxu.
- Pre subarchitektúru x32, ktorá poskytuje hybridný x86_64 ABI, umožňujúci používať na 64-bitových systémoch 32-bitový model adresácie pamäte (procesor pracuje v 64-bitovom režime, ale používa 32-bitové ukazovatele a aritmetické operácie), bola pridaná podpora mechanizmu Shadow Stack, ktorý umožňuje blokovať fungovanie mnohých exploitov, využívajúc hardvérové možnosti procesorov Intel na ochranu pred prepísaním adresy návratu z funkcie v prípade pretečenia bufferu v zásobníku.
- Na systémoch s architektúrou ARM64 v systémovom volaní userfaultfd(), ktoré umožňuje vytvárať spracovateľov prístupov k nealokovaným stránkam pamäte (page faults) v užívateľskom priestore, boli implementované možnosti týkajúce sa ochrany pred zápisom do oblastí pamäte a prvkov tabuľky strán pamäte.
- Bol odstránený kód na podporu procesorov Alpha 21164 (EV5) a starších sérií vydaných od roku 1995. Údržba kódu pre tieto procesory bola sťažená kvôli nedostatku prístupu do pamäte na úrovni jednotlivých bajtov. Alpha bola prvou architektúrou, na ktorú bolo portované jadro Linux, ktoré bolo pôvodne dostupné iba pre systémy x86.
- Virtualizácia a bezpečnosť
- Pridaná podpora šifrovaného prenosu údajov s TPM (Trusted Platform Module) a overovania integrity transakcií.
- Do LSM modulu Landlock, ktorý umožňuje obmedziť interakciu skupiny procesov s vonkajším prostredím, bola pridaná možnosť aplikácie pravidiel na obmedzenie prístupu k volaniam ioctl().
- Navrhnutá možnosť init_mlocked_on_free, ktorá zabezpečuje vyčistenie obsahu pamäte chráneného pred výmenou do swapu pomocou volania mlock(), ak táto pamäť bude uvoľnená bez odblokovania volaním munlock(). Použitie tejto možnosti vylučuje ukladanie kryptografických kľúčov do pamäte v prípade havárie aplikácie, ktorá s nimi pracuje.
- V subsystéme crypto bolo zrýchlené vykonávanie operácií diskového šifrovania pomocou algoritmu AES-XTS na systémoch x86_64 s procesormi Intel a AMD, ktoré podporujú rozšírenia VAES, AVX2, VPCLMULQDQ, AVX10 alebo AVX512.
- Bola odstránená možnosť zberu štatistík o používaní kryptosub systému jadra (CONFIG_CRYPTO_STATS). Táto možnosť sa v praxi nepoužívala a spôsobovala výrazné zníženie výkonu, ako aj vytvárala značnú dodatočnú záťaž na údržbu.
- Sieťový subsystém
- Výrazne bola zvýšená efektívnosť operácií odosielania údajov v režime zero-copy pri používaní subsystému io_uring. Pridaná možnosť zlúčiť niekoľko bufferov pre operácie odosielania a prijímania údajov.
- Prepisoval sa kód na zber odpadu používaný pri odosielaní súborových descriptorov cez Unix sokety s využitím správ SCM_RIGHTS. Zmena umožňuje vyriešiť problém s hromadením cyklických počítadiel odkazov.
- Pridaná možnosť nastaviť filtre pre protokol PFCP (Packet Forwarding Control Protocol), používaný v sieťach 4G a 5G.
- Pridaná podpora možnosti sieťových soketov SO_PEEK_OFF, ktorá umožňuje určiť ofset údajov v rade, používaný systémovým volaním recv pri zadávaní príznaku MSG_PEEK (označuje údaje ako neprečítané a budú opäť poskytnuté pri ďalšom volaní recv).
- Do subsystému io_uring bola pridaná podpora operácie IORING_CQE_F_SOCK_NONEMPTY, ktorá umožňuje určiť, či sieťový soket má žiadosti o pripojenie čakajúce na spracovanie.
- Navrhnutá implementácia technológie PoE (Power over Ethernet), založená na predtým dostupnom kóde pre podporu PoDL (Power over Data Line) a kompatibilná s PoE regulátormi Microchip PD692x0 a TI TPS23881.
- Pre protokoly TCP, DCCP a MPTC bola pridaná podpora mechanizmu rstreason, ktorý umožňuje určiť dôvod odoslania RST paketov (napríklad NO_SOCKET).
- Zariadenie
- Do súboru bol pridaný ovládač panthor pre desiatu generáciu GPU Mali (G310, G510, G710), v ktorom je použitá technológia CSF (Command Stream Frontend), prenášajúca na stranu firmvéru niektoré funkcie ovládača na zníženie zaťaženia CPU a ponúkajúca nový model organizácie vykonávania úloh na GPU. Zmeny pre podporu nového ovládača boli tiež prijaté v Mesa a zahrnuté do súboru Gallium ovládača panfrost pre GPU Mali.
- Do ovládača i915 boli pridané PCI identifikátory nových diskrétnych grafických kariet Intel Arc (DG2/Alchemist).
- Pokračuje sa v práci na drm ovládači (Direct Rendering Manager) Xe pre GPU na báze architektúry Intel Xe, ktorá sa používa v grafických kartách Intel rodiny Arc a integrovaných grafikách, začínajúc od procesorov Tiger Lake. Bola pridaná podpora CPU Arrow Lake H. Pokračuje sa v implementácii podpory procesorov Lunar Lake. Pridaná je počiatočná podpora mechanizmu SR-IOV (Single Root I/O Virtualization).
- V ovládači AMDGPU bola pridaná podpora SMU 14.0 (System Management Unit). Pridaná je možnosť používať nové GPU AMD na systémoch s architektúrou RISC-V.
- Bol pridaný ovládač pre akcelerátor kryptografických operácií Tegra Security Engine, ktorý sa dá použiť na zrýchlenie AES a rôznych algoritmov hashovania.
- Pridaná podpora displejových panelov 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 a AUO B120XAN01.0.
- Pridaná podpora zvukového subsystemu notebookov Lenovo Thinkbook 13x Gen 4, Lenovo Thinkbook 16P Gen 5, Lenovo Thinkbook 13X a ASUS Zenbook 2024 HN7306W. Pridaná podpora externých zvukových kariet Vocaster One a Vocaster Two. Pridaný ovládač pre zosilňovače NAU8325 od spoločnosti Nuvoton Technology.
- Do ovládača HID-Steam bola pridaná podpora IMU (Inertial Measurement Unit) herného ovládača Steam Deck, ktorá umožňuje používať samostatný uzol evdev na prístup k údajom gyroskopu a akcelerátora.
- Zahrnuté zmeny pre podporu ARM SoC Snapdragon X Elite, ktorý využíva vlastný 12-jadrový CPU Qualcomm Oryon a GPU Qualcomm Adreno. Čip je určený na použitie v notebookoch a PC a vo viacerých testoch výkonu predčí čipy Apple M3 a Intel Core Ultra 155H.
- Pridaná podpora ARM platforiem, SoC a zariadení: PocketBook 614 Plus, Sony Xperia Z3, Xperia 1 V, Samsung Galaxy S5 China, 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.
- Pridaná podpora platforiem Milk-V Mars, ktoré používajú SoC Starfive JH7110 založený na architektúre RISC-V.
Zároveň latinskoamerická Nadácia pre slobodný softvér vytvorila variant úplne slobodného jadra 6.10 — Linux-libre 6.10-gnu, vyčisteného od prvkov firmvéru a ovládačov obsahujúcich neslobodné komponenty alebo úryvky kódu, ktorých použitie je obmedzené výrobcom. V vydaní 6.10 bol aktualizovaný kód čistenia blobov v ovládačoch Intel i915, rtl8xxxu, qla2xxx a QCAI sahara. Prebehlo čistenie názvov blobov v dts súboroch (devicetree) pre architektúru Aarch64. Boli odstránené blobové prvky z nových súborov pridaných v ovládačoch Adreno, Intel IPU3 a PRUEth. Prebehlo čistenie nových ovládačov Panthor, Intel IPU6, PRUEth SR1, rtw8703b, tps23881, air_en8811h, Intel ISH HID a pcm6240. Prečistenie USB ovládača Prism2.5/3 USB, ktorý bol odstránený z jadra, bolo zastavené.
Zdroj: opennet.ru
