Po dvou měsících vývoje představil Linus Torvalds vydání jádra Linux 7.1. Mezi nejvýznamnějšími změnami: nový ovladač ntfsplus, první fáze ukončení podpory CPU i486, odstranění starých Ethernet adaptérů, odstranění protokolů ISDN a AX.25, zapnutí mechanizmu Intel FRED jako výchozího, podpora BPF handlerů v io_uring, optimalizace subsystému swapu, podpora sub-plánovačů v sched_ext, vstup/výstup v režimu zero-copy v ovladači ublk, ioctl operace „shutdown“ v Btrfs, dynamické přepínání režimu výkonu v ovladači amd-pstate, podpora xattr pro Unix sokety.
V nové verzi bylo přijato 17275 oprav od 2589 vývojářů,
velikost patche je 57 MB (změny se dotkly 13528 souborů, bylo přidáno 751785 řádků kódu, odstraněno 405916 řádků). V předchozí verzi bylo 15624 oprav od 2477 vývojářů, velikost patche byla 56 MB. Přibližně 41% všech změn v 7.1 souvisí s ovladači zařízení, asi 12% změn se týká aktualizace kódu specifického pro hardwarové architektury, 14% se vztahuje k síťovému stacku, 5% k souborovým systémům a 3% k vnitřním subsystémům jádra.
Hlavní novinky v jádře 7.1 (1, 2, 3):
- Diskový subsystém, vstup/výstup a souborové systémy
- Byla přijata nová implementace souborového systému NTFS – ntfsplus, založená na kódu odstraněném z jádra klasického ovladače ntfs. Starý ovladač byl přepracován, rozšířen o možnost zapisování dat a přizpůsoben pro podporu moderních možností, jako je využívání foliantů stránek paměti (folios) místo struktury buffer_head. V novém ovladači byla implementována odložená alokace bloků, což vedlo k vysokému výkonu operací zápisu a snížení fragmentace. Pro vyrovnávací operace zápisu/čtení, přímý vstup/výstup, mapování rozsahů a operace stránkového zápisu/čtení byla využita knihovna iomap. V testech iozone se ovladač ntfsplus ukázal být o 3-5% rychlejší než ntfs3 při zápisu v jednovláknovém režimu a o 35-110% při použití 4 vláken. Rychlost čtení ntfsplus a ntfs3 je přibližně na stejné úrovni. Ovladač ntfs3 zůstává součástí jádra a byly do něj provedeny opravy a drobná vylepšení.
- Byla přidána podpora generování a ověřování dat integrity T10 na úrovni souborového systému, nikoli blokového zařízení, což zvyšuje výkon čtecích operací.
- Do ovladače blokových zařízení ublk, který umožňuje přesunout specifickou logiku na stranu procesu v prostoru uživatele, byla přidána podpora vstupu/výstupu prostřednictvím sdílené paměti bez kopírování dat mezi buffery (režim zero-copy).
- Pro samošifrovací bloková zařízení SED-OPAL byly přidány ioctl pro správu režimu Single User a byla implementována příkaz STACK_RESET.
- V systému Btrfs byla vyhlášena stabilní podpora ioctl operace „shutdown“, která umožňuje přepnutí FS do stavu, kdy se pokouší dokončit již spuštěné operace, ale blokuje všechny nové operace.
- V exfat byla implementována možnost rezervace prázdných oblastí prostřednictvím volání fallocate().
- V systému CIFS byla přidána podpora vytváření dočasných souborů s flagem O_TMPFILE.
- Do systémového volání fsmount() byla přidána volba FSMOUNT_NAMESPACE, která vytváří nové jmenné prostor pro připojovanou souborový systém. Do systémových volání clone3() a unshare() byly přidány flagy pro vracení nového jmenného prostoru, obsahujícího pouze připojenou prázdnou FS-základnu na bázi nullfs, ovladač fs-dax s FS rozhraním k zařízením DAX (Direct Access).
- Na NFS server byla přidána ochrana proti útokům skrze výběr popisovačů souborů, implementovaná prostřednictvím podepisování popisovačů kryptografickým podpisem. Ochrana se aktivuje prostřednictvím možnosti montování sign_fh.
- Byl přidán symbolický ovladač fs-dax, který poskytuje rozhraní pro interakci se zařízeními DAX (Direct Access), podporujícími obcházení stránkového cache. Toto rozhraní je nezbytné pro integraci do jádra souborového systému famfs, umístěného v operační paměti.
- V souborovém systému Ceph byla implementována sběr metrik o vstupu/výstupu vázaný na pododdělení.
- Paměť a systémové služby
- Byla přijata první série změn pro ukončení podpory procesorů i486. Z Kconfig byly odstraněny možnosti pro sestavení jádra s podporou procesorů 486DX, 486SX a AMD ELAN (CONFIG_M486, CONFIG_M486SX a CONFIG_MELAN), a z Makefile byly vyloučeny možnosti kompilace pro systémy i486 (-march=i486). Kód pro skutečnou podporu běhu na procesorech i486 zůstal v jádře, ale sestavení pro takové systémy nyní vyžaduje použití patchů na sestavovací soubory. Důvody odstranění podpory procesorů i486 jsou dány snahou zbavit jádro složitého kódu, emulujícího některé hardwarové operace, jako jsou CX8 (srovnat a vyměnit 8 bytů) a TSC (počítač cyklů CPU, používaný v plánovači úloh).
- V ovladači amd-pstate, který se používá k řízení spotřeby energie na systémech s procesory AMD, bylo implementováno dynamické přepínání nastavení výkonu a změna chování správy napájení v závislosti na napájení ze zásuvky nebo z baterie. Při připojení k síti se nyní aktivuje režim „performance“, a při práci na baterii režim „balance_performance“.
- Byl aktivován výchozí mechanismus Intel FRED (Flexible Return and Event Delivery), který zvyšuje efektivitu a spolehlivost dodávání informací o nízkoúrovňových událostech. Zlepšení výkonu a zkrácení latencí je dosaženo vracením událostí pomocí procesorové instrukce IRET namísto předávání událostí prostřednictvím tabulky IDT (Interrupt Descriptor Table). Zvýšení spolehlivosti je dosaženo díky oddělenému zpracování příchodu události v kontextu jádra a uživatelského kontextu, ochraně před vnořeným vykonáváním NMI a uchováním všech registrů CPU souvisejících s výjimkou v rozšířeném rámci zásobníku.
- Do subsystému perf byla přidána podpora bloků sledování výkonu paměti (PMU — Performance Monitoring Unit), které se používají v SoC NVIDIA Tegra410.
- Zrychleno provádění operací futex na systémech ARM díky využití instrukcí Arm 9.6 LSUI, které umožňují jádru přistupovat k paměti uživatelského prostoru bez předchozího vypnutí ochranného režimu PAN (Privileged Access Never).
- Na systémech s procesory ARM byla vylepšena podpora rozšíření architektury MPAM (Memory System Resource Partitioning and Monitoring) a byla přidána možnost jejího použití v uživatelském prostoru pro správu prostředků prostřednictvím mechanismu resctrl. MPAM zajišťuje označení každého přístupu do paměti identifikátorem sekce (PARTID, Partition ID) a identifikátorem monitorovací skupiny (PMG, Monitoring Group ID). Vázání na PARTID může omezit spotřebu prostředků, jako je šířka pásma paměti nebo velikost cache, aby nějaká skupina úloh nezabírala všechny prostředky. V kontextu monitorování lze kombinaci PMG a PARTID použít k sledování spotřeby paměťových prostředků při určitých typech zatížení.
- Byla přidána možnost používání režimu reálného času (PREEMPT_RT) na 32bitových procesorech ARM. Dříve byla podpora PREEMPT_RT zajištěna pro architektury x86 a x86-64, ARM64, RISC-V a LoongArch.
- Do systémového volání clone3() byly přidány nové příznaky: CLONE_NNP — zákaz získání nových oprávnění ve vytvořeném procesu; CLONE_AUTOREAP — automatické ukončení procesu místo jeho převedení na zombie proces až do provedení funkce wait() rodičovským procesem;
CLONE_PIDFD_AUTOKILL — ukončení podřízeného procesu v případě uzavření souvisejícího deskriptoru pidfd (například při ukončení rodičovského procesu). - Pro každý modul jádra v adresáři /sys/module byl přidán soubor import_ns, který obsahuje seznam importovaných prostorů jmen symbolů (symbol namespace).
- Do systému asynchronního vstupu/výstupu io_uring byla přidána podpora používání subsystému BPF pro vytváření obslužných rutin. Například lze nahradit hlavní cyklus zpracování BPF programem.
- V subsystému BPF byla modernizována analýza využití zásobníku, což výrazně zrychlilo ověření mnoha BPF programů.
- Za účelem optimalizace výkonu byla přepsána podsystém hrtimer (high resolution timer). Plánovač úloh nyní může používat vysoce přesné časovače bez ztráty výkonu místo méně přesných časovačů.
- Pokračuje přenos změn z větve Rust-for-Linux, týkajících se používání jazyka Rust jako druhého jazyka pro vývoj ovladačů a modulů jádra (podpora Rust není ve výchozím nastavení povolena a nezahrnuje Rust mezi povinné závislosti pro sestavení jádra). Do verze 1.85 (dodávané v Debianu 13) byly zvýšeny požadavky na verzi Rust potřebnou pro sestavení komponent jádra. Přidána experimentální možnost Kconfig CONFIG_RUST_INLINE_HELPERS pro vkládání C-úseků do Rust-kódu během kompilace (optimalizace zrychlila práci blokového ovladače null o 2%). Přidán makro ‘const_assert!’. Rozšířeny možnosti modulů ‘sizes’, ‘clk’, ‘ptr’, ‘sync’, ‘error’.
- Do mechanismu SCHED_EXT, který umožňuje používat BPF k vytváření plánovačů CPU, byla přidána počáteční možnost vytváření vnořených plánovačů (sub-scheduler), díky nimž může mít každá cgroup svůj vlastní plánovač úloh.
- Pokračovalo se v optimalizaci subsystému swapu. Byla odstraněna stará struktura swap_map, nahrazena mechanismem „Swap Table“. Změna umožnila zvýšit výkon a snížit spotřebu paměti v subsystému swapu.
- Do subsystému DAMON (Data Access MONitor), který umožňuje sledovat přístup procesu k datům v operační paměti (například lze zjistit, které oblasti paměti proces navštívil, a které oblasti paměti zůstaly nevyužité), byla přidána podpora různých algoritmů automatického ladění kvót.
- V subsystému sledování byla realizována koncepce externích kruhových bufferů, která umožňuje získávat sledovací data z virtuálních strojů. Možnost je aktivována v hypervisorech KVM a nVHE pro přenos sledovacích dat z hostované systémy na stranu hostitele.
- Do subsystému RV (Runtime Verification), určeného pro ověřování správnosti fungování vysoce spolehlivých systémů, byly přidány komponenty monitorování „stall“ pro sledování úloh, jejichž provádění bylo dočasně pozastaveno nebo zablokováno, a „deadline“ pro analýzu chování plánovače úloh.
- Virtualizace a bezpečnost
- Ve výchozím nastavení je nastaven běhový příznak PROC_MEM_FORCE_PTRACE, který umožňuje obcházet práva přístupu k paměti procesu přes soubor /proc/PID/mem pouze pro procesy, které používají pro ladění systémový volání ptrace().
- Byl přidán nový soubor hooků pro moduly LSM (Linux Security Module), který usnadňuje implementaci politik pro zásobníkové souborové systémy, jako je overlayfs. Do LSM byl také přidán hook pro správu přístupu k unixovým socketům, který je zapojen v LSM modulu Landlock pro přiřazení přístupových politik k unixovým socketům.
- Do integrované kryptoknihovny lib/crypto, která poskytuje jednodušší a rychlejší funkce než tradiční crypto API, byla přidána podpora algoritmů AES-CMAC, AES-XCBC-MAC, AES-CBC-MAC, GHASH a SM3. Byla přidána dokumentace k lib/crypto.
- Byl implementován režim pKVM (Protected KVM) pro přísnou izolaci anonymní paměti s využitím virtualizačních rozšíření pro architekturu AArch64. V tomto režimu jsou stránky paměti hosta vyloučeny z tabulky virtuálních adres hostitelského systému.
- Do hypervizoru KVM byla přidána podpora páté verze virtuálního řadiče přerušení ARM (VGICv5 — ARM Virtual Generic Interrupt Controller v5).
- Síťová subsystém
- Pro unixové sockety vytvářené funkcí socket() byla zavedena podpora rozšířených atributů souborů (xattr) 'user.*'. Mezi oblasti použití se uvádí označování přes rozšířené atributy k unixovým socketům používaným pro IPC Varlink, s cílem jejich vyčlenění z obecné masy pro inspekci a debugování IPC pomocí BPF programů. V systemd-journald mají být rozšířené atributy použity k určení formátu logu vázaného na socket /dev/log.
- Byla odstraněna podpora protokolu UDP-Lite (RFC 3828), který umožňuje doručování paketů s nesprávnou kontrolní součtě s očekáváním, že například částečně poškozená audio a video data mohou být obnovena na úrovni kodeku. Protokol byl odstraněn, protože jej nikdo nepoužívá.
- Byla odstraněna možnost sestavení zásobníku IPv6 ve formě modulu jádra, který nebyl prakticky používán (IPv6 se buď integruje do jádra, nebo je zcela vypnut), ale komplikoval údržbu, protože při sestavení IPv6 jako modulu jádra (CONFIG_IPV6=m) muselo mnoho subsystémů přidávat zbytečné zpracovatele pro případ vyložení modulu IPv6.
- Hardware
- V ovladači AMDGPU byl zařazen nový zobrazovací engine (DC) pro APU AMD série HD 7000 (Sea Islands, GCN 1.1).
- V ovladači Nouveau byla přidána počáteční podpora GPU NVIDIA GA100 založeného na mikroarchitektuře Ampere.
- Pokračuje se v práci na drivery drm (Direct Rendering Manager) Xe pro GPU s architekturou Intel Xe, která se používá u grafických karet Intel rodiny Arc a integrované grafiky, počínaje procesory Tiger Lake. Byla přidána podpora grafického subsystému procesorů Intel Nova Lake-P. Byly implementovány čitelné vyrovnávací objekty (Purgeable Buffer Objects).
- Pokračuje integrace komponent ovladače Nova pro GPU NVIDIA, vybavené GSP firmwary používanými od série NVIDIA GeForce RTX 2000 na bázi mikroarchitektury Turing. Ovladač je napsán v jazyce Rust. Byla přidána základní podpora GPU na bázi mikroarchitektury Turing.
- Byl přidán DRM ovladač corebootdrm pro výstup grafiky přes framebuffer firmwaru založeného na CoreBoot.
- Byla přidána podpora zvukových ASoC AMD RPL DMIC, Cirrus Logic CS42L43, CS47L47, NVIDIA CPCAP a WM8962. Byla vylepšena podpora zvukových zařízení s rozhraním USB: Huawei Headset, Focusrite Novation, MV-Silicon, Studio 1824, Arturia AF16Rig, Hotone Audio, Feaulle Rainbow,
PreSonus AudioBox, Moondrop Ju Jiu, Scarlett 18i20. - Byl přidán ovladač yogafan pro sledování rychlosti otáčení ventilátoru na noteboocích Lenovo Yoga, Legion a IdeaPad.
- Byla přidána podpora ARM platforem, SoC a zařízení: Qualcomm Glymur, Qualcomm Mahua, Qualcomm Eliza, Qualcomm IPQ5210, Qualcomm apq8084 a ipq806x, Axis ARTPEC-9, ARM Zena, ARM corstone-1000-a320, Microchip LAN9691, Microchip PIC64GX, Rockchip RV1103B, Renesas RZ/G3L, NXP S32N79.
- Byla odstraněna podpora kontrolerů AHCI SATA a PCIe používaných v SoC Baikal-T1, stejně jako ovladačů časovače, paměti, physmap, sběrnice, hwmon, dwc a bt1-rom. Důvodem odstranění je nedostatečné údržby a nedokončená integrace součástí platformy Baikal, jejíž výroba v RF byla ukončena v listopadu 2025.
- Bylo odstraněno 12 ovladačů pro Ethernet zařízení s rozhraními ISA a PCMCIA, vyráběných před rokem 2002, pro které se nenašli uživatelé používající je v pracovních systémech. Také z jádra byly vyloučeny
podsystem ISDN, implementace protokolů AX.25, CAIF a Bluetooth CMTP (Common ISDN Application Programming Interface Message Transport Protocol), ovladače yellowfin (Yellowfin Gigabit-NIC), hamachi (Hamachi GNIC-II), hamradio (Amateur Radio), inport a logibm (busmouse). Důvodem odstranění je nedostatek aktivních správců na pozadí rostoucího počtu zjištěných chyb pomocí syzbot a AI nástrojů, které nikdo nemá v úmyslu opravit, a veškerá zátěž na odstranění vážných problémů leží na správcích hlavních síťových subsystémů jádra. Celkem bylo odstraněno více než 140 tisíc řádků kódu.
Zdroj: opennet.ru
