
Po dvou měsících vývoje Linus Torvalds představil jádrný release Linux 7.1Mezi nejvýraznějšími změnami patří: nový ovladač ntfsplus, první fáze ukončení podpory CPU i486, odstranění starých ethernetových adaptérů, zrušení protokolů ISDN a AX.25, zapnutí mechanismu Intel FRED ve výchozím nastavení, podpora BPF handlerů v io_uring, optimalizace subsystému swapu, podpora subplá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í výkonového režimu v ovladači amd-pstate, podpora xattr pro Unix sockety.
Do nové verze bylo přijato 17275 oprav od 2589 vývojářů, velikost patche – 57 MB (změny se dotkly 13528 souborů, přidáno 751785 řádků kódu, odstraněno 405916 řádků). V minulém vydání bylo 15624 oprav od 2477 vývojářů, velikost patche – 56 MB. Přibližně 41 % všech změn v 7.1 se týká ovladačů zařízení, asi 12 % změn se vztahuje na aktualizaci kódu specifického pro hardwarové architektury, 14 % souvisí se síťovým stackem, 5 % s filesystémy a 3 % s interními subsystémy jádra.
Hlavní novinky v jádře 7.1 (kernelnewbies.org, lwn.net, opennet):
Diskový subsystém, vstup/výstup a souborové systémy
- Byla přijata nová implementace souborového systému NTFS – ntfsplus, založeného na kódu odstraněného z jádra klasického ovladače ntfs. Starý ovladač byl přepracován, rozšířen o možnost zápisu dat a přizpůsoben pro podporu moderních funkcí, jako je použití folio stránek paměti (folios) místo struktury buffer_head. V novém ovladači byla implementována odložená alokace bloků, což umožnilo dosáhnout vysokého výkonu zápisu a snížení fragmentace. Pro buffered operace zápisu/čtení, přímý vstup/výstup, mapování extenzí a operace stránkového zápisu/čtení byla využita knihovna iomap. V testech iozone se ukázal ovladač ntfsplus 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 zahrnuje byly provedeny opravy a drobná vylepšení.
- Byla přidána podpora pro generaci a ověřování dat integrity T10 (deepwiki.com) na úrovni souborového systému, nikoli blokového zařízení, což umožňuje zvýšení výkonu čtecích operací.
- V ovladači blokových zařízení ublk, což umožňuje přesunout specifickou logiku na stranu procesu v uživatelském prostoru, byla přidána podpora vstupu/výstupu přes sdílenou paměť 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 řízení režimu Single User a byla implementována příkaz STACK_RESET.
- V Btrfs byla vyhlášena stabilní podpora ioctl operace shutdown, která umožňuje převést FS do stavu, ve kterém 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í pomocí volání fallocate().
- V FS 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 možnost FSMOUNT_NAMESPACE, která vytváří nový prostor názvů pro montovanou souborovou systém. Do systémových volání clone3() a unshare() byly přidány flagy pro vracení nového prostoru názvů bodů montování, obsahujícího pouze připojenou prázdnou FS-záplatu založenou na nullfs, ovladač fs-dax s FS rozhraním k DAX (Direct Access) zařízením.
- Na NFS serveru byla přidána ochrana proti útokům na hádání identifikátorů souborových popisovačů, realizovaná prostřednictvím podepisování popisovačů kryptografickým podpisem. Ochrana se aktivuje prostřednictvím možnosti montování sign_fh.
- Přidáno symbolický ovladač fs-dax, poskytující rozhraní pro interakci s zařízeními DAX (kernel.org) (Direct Access), podporující provoz obcházející stránkovou mezipaměť. Uvedené rozhraní je nezbytné pro integraci do jádra souborového systému famfs, umístěná v operační paměti.
- V souborovém systému Ceph realizováno sběr metrik o vstupu/výstupu vázaných na podsystémy.
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 provozu na procesorech i486 byl zatím ponechán v jádře, ale sestavení pro takové systémy nyní vyžaduje aplikaci patchů na sestavovací soubory. Důvody pro odstranění podpory procesorů i486 jsou dány snahou zbavit jádro komplikovaného kódu, emulujícího některé hardwarové operace, jako je CX8 (porovnat a vyměnit 8 bytů) a TSC (čítač cyklů CPU, používající se v plánovači úloh).
- V ovladači amd-pstate, který se používá ke správě spotřeby energie na systémech s procesory AMD, bylo realizováno se dynamicky přepínají nastavení výkonu a mění chování řízení napájení v závislosti na připojení k síti nebo používání baterie. Při připojení k síti je nyní aktivován režim výkonu, zatímco při provozu na baterii je zvolen režim vyváženého výkonu.
- Ve výchozím nastavení je aktivován mechanizmus 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 zajištěno návratem 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 odděleným zpracováním příjmu události v kontextu jádra a uživatelského kontextu, ochranou proti vnořenému provádění NMI a uložením všech registrů CPU souvisejících s výjimkami do rozšířeného zásobníku.
- V subsystému perf byla přidána je podporována jednotka pro sledování výkonu paměti (PMU — Performance Monitoring Unit), která se používá v SoC NVIDIA Tegra410.
- Bylo 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 nutnosti předchozího vypnutí ochrany. PAN (arm.com) (Privileged Access Never).
- Na systémech s procesory ARM byla vylepšena podpora rozšíření architektury sady instrukcí MPAM (Memory System Resource Partitioning and Monitoring) a byla přidána možnost jejího využití v uživatelském prostoru pro správu prostředků prostřednictvím mechanizmu resctrl. MPAM zajišťuje označení každého přístupu k paměti identifikátorem sekce (PARTID, Partition ID) a identifikátorem skupiny sledování (PMG, Monitoring Group ID). Vázáním na PARTID lze omezit spotřebu prostředků, jako je šířka pásma paměti nebo velikost cache, aby žádná skupina úloh nezabírala všechny prostředky. V kontextu sledování lze kombinaci PMG a PARTID využít k monitorování spotřeby prostředků paměti při určitých typech zátěže.
- Byla přidána je nyní k dispozici možnost využití 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é flagy: CLONE_NNP — zakázání získávání nových privilegií v vytvořeném procesu; CLONE_AUTOREAP — automatické ukončení procesu namísto jeho přeměny na zombie proces do doby, než rodičovský proces provede funkci wait(); CLONE_PIDFD_AUTOKILL — ukončení podřízeného procesu při uzavření s ním spojeného deskriptora pidfd (například při ukončení rodičovského procesu).
- Pro každý modul jádra byl do adresáře /sys/module přidán soubor import_ns, který obsahuje seznam importovaných jmenných prostorů (symbol namespace).
- Do systému asynchronního vstupu/výstupu io_uring byla přidána podpora použití subsystému BPF pro vytváření zpracovatelů. Například je možné nahradit hlavní cyklus přepínače programem BPF.
- V podsystemu BPF modernizován analýzu využití zásobníku, což výrazně urychlilo kontrolu mnoha BPF programů ověřovatelem.
- Za účelem optimalizace výkonu přepsána subsystema hrtimer (high resolution timer). Plánovač úloh nyní může používat vysoce přesné časovače bez ztráty výkonu na rozdíl od méně přesných časovačů.
- Pokračuje přenesení změn z větve Rust-for-Linux, souvisejících s použitím jazyka Rust jako druhého jazyka pro vývoj ovladačů a modulů jádra (podpora Rust není ve výchozím nastavení aktivní a nevede k tomu, aby Rust byl povinnou závislostí pro sestavení jádra). Až do verze 1.85 (dodávána v Debianu 13) byly zvýšeny požadavky na verzi Rust potřebné pro sestavení komponent jádra. Přidána experimentální Kconfig volba CONFIG_RUST_INLINE_HELPERS pro vkládání C timeoutů 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.
- V mechanismu SCHED_EXT, který umožňuje použití BPF pro vytváření plánovačů CPU, byla přidána počáteční možnost vytváření vnořených plánovačů (sub-scheduler), pomocí kterých může mít každá cgroup vlastní plánovač úloh.
- Pokračovala optimalizace subsystému swap. Byla odstraněna stará struktura swap_map, nahrazená mechanismem „Swap Table“. Změna umožnila zvýšit výkon a snížit spotřebu paměti v subsystému swap.
- Do subsystému DAMON (Data Access MONitor), která sleduje přístup procesu k datům v operační paměti (například lze zjistit, ke kterým oblastem paměti měl proces přístup, a které oblasti paměti zůstaly nevyužité), byla přidána podpora různých algoritmů automatického tuning kvót.
- V subsystému sledování byla implementována koncept externích kruhových bufferů, který umožňuje získávat sledovací data z virtuálních strojů. Tato funkce je aktivována v hypervizorech KVM a nVHE pro přenos sledovacích dat z hostitelského systému na hostitele.
- Do subsystému RV (kernel.org) (Runtime Verification), určené pro ověřování správnosti fungování vysoce spolehlivých systémů, byly přidány komponenty sledová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 nastavena možnost PROC_MEM_FORCE_PTRACE, která umožňuje obcházet práva přístupu k paměti procesu prostřednictvím souboru /proc/PID/mem pouze pro procesy, které použijí pro ladění systémové volání ptrace().
- Přidáno nová sada hooků pro moduly LSM (Linux Security Module), která usnadňuje implementaci politik pro zásobníkové souborové systémy, jako je overlayfs. V LSM také přidán hook pro správu přístupu k Unix-socketům, který je využit v LSM-modulu Landlock pro přiřazování přístupových politik k Unix-socketům.
- Do vestavěné kryptografické knihovny lib/crypto, poskytující jednodušší a rychlejší funkce než v tradičním crypto API, byla přidána podpora algoritmů AES-CMAC, AES-XCBC-MAC, AES-CBC-MAC, GHASH a SM3. Byly přidány dokumentace prostřednictvím lib/crypto.
- Byl implementován režim pKVM (Protected KVM) pro přísnou izolaci anonymní paměti s využitím rozšíření virtualizace 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 implementována podpora rozšířených atributů souborů (xattr) user.*. Mezi aplikace patří vystavení značek prostřednictvím rozšířených atributů na Unix-sockety, které se používají pro IPC Varlink, s cílem jejich vyčlenění z celkového množství pro inspekci a ladění IPC pomocí programů BPF. V systemd-journald se rozšířené atributy zamýšlí používat pro určení formátu logu ve vazbě 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čtovou hodnotou s tím, že zejména částečně poškozená audio a video data mohou být obnovena na úrovni kodeku. Protokol byl odstraněn, protože ho nikdo nepoužívá.
- Byla odstraněna možnost sestavení IPv6 zásobníku ve formě jádrového modulu, který se prakticky nepoužíval (IPv6 se buď vkládá do jádra, nebo je zcela vypnut), ale ztěžoval údržbu, protože při sestavení IPv6 jako modul jádra (CONFIG_IPV6=m) muselo mnoho subsystémů přidávat zbytečné obslužné rutiny pro případ vyložení modulu IPv6.
Hardware
- V ovladači AMDGPU bylo zapnuto nový grafický 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 práce na drm-ovladači (Direct Rendering Manager) Xe pro GPU založené na architektuře Intel Xe, které se používají ve grafických kartách Intel rodiny Arc a integrované grafice, počínaje procesory Tiger Lake. Přidána podpora grafického subsystému procesorů Intel Nova Lake-P. Byly implementovány vyčistitelné načítací 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.
- Přidáno DRM-ovladač corebootdrm pro výstup grafiky přes framebuffer firmware na bázi CoreBoot.
- Byla přidána podpora zvukových ASoC AMD RPL DMIC, Cirrus Logic CS42L43, CS47L47, NVIDIA CPCAP a WM8962. Zlepšena podpora zvukových zařízení s USB rozhraním: Huawei Headset, Focusrite Novation, MV-Silicon, Studio 1824, Arturia AF16Rig, Hotone Audio, Feaulle Rainbow, PreSonus AudioBox, Moondrop Ju Jiu, Scarlett 18i20.
- Přidáno ovladač yogafan pro sledování rychlosti otáčení ventilátoru na noteboocích Lenovo Yoga, Legion a IdeaPad.
- Byla přidána podpora platforem ARM, 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 v SoC Baikal-T1 používaných řadičů AHCI SATA a PCIe, jakož i ovladačů časovače, paměti, physmap, sběrnice, hwmon, dwc a bt1-rom. Důvodem pro odstranění je nedostatek údržby a nedokončená integrace komponent platformy Baikal do jádra, jejichž výroba v RF byla zastavena v listopadu 2025.
- Odstraněno 12 ovladačů pro Ethernet zařízení s rozhraními ISA a PCMCIA, vyráběnými 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 subsystémy 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í byla absence aktivních správců na pozadí zvyšujícího se počtu chyb zjištěných pomocí syzbot a AI nástrojů, které nikdo nechce opravovat, a veškerá zátěž na odstranění závažných problémů padá na správce hlavních síťových subsystémů jádra. Celkem bylo odstraněno více než 140 tisíc řádků kódu.
Zdroj: linux.org.ru
