Vydání jádra Linux 7.0

Po dvou měsících vývoje vydal Linus Torvalds jádro. Linux 7.0. Mezi nejvýznamnější změny patří: pravidla pro používání AI asistentů, přesun Rustu do jádra jádra, zlepšení výkonu swapu, povolení režimu PREEMPT_LAZY ve výchozím nastavení, podpora filtrů pro operace io_uring, nový souborový systém Nullfs, framework fserror, nástroje pro monitorování XFS, podpora přemapování v Btrfs, povolení NFS 4.1 ve výchozím nastavení, integrace postkvantového kryptografického algoritmu ML-DSA, aktivace AccECN v síťovém subsystému a počáteční podpora pro WiFi 8.

Číslo 7.0 bylo přiděleno, protože větev 6.x nashromáždila dostatek vydání, aby bylo nutné změnit první číslici čísla verze (verze 6.0 byla původně vydána po verzi 5.19). Změna číslování je provedena z estetických důvodů a je formálním krokem ke zmírnění nepohodlí způsobeného nahromaděním velkého počtu vydání v sérii.

Nová verze obsahuje 15 624 oprav od 2 477 vývojářů s velikostí opravy 56 MB (změny ovlivnily 18 053 ​​souborů, přidaly 704 060 řádků kódu a odstranily 278 132 řádků). Předchozí verze obsahovala 15 657 oprav od 2 237 vývojářů s velikostí opravy 52 MB. Přibližně 51 % všech změn ve verzi 7.0 se týká ovladačů zařízení, přibližně 11 % změn se týká aktualizací kódu specifického pro hardwarové architektury, 14 % se týká síťového zásobníku, 5 % souborových systémů a 3 % interních subsystémů jádra.

