Po dvoch mesiacoch vývoja Linus Torvalds predstavil uvoľnenie jadra Linux 7.0. Medzi najvýraznejšie zmeny patrí: pravidlá uplatnenia AI asistentov, prechod Rustu na hlavné funkcie jadra, zvýšenie výkonu stránkovania, predvolené zapnutie režimu PREEMPT_LAZY, podpora filtrov pre operácie io_uring, nová FS Nullfs, infraštruktúra fserror, nástroje na monitorovanie XFS, podpora remapovania v Btrfs, predvolené zapnutie verzie NFS 4.1, integrácia post-kvantového kryptografického algoritmu ML-DSA, aktivácia AccECN v sieťovej subsystéme, počiatočná podpora WiFi 8.
Číslo 7.0 bolo priradené, pretože v vetve 6.x sa nahromadilo dostatočné množstvo vydaní na zmenu prvého čísla vo verzii (v čase vydania 6.0 bolo vytvorené po 5.19). Zmena číslovania sa vykonáva z estetických dôvodov a je formálnym krokom, ktorý odstraňuje nepohodlie spôsobené hromadením veľkého počtu vydaní v sérii.
Do novej verzie bolo prijatých 15624 opráv od 2477 vývojárov, veľkosť záplaty je 56 MB (zmeny sa dotkli 18053 súborov, bolo pridaných 704060 riadkov kódu a odstránených 278132 riadkov). V predchádzajúcej verzii bolo 15657 opráv od 2237 vývojárov, veľkosť záplaty bola 52 MB. Približne 51% všetkých zmien v 7.0 sa týka ovládačov zariadení, približne 11% zmien súvisí s aktualizáciou kódu špecifického pre hardvérové architektúry, 14% je spojených so sieťovým zásobníkom, 5% s súborovými systémami a 3% s vnútornými subsystémami jadra.
Hlavné novinky v jadre 7.0 (kernelnewbies.org, lwn.net, OpenNET):
- Diskový subsystém, I/O a súborové systémy
- Bola realizovaná infraštruktúra fserror a bol pridaný API na získavanie informácií o chybách vstupu/výstupu a poškodeniach metadát pri práci so súbormi. Navrhnutá infraštruktúra unifikuje v súborových systémoch prenos informácií o chybách do priestorov používateľa cez mechanizmus fsnotify.
- V XFS stavebné bloky pre vetvu dogfood, a do platformy Fuchsia nové možnosti na monitorovanie stavu súborového systému z priestoru používateľa. Navrhnutá ioctl operácia XFS_IOC_HEALTH_MONITOR vracia súborový deskriptor, prostredníctvom ktorého je možné získať informácie o zlyhaniach súvisiacich s poškodením metadát alebo vznikom chýb pri vstupe/výstupu, ako aj sledovať zmeny stavov FS, ako sú odmontovanie a vypínanie. Navyše bol navrhnutý spravovaný cez systemd na pozadí bežiaci proces xfs_healer, ktorý spracováva udalosti o stave FS z priestoru používateľa a v prípade potreby automaticky spúšťa. Obnovovacie postupy.
- Do súborového systému Btrfs bola pridaná experimentálna podpora štruktúry „strom remapovania“ (remap tree), ktorá môže byť v budúcnosti využitá ako medzičlánok pri vykonávaní vstupno-výstupných operácií. Zmyslom pridanej funkcie je, že po presune údajov na úložisku sa namiesto aktualizácie všetkých súvisiacich štruktúr v týchto údajoch uchovávajú staré a nové adresy údajov v dodatočnej štruktúre „remap tree“, čím sa pri prístupe k údajom adresy pozmenia. Nový prístup je prezentovaný ako spoľahlivejší a flexibilnejší, a tiež zjednodušuje ďalšie rozšírenie funkčnosti Btrfs.
- V Btrfs bola implementovaná podpora priamych vstupov/výstupov v situáciách, keď veľkosť bloku presahuje veľkosť pamäťovej stránky v systéme.
- Súčasťou je zahrnutá nový súborový systém Nullfs, ktorý môže byť použitý ako proxy pre koreňový FS. Súborový systém Nullfs je vždy prázdny, neobsahuje žiadne údaje a nepodporuje zmeny. Cieľom Nullfs je slúžiť ako počiatočný FS na zjednodušenie procesu spustenia systému – nad Nullfs sa potom montujú ďalšie FS a používa sa systémový volanie pivot_root() na prepínanie koreňového FS namiesto čistenia obsahu initramfs a používania s ním spojeného koreňového FS.
- Implementované aktualizácia informácií o čase zmeny súborov v neblokujúcom režime. Predtým volanie file_update_time_flags() s flagom IOCB_NOWAIT vracalo chybu -EAGAIN, čo neumožnilo vykonávať operácie priameho zápisu v neblokujúcom režime.
- V súborových systémoch v kategórii samostatne pripojiteľných možností bol preložený podpora notifikačných zámkov (lease). Podľa predvoleného nastavenia tento mechanizmus teraz nie je aktivovaný kvôli problémom so súborovými systémami, ktoré neboli pôvodne navrhnuté na jeho použitie. Napríklad, súborové systémy 9p a cephfs ho nepodporujú.
- V súborovom systéme EROFS (Extendable Read-Only File System), určenom na použitie na oddieloch prístupných iba na čítanie, je predvolene použitý algoritmus LZMA na kompresiu. Voliteľne sú k dispozícii algoritmy DEFLATE a Zstandard, ktoré už nie sú označené ako experimentálne. Realizované je zdieľanie záznamov v stránkovom cache (page-cache) pre identické súbory v jednotlivých FS EROFS.
- Odstránené Režim laptop_mode, ktorý šetrí spotrebu energie odložením a zlúčením zápisových operácií na pevný disk s cieľom predĺžiť dobu, počas ktorej je disk v spánkovom režime, a znížiť počet prebudení. Tento režim stratil význam, pretože v moderných mobilných zariadeniach sú pevné disky nahradené SSD.
- Systém súborov F2FS bol prevedený na používanie veľkých folio stránok pamäte (veľké folia).
- Obnovená práca na ovládači ntfs3, ktorý vyvíja spoločnosť Paragon Software. Bola pridaná podpora operácií s súbormi založenými na iomap, implementované možnosti llseek SEEK_DATA/SEEK_HOLE, pridaný režim delalloc pre odložené pridelenie blokov. Medzitým, na zozname diskusie vývojárov jadra v februári bolo schválené zahrnutie novej implementácie NTFS do jednej z budúcich verzií jadra — ntfsplus, vyvinutej na nahradenie ntfs3.
- Pri zostavovaní je predvolene je zahrnutá verzia protokolu NFS 4.1 (CONFIG_NFS_V4_1). Bola zabezpečená blokovanie exportu cez NFS pre špecializované pseudo-FS, ako sú pidfs a nsfs. V NFSD bola implementovaná je experimentálna možnosť používania POSIX ACL a bola pridaná podpora dynamickej zmeny poolu vlákien (thread-pool) v závislosti od záťaže.
- Pamäť a systémové služby
-
Boli schválené oficiálne pravidlá používania AI asistentov a zahrnutia automaticky generovaného obsahu do jadra . Pri prenose generovaného kódu je predpísané označovať ho pomocou uvedenia používaného AI asistenta cez tag Assisted-by. AI asistentom je zakázané pridávať tag Signed-off-by – osoba, ktorá predala patch, sa považuje za jeho autora, nesie zodpovednosť za predanú zmenu a ručí za jej kvalitu. Vývojárom je nariadené vykonávať ručné preskúmanie kódu získaného cez AI a skontrolovať súlad výsledku s licenčnými požiadavkami.Podpora Rust
-
z experimentálnych do bol preložený hlavných funkcií jadra integrácia do jadra mechanizmu „.
-
Zavŕšená “, ktorý umožňuje zvýšiť výkon swapovania. Zrýchlenie sa dosahuje znížením konkurencie o prístup k swapovaciemu cache, efektívnejším vyhľadávaním v cache a znížením fragmentácie. Backend založený na Swap Table je zapojený na cache swapovania namiesto backendu XArray a umožnil v teste redis-benchmark s BGSAVE zvýšiť počet spracovaných požiadaviek o 22%.Swap TableBola pridaná podpora rozšírenia
-
Thread Safety Analysis, ktoré sa objavilo v Clang 22. Analýza bezpečnosti vlákien, ktoré umožňuje odhaliť potenciálne podmienky pretekov a chyby spôsobené nesprávnym nastavením zámkov už počas kompilácie. Rozšírenie ponúka sériu atribútov, ako sú GUARDED_BY(…), REQUIRES(…), RELEASE(…) a ACQUIRE(…), ktoré umožňujú označovať funkcie chránené zámkami a oddeliť rozsahy zámkov (definovať kontext). Počas kompilácie sa vykonáva kontrola správnosti aplikácie synchronizačných primitív, ako sú mutexy, na základe posúdenia aktivity alebo neaktivity súvisiaceho kontextu.
-
Pri systémovom volaní open_tree bol pridaný pridáva flag OPEN_TREE_NAMESPACE pre zjednodušenie nastavenia izolovaných kontajnerov a urýchlenie spustenia kontajnerov na systémoch s veľkým počtom montovacích bodov. Podobne ako OPEN_TREE_CLONE, nový flag kopíruje len určené montovacie stromy (mount tree), ale namiesto miestneho súborového deskriptoru vracia súborový deskriptor v novom priestore mien montovacích bodov, v ktorom je skopírovaný strom montovaný na povrchu kópie skutočného koreňového FS. Flag OPEN_TREE_NAMESPACE je dôležitý pre oddelenie vykonávania operácií unshare(CLONE_NEWNS) a pivot_root(), ktoré sa používajú pri vytváraní kontajnerov.
-
Pri systémovom volaní rseq bol pridaný mechanizmus rozšírenia časových kvant (time slice), ktorý umožňuje získať dodatočný procesorový čas pre nepretržité vykonávanie kritickej sekcie. Myšlienka spočíva v tom, aby sa predišlo prerušeniu plánovačom úloh kritickej sekcie so zámkom, ktoré by viedlo k odovzdaniu riadenia iným vláknam, ktoré využívajú zdroj, na ktorých ostáva zámok nastavený. Rozšírenie časového kvanta sa vykonáva bez dodatočných nákladov, ale aj bez prísnych záruk, ktoré sú poskytované pri plnohodnotnej regulácii priorít.
-
Pre architektúry arm64, loongarch, powerpc, riscv, s390 a x86 je režim preemptívneho plánovania (preemption) v plánovači predvolene zmenený z PREEMPT_NONE na PREEMPT_LAZY. Počet možných režimov skrátila od štyroch do dvoch – PREEMPT_FULL a PREEMPT_LAZY (režimy PREEMPT_NONE a PREEMPT_VOLUNTARY zostali iba pre architektúry, ktoré nepodporujú PREEMPT_FULL a PREEMPT_LAZY). Režim PREEMPT_LAZY aplikuje model plného predbežného prebratia (PREEMPT_FULL) pre realtime úlohy (RR/FIFO/DEADLINE), ale odďaľuje prebratie bežných úloh (SCHED_NORMAL) do hranice tikov. Zavedenej odchýlke vedie k zníženiu počtu prebratí držiteľov zámkov, čo umožňuje priblížiť výkon k konfiguráciám, ktoré používajú model dobrovoľného prebratia (voluntary preemption), t.j. PREEMPT_LAZY umožňuje zachovanie schopnosti plného prebratia v súvislosti s realtime úlohami, ale minimalizuje pokles výkonu pre bežné úlohy.
Aktivácia PREEMPT_LAZY viedla k vážnej regresii, ktorá znižuje výkon PostgreSQL na systémoch ARM64 na polovicu. Na odstránenie poklesu výkonu musia vývojári PostgreSQL bola navrhnutá aktívovať možnosť PR_RSEQ_SLICE_EXTENSION na zníženie pravdepodobnosti prebratia držiteľa zámku.
-
Pokračoval prenášanie zmien z vetvy Rust-for-Linux, súvisiacich s použitím jazyka Rust ako druhého jazyka na vývoj ovládačov a modulov jadra (podpora Rust nie je predvolená a nevedie ku zaradeniu Rust medzi povinné závislosti pri kompilácii jadra). Vďaka predtým integrované knižnice „syn (crates.io)“, ktorá zjednodušuje písanie zložitých makier, sa podarilo zredukovať veľkosť Rust kódu v jadre zjednodušením definícií existujúcich procedurálnych makier. Rozšírené možnosti knižníc kernel, macros a pin-init.
-
Do systému asynchrónneho vstupu/výstupu io_uring bola pridaná možnosť na využitie nekruhových frontov (non-circular submission queue), efektívnejšie cachovaných situáciách, keď sa vykonanie požiadavky dokončí skôr ako návrat z systémového volania.
-
V podsysteme eBPF v mechanizme BTF (BPF Type Format), ktorý poskytuje informácie na kontrolu typov v pseudokóde BPF, na vyhľadávanie ladenia sa využíva binárneho vyhľadávania, čo zvýšilo efektívnosť načítania BPF programov. V eBPF bola pridaná podporuje implicitné argumenty pri volaní kfunc (funkcie jadra, dostupné na používanie v programoch BPF), definovaných s flagom KF_IMPLICIT_ARGS.
-
Odstránené kód na podporu počiatočného RAM disku (initrd) založeného na linuxrc, ktorý bol už dlho považovaný za zastaraný. Ostatné implementácie initrd plánujú odstrániť v roku 2027. Namiesto initrd by sa mal používať initramfs (rozdiel je v tom, že initrd umiestňuje počiatočné zavádzacie prostredie do diskového obrazu, zatiaľ čo initramfs – do súborového systému).
-
V blokovom zariadení zram, používanom pre komprimované uchovávanie pamäťovej swapovej oblasti, bola zmenená logika práce so skomprimovanými stránkami pamäte pri voliteľnom presune údajov do trvalého úložiska v prípade zaplnenia dostupnej RAM. Predtým sa pamäťové stránky rozbaľovali pred zápisom na fyzické médium, teraz sa ukladajú tak, ako sú, v skompresovanej podobe, čo znižuje záťaž na CPU a šetrí energiu pri prevádzke na batériu.
-
Do nástroja timerlat, určená na meranie latencií pri práci plánovača úloh, bola pridaná voľba —bpf-action na spúšťanie BPF programov v prípade prekročenia zadaného prahu.
-
Do systému sledovania ftrace bola pridaná konfigurácia bitmask-list na zobrazenie bitových masiek v čitateľnej forme (vo forme zoznamu bitov, nie hexadecimálnych čísel). Do tracefs boli pridané možnosti pre audit filterov a spúšťačov. Pridaná príkaz perf sched stats na zhromažďovanie a zobrazenie štatistiky o práci plánovača úloh.
-
Boli pridané možnosti zostavenia LOGO_LINUX_MONO_FILE, LOGO_LINUX_VGA16_FILE a LOGO_LINUX_CLUT224_FILE na určenie súboru s obrázkom loga, ktoré sa zobrazuje pri zavádzaní jadra namiesto štandardného loga s tučniakom Tux.
-
- Virtualizácia a bezpečnosť
- V systéme asynchrónneho vstupu/výstupu io_uring bola implementovaná možnosť priloženia BPF programov s filtrami, ktoré kontrolujú, čo môžu robiť konkrétne operácie SQE (Submission Queue Entry) (podobne ako systémové volania v io_uring). Pridaná funkcia je analógom filtrov systémových volaní. Filtre je možné viazať na konkrétne úlohy a dedí sa pri vytváraní iných procesov po volaní fork(). Pri existencii aktívnych filtrov, pridané filtre môžu iba pridávať ďalšie obmedzenia, ale nemôžu vypnúť existujúce. Implementovaná funkcia umožní blokovať metódy obchádzanie filtrovania systémových volaní v sandboxových prostrediach, založených na vykonávaní namiesto systémových volaní podobných operácií, ktoré poskytuje io_uring.
- V SELinux bola pridaná možnosť správy prístupu k BPF tokenom, umožňujúcim neprivilegovaným procesom vykonávať niektoré privilegované operácie s BPF, napríklad načítavať BPF programy do jadra a vytvárať map-štruktúry.
- Pridaná podpora algoritmu na generovanie digitálnych podpisov ML-DSA (CRYSTALS-Dilithium), založeného na teórii mriežok a odolného voči útokom na kvantových počítačoch. Poskytla možnosť používania ML-DSA na autentifikáciu modulov jadra.
- Odstránená možnosť používať schémy na generovanie digitálnych podpisov s algoritmom SHA-1 na overenie modulov jadra (podpora načítania podpísaných modulov zostáva).
- V zápise auditu NETFILTER_PKT stavebné bloky pre vetvu dogfood, a do platformy Fuchsia polia sport a dport na inspekciu čísel sieťových portov a nie len IP adries.
- Pre systémy s architektúrou RISC-V bola implementovaná podpora rozšírení Zicfiss a Zicfilp, ktoré poskytujú hardvérové možnosti na použitie ochrany CFI (Control Flow Integrity), blokujúcej porušenia normálneho poradia vykonávania inštrukcií (control flow) v dôsledku aplikácie exploitov, ktoré menia uložené v pamäti ukazovatele na funkcie.
- V hypervízore KVM bola implementovaná možnosť prenášať do hosťujúcich systémov informácie o podpore procesorom rozšírenia ERAPS (Enhanced Return Address Predictor Security), čo umožňuje obísť niektoré operácie resetovania stavu CPU pri návrate riadenia hostiteľskému systém nie z hostiteľskej sústavy. Okrem toho, bola pridaná podpora prisúdenia hostujúcim systémom hardvéru na sledovanie výkonu (PMU, Performance Monitoring Unit), čo zvyšuje presnosť profilovania v porovnaní s použitím emulovaných PMU.
- V ovládači pre hypervízor Hyper-V bola pridaná podpora rozhrania debugfs na zobrazenie štatistiky prevádzky hypervízora.
- Sieťový subsystém
- Aktivované predvolene rozšírenie AccECN (Accurate Explicit Congestion Notification), implementujúce vylepšenú verziu rozšírenia ECN (wikipedia.org), ktorý umožňuje poskytovateľom hostingu označovať IP-pakety v prípade preťaženia namiesto ich odmietania, čo umožňuje identifikovať vznik začiatku preťaženia v komunikačných kanáloch bez straty paketov. Pôvodná expanzia ECN mala obmedzenie, ktoré dovoľovalo vyslať iba jeden signál o preťažení v rámci jedného cyklu prijímania a odosielania TCP (RTT, Round-Trip Time, odoslanie požiadavky a prijatie odpovede). AccECN toto obmedzenie odstraňuje a umožňuje prijímateľovi poslať odosielateľovi viac ako jednu značku o preťažení v hlavičke TCP-paketu. Algoritmy riadenia preťaženia môžu využiť získané informácie na presnejšiu reakciu na preťaženia a vyhnúť sa prudkému zníženiu intenzity odosielania paketov pri malom preťažení.
- Implementácia algoritmu na riadenie sieťových frontov Cake bola pridaná umožňuje spracovanie viacerých frontov na rozdelenie záťaže na viac CPU jadier. Algoritmus CAKE sa používa na zníženie negatívneho vplyvu medzičasového ukladania paketov na hraničných sieťových zariadeniach a je zameraný na dosiahnutie maximálnej možnej priepustnosti a minimálnej latencie aj na pomalých komunikačných kanáloch.
- V sockete VSOCK, používaných na interakciu s virtuálnymi strojmi, bola pridaná podpora sieťových priestorov názvov (network namespace).
- Pridaná počiatočná implementácia budúceho štandardu WiFi 8 (802.11bn, Ultra High Reliability WiFi).
- Boli pridané optimalizácie, ktoré zvýšili výkonnosť spracovania prichádzajúcich UDP-paketov o 12 % počas testovania záťaže v sieti s rýchlosťou 100 Gbps.
- Zariadenie
- V ovládači AMDGPU bola implementovaná podpora IP-blokov, používaných v nových GPU AMD, ako sú SMUIO 15.x, PSP 15.x, IH 6.1.1/7.1, MMHUB 3.4/4.2, GC 11.5.4/12.1, SDMA 6.1.4/7.1/7.11.4 a JPEG 5.3.
- V ovládači Nouveau bolo vylepšené riadenie frekvencie na systémoch Tegra 186+.
- V ovládači i915 bola pridaná počiatočná podpora displejového IP-bloku Xe3p_LPD, používaného v procesoroch Intel Nova Lake-P.
- Pokračuje práca na drm-ovládači (Direct Rendering Manager) Xe pre GPU založené na architektúre Intel Xe, ktorá sa používa vo grafických kartách Intel rodiny Arc a integrovaných grafikách, počnúc procesormi Tiger Lake. Pridaný režim Multi Queue. Boli pridané komponenty potrebné na diagnostiku zaseknutí GPU v Mesa. Pridaná podpora mechanizmu MERT na riadenie prístupu k pamäti GPU.
- Pokračuje Integrácia komponentov ovládača Nova pre GPU NVIDIA, vybavené GSP firmvérmi, používanými od série NVIDIA GeForce RTX 2000 postavenej na mikroarchitektúre Turing. Ovládač je napísaný v jazyku Rust. V novej verzii bola vykonaná príprava na realizáciu podpory GPU na báze mikroarchitektúry Turing a boli vykonané rôzne interne úpravy.
- Pridaná Podpora ovládačov a periférnych zariadení s viackanálovým rozhraním SPI (Serial Peripheral Interface), ktoré umožňuje prenos údajov v niekoľkých paralelných prúdoch.
- Pridané Ovládač pre kombinované konektory typu C, používané v zariadeniach s čipmi Apple Silicon a kombinujúce rozhrania USB3, DP-AltMode a Thunderbolt/USB4.
- Pridaná podpora zvukových subsystémov čipov Tegra238, Minisforum V3 SE, iBasso DC04U, Intel Nova Lake, Nova Lake S a Focusrite Forte.
- Pridaná podpora ARM platforiem, SoC a zariadení: Arduino UnoQ, OrangePi 6 Plus, OrangePi CM5, Anbernic RG-DS, Realtek Kent, Qualcomm Kaanapali, Mediatek Ezurio, Facebook Anacapa, Microchip LAN9668, Khadas VIM1S, QNAP TS133, i.MX952, i.MX93, i.MX94, VHIP4 EvalBoard, TQ-Systems MBLS1028A, Agilex5, Radxa CM3J, Glymur,
- Pridaná podpora smartfónov a tabletov: Fairphone Gen 6 (SoC Qualcomm Milos/Snapdragon 7s Gen 3), Pixel 3/3 XL, Microsoft surface pro 11.
Zároveň latinskoamerická Nadácia slobodného softvéru vytvorila variantu úplne slobodného jadra 7.0 – Linux-libre 7.0-gnu, zbaveného prvkov firmvéru a ovládačov, obsahujúcich neslobodné komponenty alebo úseky kódu, ktorých použitie je obmedzené výrobcom. V vydaní 7.0 bola vykonaná čistka od blobov ovládača iwlwifi. Aktualizovaný kód čistenia v ovládačoch amdgpu, adreno, TI PRUeth, air_en8811h, ath12k, TI VPE, rtw8852b, rt1320, rt5575 SPI, tas2783, Intel catpt. Vykonaná čistka mien blobov v dts súboroch (devicetree) pre ARM čipy.
Zdroj: linux.org.ru