Hlavní nové funkce v jádře 7.0 (1, 2, 3):

  • Diskový subsystém, I/O a souborové systémy
    • Byla implementována infrastruktura fserror a bylo přidáno API pro načítání informací o chybách I/O a poškození metadat při práci se soubory. Tato infrastruktura sjednocuje přenos informací o chybách do uživatelského prostoru napříč souborovými systémy prostřednictvím mechanismu fsnotify.
    • XFS byl vylepšen o nové možnosti monitorování stavu souborového systému z uživatelského prostoru. Byla zavedena operace ioctl XFS_IOC_HEALTH_MONITOR, která vrací souborový deskriptor, jenž lze použít k získání informací o selháních souvisejících s poškozením metadat nebo chybami I/O, a také k monitorování změn stavu souborového systému, jako je odpojení a vypnutí. Dále byl zaveden proces na pozadí spravovaný systémem d, xfs_healer, který zpracovává události stavu souborového systému z uživatelského prostoru a v případě potřeby automaticky spouští procedury obnovy.
    • Souborový systém Btrfs přidal experimentální podporu pro strukturu „remap tree“, která by mohla být v budoucnu použita jako mezivrstva během I/O operací. Tato nová funkce v podstatě ukládá staré a nové datové adresy v dodatečné struktuře „remap tree“ po přesunutí dat na disku, namísto aktualizace všech souvisejících struktur. Tyto adresy jsou poté při přístupu k datům nahrazeny. Tento nový přístup je propagován jako spolehlivější a flexibilnější a také zjednoduší budoucí rozšiřování funkčnosti Btrfs.
    • Btrfs implementuje podporu pro přímý I/O v situacích, kdy velikost bloku přesahuje velikost paměťové stránky systému.
    • Je zahrnut nový souborový systém „Nullfs“, který lze použít jako stub pro kořenový souborový systém. Souborový systém Nullfs je vždy prázdný, neobsahuje žádná data a nepodporuje úpravy. Účelem Nullfs je sloužit jako počáteční souborový systém pro zjednodušení procesu spouštění systému. Ostatní souborové systémy jsou poté připojeny nad Nullfs a systémové volání pivot_root() se používá k přepnutí kořenového souborového systému, spíše než k vymazání obsahu initramfs a použití přidruženého kořenového souborového systému.
    • Byla implementována aktualizace informací o čase úpravy souboru v neblokujícím režimu. Dříve volání file_update_time_flags() s příznakem IOCB_NOWAIT vracelo chybu „-EAGAIN“, což bránilo použití operací přímého zápisu v neblokujícím režimu.
    • Podpora pronájmu notifikací byla v souborových systémech přesunuta do samostatné možnosti. Tento mechanismus již není ve výchozím nastavení povolen kvůli problémům se souborovými systémy, které pro něj původně nebyly navrženy. Například 9p a cephfs jej nepodporují.
    • Systém EROFS (Extendable Read-Only File System), určený pro použití na oddílech určených pouze pro čtení, standardně používá kompresní algoritmus LZMA. Volitelně jsou k dispozici algoritmy DEFLATE a Zstandard, které již nejsou označeny jako experimentální. Položky mezipaměti stránek jsou nyní sdíleny mezi identickými soubory v samostatných souborových systémech EROFS.
    • Režim laptop_mode, který šetří energii odkládáním a konsolidací zápisů na pevný disk, čímž se prodlouží doba spánku disku a sníží počet probuzení, byl odstraněn. Tento režim již není relevantní, protože pevné disky byly v moderních mobilních zařízeních nahrazeny disky SSD.
    • Souborový systém F2FS byl migrován tak, aby používal velké folia paměťových stránek.
    • Práce na ovladači NTFS3, vyvinutém společností Paragon Software, byla obnovena. Byla přidána podpora pro operace se soubory založené na iomap, implementovány možnosti SEEK_DATA/SEEK_HOLE v příkazu llseek a přidán režim delalloc pro odloženou alokaci bloků. Mezitím v únoru mailing list vývojářů jádra schválil zahrnutí nové implementace NTFS, ntfsplus, která má nahradit NTFS3, do budoucí verze jádra.
    • Ve výchozím nastavení je během sestavení povolen protokol NFS verze 4.1 (CONFIG_NFS_V4_1). Exporty NFS specializovaných pseudo-souborových systémů, jako jsou pidfs a nsfs, jsou blokovány. NFSD implementuje experimentální funkci pro používání POSIX ACL a přidává podporu pro dynamickou změnu fondu vláken na základě zatížení.
  • Paměťové a systémové služby
    • Byla schválena oficiální pravidla pro používání AI asistentů a začlenění automaticky generovaného obsahu do jádra. Při odesílání vygenerovaného kódu je nutné jej označit štítkem „Assisted-by“ s uvedením použitého AI asistenta. AI asistentům je zakázáno přidávat štítek „Signed-off-by“ – osoba odesílající záplatu je považována za jejího autora, je zodpovědná za odeslanou změnu a ručí za její kvalitu. Vývojáři jsou povinni ručně zkontrolovat kód vygenerovaný AI a ověřit, zda výsledek splňuje licenční požadavky.
    • Podpora Rustu byla přesunuta z experimentálních funkcí do základních funkcí jádra. Podpora Rustu není ve výchozím nastavení povolena a nezahrnuje Rust jako povinnou závislost pro sestavení jádra.
    • Mechanismus Swap Table byl integrován do jádra, což zlepšuje výkon swapu. Tohoto vylepšení je dosaženo snížením konfliktů o swap cache, efektivnějším vyhledáváním v cache a snížením fragmentace. Backend založený na Swap Table se používá pro swap cache místo backendu XArray a výsledkem bylo 22% zvýšení počtu zpracovaných požadavků v redis-benchmarku s BGSAVE.
    • Byla přidána podpora pro rozšíření Thread Safety Analysis, představené v Clang 22, které umožňuje detekci potenciálních soubojových podmínek a chyb způsobených nesprávným získáním zámků během kompilace. Rozšíření nabízí řadu atributů, jako například GUARDED_BY(…), REQUIRES(…), RELEASE(…) a ACQUIRE(…), které umožňují označit funkce pokryté zámky a oddělit rozsahy zámků (definovat kontext). Ověřování správného použití synchronizačních primitiv, jako jsou mutexy, během kompilace se provádí na základě aktivity nebo neaktivity přidruženého kontextu.
    • Do systémového volání open_tree byl přidán příznak OPEN_TREE_NAMESPACE, který zjednodušuje nastavení izolovaných kontejnerů a urychluje jejich spouštění na systémech s velkým počtem přípojných bodů. Podobně jako u OPEN_TREE_CLONE nový příznak kopíruje pouze zadaný přípojný strom, ale místo lokálního souborového deskriptoru vrací souborový deskriptor v novém jmenném prostoru přípojného bodu, ve kterém je kopírovaný strom připojen přes kopii skutečného kořenového souborového systému. Příznak OPEN_TREE_NAMESPACE je užitečný, aby se zabránilo samostatnému spuštění operací unshare(CLONE_NEWNS) a pivot_root() používaných během vytváření kontejneru.
    • Do systémového volání rseq byl přidán mechanismus prodlužování časových úseků, který umožňuje alokovat dodatečný čas CPU pro nepřerušované provádění kritické sekce. Cílem je zabránit plánovači úloh v přerušení kritické sekce s existujícím zámkem, což by vedlo k přenosu řízení na jiná vlákna využívající daný zdroj, zatímco zámek zůstává. Prodloužení časových úseků se provádí bez dodatečných režijních nákladů, ale také bez striktních záruk poskytovaných plnou kontrolou priorit.
    • Pro architektury arm64, loongarch, powerpc, riscv, s390 a x86 byl výchozí režim preempce plánovače změněn z PREEMPT_NONE na PREEMPT_LAZY. Počet možných režimů byl snížen ze čtyř na dva: PREEMPT_FULL a PREEMPT_LAZY (režimy PREEMPT_NONE a PREEMPT_VOLUNTARY jsou zachovány pouze pro architektury, které nepodporují PREEMPT_FULL a PREEMPT_LAZY). Režim PREEMPT_LAZY používá model plné preempce (PREEMPT_FULL) pro úlohy v reálném čase (RR/FIFO/DEADLINE), ale odkládá preempci běžných úloh (SCHED_NORMAL) až do hranice taktů. Zavedené zpoždění snižuje počet vyřazení držitelů zámků, což umožňuje přiblížit se výkonu konfigurací používajících model dobrovolné preempce, tj. PREEMPT_LAZY umožňuje zachovat plné možnosti preempce pro úlohy v reálném čase, ale minimalizuje snížení výkonu pro běžné úlohy.

      Povolení PREEMPT_LAZY vedlo k vážnému zhoršení výkonu PostgreSQL na systémech ARM64 na polovinu. Pro řešení tohoto snížení výkonu se vývojářům PostgreSQL doporučuje povolit možnost PR_RSEQ_SLICE_EXTENSION, aby se snížila pravděpodobnost vyřazení držitele zámku.

    • Pokračování migrace změn z verze Rust for branchLinuxSouvisí s používáním Rustu jako druhého jazyka pro vývoj ovladačů a modulů jádra. Díky dříve integrované knihovně „syn“, která zjednodušuje psaní složitých maker, jsme byli schopni zmenšit velikost kódu Rustu v jádře zjednodušením definic stávajících procedurálních maker. Možnosti knihoven jádra, maker a pin-init byly rozšířeny.
    • Asynchronní I/O systém io_uring nyní nabízí možnost používat necyklické fronty pro odesílání, které jsou efektivněji ukládány do mezipaměti v situacích, kdy je požadavek dokončen před návratem systémového volání.
    • V subsystému eBPF používá mechanismus BTF (BPF Type Format), který poskytuje informace pro kontrolu typů v pseudokódu BPF, binární vyhledávání k nalezení ladicích informací, čímž se zvyšuje efektivita načítání programů BPF. eBPF nyní podporuje implicitní argumenty při volání kfunc (funkce jádra dostupné pro použití v programech BPF), definované příznakem KF_IMPLICIT_ARGS.
    • Kód podporující počáteční RAM disk (initrd) založený na linuxrc, který byl dlouho zastaralý, byl odstraněn. Zbývající implementace initrd jsou plánovány k odstranění v roce 2027. Místo initrd by se měl používat Initramfs (rozdíl je v tom, že initrd umístí počáteční bootovací prostředí do obrazu disku, zatímco initramfs jej umístí do souborového systému).
    • Blokové zařízení zram, používané pro komprimované swapovací úložiště v paměti, změnilo logiku pro zpracování komprimovaných paměťových stránek při volitelném přesunu dat do trvalého úložiště, když je dostupná RAM plná. Dříve byly paměťové stránky před zápisem do fyzického úložiště dekomprimovány, ale nyní jsou uloženy v komprimované podobě, což snižuje zatížení procesoru a šetří energii při provozu na baterii.
    • Nástroj timerlat, určený k měření zpoždění při spuštění plánovače úloh, byl aktualizován o volbu „--bpf-action“ pro spouštění BPF programů při překročení zadané prahové hodnoty.
    • Systém trasování ftrace byl aktualizován o nastavení „bitmask-list“ pro zobrazení bitových masek v čitelném formátu (jako seznam bitů, nikoli hexadecimálních hodnot). Tracefs nyní podporuje auditování filtrů a triggerů. Byl přidán příkaz „perf sched stats“ pro shromažďování a zobrazování statistik plánovače úloh.
    • Přidány možnosti sestavení LOGO_LINUX_MONO_FILE, LOGO_LINUX_VGA16_FILE a LOGO_LINUX_CLUT224_FILE pro definování souboru s obrázkem loga, který se zobrazí při spuštění jádra místo standardního loga tučňáka Tux.
  • Virtualizace a bezpečnost
    • Asynchronní I/O systém io_uring nyní podporuje připojení BPF programů s filtry, které řídí možnosti specifických operací SQE (Submission Queue Entry) (podobně jako systémová volání v io_uring). Tato přidaná funkce je analogická s filtry systémových volání. Filtry lze připojit ke konkrétním úlohám a dědí se při forkování jiných procesů po volání fork(). Pokud jsou filtry aktivní, další filtry mohou pouze připojit další omezení, ale ne zakázat stávající. Tato funkce umožní blokovacím metodám obejít filtrování systémových volání v sandboxových prostředích, která se spoléhají na provádění podobných operací poskytovaných io_uring namísto systémových volání.
    • Na jihovýchoděLinux Přidána možnost řízení přístupu k tokenům BPF, což umožňuje neprivilegovaným procesům provádět některé privilegované operace s BPF, jako je načítání programů BPF do jádra a vytváření mapových struktur.
    • Byla přidána podpora pro algoritmus generování digitálního podpisu ML-DSA (CRYSTALS-Dilithium), který je založen na teorii mřížek a je odolný vůči útokům hrubou silou na kvantovém počítači. ML-DSA lze nyní použít k ověřování modulů jádra.
    • Možnost používat schémata generování digitálních podpisů s algoritmem SHA-1 k certifikaci modulů jádra byla odstraněna (podpora pro načítání podepsaných modulů je zachována).
    • Do auditních záznamů NETFILTER_PKT byla přidána pole „sport“ a „dport“ pro kontrolu čísel síťových portů namísto pouhého IP adresy.
    • Pro systémy s architekturou RISC-V byla implementována podpora rozšíření Zicfiss a Zicfilp, která poskytují hardwarové možnosti pro aplikaci ochrany CFI (Control Flow Integrity), jež blokuje narušení normálního pořadí provádění instrukcí (řídicího toku) v důsledku exploitů, které modifikují ukazatele funkcí uložené v paměti.
    • V hypervisoru KVM Byla implementována možnost přenosu informací o podpoře rozšíření ERAPS (Enhanced Return Address Predictor Security) procesorem do hostovaných systémů. To umožňuje vyhnout se některým operacím resetování stavu CPU, když hostovaný systém vrátí řízení hostiteli. Dále byla přidána podpora pro přiřazení jednotek pro monitorování výkonu (PMU) hostovaným systémům, což zlepšuje přesnost profilování ve srovnání s použitím emulovaných PMU.
    • Ovladač hypervizoru Hyper-V nyní podporuje rozhraní debugfs pro zobrazení statistik hypervizoru.
  • Síťový subsystém
    • Rozšíření AccECN (Accurate Explicit Congestion Notification) je ve výchozím nastavení povoleno. Implementuje vylepšenou verzi rozšíření ECN, která umožňuje hostitelům označovat IP pakety v případě přetížení namísto jejich zahazování. To umožňuje detekovat nástup přetížení na komunikačních kanálech bez ztráty paketů. Původní rozšíření ECN má omezení, že umožňuje vyvolat pouze jeden signál přetížení během jednoho TCP round-tripu (RTT, Round-Trip Time, odeslání požadavku a přijetí odpovědi). AccECN toto omezení odstraňuje a umožňuje příjemci odesílat odesílateli v záhlaví TCP paketu více než jeden signál přetížení. Algoritmy pro řízení přetížení mohou tyto informace využít k přesnější reakci na přetížení a zabránit náhlému snížení rychlosti paketů, když dojde k menšímu přetížení.
    • Implementace algoritmu pro správu front sítě Cake byla vylepšena tak, aby zvládala více front a rozložila zátěž mezi více jader CPU. Algoritmus CAKE se používá ke snížení negativního dopadu mezilehlého ukládání paketů do vyrovnávací paměti na zařízení edge network a jeho cílem je dosáhnout maximální propustnosti a minimální latence, a to i na pomalých komunikačních spojích.
    • Do soketů VSOCK používaných ke komunikaci s virtuálními počítači byla přidána podpora pro síťové jmenné prostory.
    • Přidána počáteční implementace budoucího standardu WiFi 8 (802.11bn, Ultra High Reliability» WiFi).
    • Přidány optimalizace, které zvýšily výkon zpracování příchozích UDP paketů o 12 % při zátěžovém testování v síti s rychlostí 100 Gb/s.
  • Оборудование
    • Ovladač AMDGPU implementuje podporu pro IP bloky používané v nových grafických procesorech AMD, jako jsou 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.
    • Ovladač Nouveau vylepšil správu frekvencí na systémech Tegra 186+.
    • Ovladač i915 nyní zahrnuje počáteční podporu pro IP adresu displeje Xe3p_LPD používanou v procesorech Intel Nova Lake-P.
    • Pokračovaly práce na ovladači Xe DRM (Direct Rendering Manager) pro GPU založené na architektuře Intel Xe, která se používá v grafických kartách řady Intel Arc a integrovaných grafických kartách, počínaje procesory Tiger Lake. Byl přidán režim Multi-Queue. Byly přidány komponenty nezbytné pro diagnostiku zaseknutí GPU v Mesa. Byla přidána podpora mechanismu MERT pro správu přístupu k paměti GPU.
    • Pokračovali jsme v integraci komponent ovladače Nova pro grafické karty NVIDIA vybavené firmwarem GSP používaným od řady NVIDIA GeForce RTX 2000 založené na mikroarchitektuře Turing. Ovladač je napsán v jazyce Rust. Tato nová verze se připravuje na podporu grafických karet založených na mikroarchitektuře Turing a obsahuje různé interní změny.
    • Přidána podpora pro řadiče a periferní zařízení s vícekanálovým rozhraním SPI (Serial Peripheral Interface), které umožňuje přenos dat v několika paralelních proudech.
    • Přidán ovladač pro kombinované konektory typu C používané na zařízeních založených na čipech Apple Silicon a kombinujících rozhraní USB3, DP-AltMode a Thunderbolt/USB4.
    • Přidána podpora zvukových subsystémů čipů Tegra238, Minisforum V3 SE, iBasso DC04U, Intel Nova Lake, Nova Lake S a Focusrite Forte.
    • Přidána podpora pro desky ARM, SoC a zařízení: 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
    • Přidána podpora pro chytré telefony a tablety: Fairphone Gen 6 (SoC Qualcomm Milos/Snapdragon 7s Gen 3), Pixel 3/3 xl, Microsoft Surface Pro 11.

Zároveň Latinskoamerická nadace pro svobodný software vytvořila verzi zcela svobodného jádra 7.0 - Linux-libre 7.0-gnu, očištěno od prvků firmwaru a ovladačů obsahujících nesvobodné komponenty nebo části kódu s omezeným rozsahem platnosti výrobcem. Verze 7.0 obsahuje čištění blobů pro ovladač iwlwifi. Čisticí kód byl aktualizován pro ovladače amdgpu, adreno, TI PRUeth, air_en8811h, ath12k, TI VPE, rtw8852b, rt1320, rt5575 SPI, tas2783 a Intel catpt. Názvy blobů v souborech devicetree (dts) pro čipy ARM byly vyčištěny.

Zdroj: opennet.ru

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster