Vydání jádra Linux 5.19

Po dvou měsících vývoje Linus Torvalds představil vydání jádra Linux 5.19. Mezi nejvýznamnější změny patří: podpora procesorové architektury LoongArch, integrace patchů „BIG TCP“, režim „on-demand“ v fscache, odstranění kódu pro podporu formátu a.out, možnost použití ZSTD pro kompresi firmwaru, rozhraní pro řízení vyřazování paměti z prostoru uživatele, zvýšení spolehlivosti a výkonu generátoru pseudonáhodných čísel, podpora rozšíření Intel IFS (In-Field Scan), AMD SEV-SNP (Secure Nested Paging), Intel TDX (Trusted Domain Extensions) a ARM SME (Scalable Matrix Extension).

V oznámení Linus uvedl, že pravděpodobně příštímu vydání jádra bude přiřazeno číslo 6.0, protože v větvi 5.x se nahromadilo dostatečné množství vydání, aby došlo ke změně prvního čísla v čísle verze. Změna číslování se provádí z estetických důvodů a je formálním krokem, který odstraňuje nepohodlí z nahromadění velkého počtu vydání v sérii.

Linus také zmínil, že pro vytvoření vydání použil notebook Apple na bázi architektury ARM64 (Apple Silicon) s Linuxovým prostředím založeným na distribuci Asahi Linux. Toto není Linusova hlavní pracovní stanice, ale tuto platformu využil, aby otestoval její použitelnost pro práci na jádru a ujistil se, že bude moci vytvářet vydání jádra na cestách, když má po ruce lehký notebook. Předtím, před mnoha lety, Linus měl zkušenosti s použitím zařízení Apple pro vývoj - kdysi používal počítač na bázi CPU ppc970 a notebook Macbook Air.

V nové verzi bylo přijato 16401 oprav od 2190 vývojářů (v předchozím vydání bylo 16206 oprav od 2127 vývojářů), velikost patche je 90 MB (změny se dotkly 13847 souborů, přidáno 1149456 řádků kódu, odstraněno 349177 řádků). Přibližně 39 % všech předložených změn v 5.19 se týká ovladačů zařízení, asi 21 % změn souvisí s aktualizací kódu specifického pro hardwarové architektury, 11 % souvisí se síťovým zásobníkem, 4 % - se souborovými systémy a 3 % s vnitřními subsystémy jádra.

Hlavní novinky v jádře 5.19:

  • Diskový subsystém, vstup/výstup a souborové systémy
    • Systém souborů EROFS (Enhanced Read-Only File System), určený pro použití na oddílech dostupných v režimu pouze pro čtení, byl převeden na použití subsystému fscache, který zajišťuje caching dat. Tato změna umožnila výrazně zvýšit výkon systémů, ve kterých je spuštěno velké množství kontejnerů z obrazu založeného na EROFS.
    • Do subsystému fscache byl přidán režim čtení na požádání („on-demand“), který je využíván pro optimalizaci EROFS. Nový režim umožňuje organizaci caching čtení z obrazů FS, které se nacházejí v místním systému. Na rozdíl od původně dostupného režimu práce, zaměřeného na caching v místním souborovém systému dat přenášených přes síťové souborové systémy, režim „on-demand“ deleguje funkce vyhledávání dat a jejich zápisu do cache na samostatný proces na pozadí prováděný v uživatelském prostoru.
    • V XFS byla zajištěna možnost ukládání miliard rozšířených atributů v i-node. Maximální počet extents pro jeden soubor byl zvýšen z 4 miliard na 247. Byl implementován režim pro atomar обновления сразу нескольких расширенных атрибутов файла.
    • V souborovém systému Btrfs byla optimalizována práce s zámky, což vedlo k nárůstu výkonu přibližně o 7 % při přímém zápisu v režimu nowait. Výkon operací v režimu NOCOW (bez copy-on-write) se zvýšil přibližně o 3 %. Byla snížena zátěž na stránkovou cache při práci s příkazem „send“. Minimální velikost podstránek byla snížena z 64K na 4K (lze použít podstránky menší než velikost stránek jádra). Bylo provedeno převedení z použití základního stromu (radix tree) na algoritmus XArrays.
    • Do NFS serveru byl přidán režim prodloužení uchování stavu zámku, který byl nastaven klientem, který přestal odpovídat na požadavky. Nový režim umožňuje zdržet vyčištění zámku až na 24 hodin, pokud jiný klient nepožádá o konkurenční zámek. Ve standardním režimu je zámek vyčištěn 90 sekund po tom, co klient přestal odpovídat.
    • V subsystému sledování událostí ve FS fanotify byl implementován příznak FAN_MARK_EVICTABLE, pomocí kterého lze vypnout připínání cílových i-node v cache, například pro ignorování podvrstvy bez připínání jejich částí v cache.
    • Do ovladače systému souborů FAT32 byla přidána podpora pro získávání informací o čase vytvoření souboru přes systémový volání statx se realizací efektivnější a funkčnější varianty stat(), která vrací rozšířené informace o souboru.
    • Byly provedeny významné optimalizace v ovladači exFAT, týkající se zajištění současného čištění skupiny sektorů v aktivním režimu 'dirsync', místo sekvenčního vymazávání po sektorech. Díky snížení počtu požadavků na bloky po provedení optimalizace se výkon při vytváření velkého počtu adresářů na SD kartě zvýšil o více než 73-85 % v závislosti na velikosti clusters.
    • Do jádra bylo zahrnuto první opravné aktualizace ovladače ntfs3. Od doby, kdy byl ntfs3 zařazen do jádra 5.15 v říjnu loňského roku, nebyl ovladač aktualizován a vývojáři ztratili kontakt, ale nyní vývojáři obnovili zveřejňování změn. Ve navržených patchech byly opraveny chyby vedoucí k únikům paměti a haváriím, vyřešeny problémy s prováděním xfstests, byla vykonána údržba nepoužívaného kódu a opraveny překlepy.
    • Pro OverlayFS byla zavedena možnost mapování identifikátorů uživatelů připojených souborových systémů, používané pro přiřazení souborů konkrétního uživatele na připojené cizí části s jiným uživatelem v aktuálním systému.
  • Paměť a systémové služby
    • Byla přidána počáteční podpora architektury instrukčního setu LoongArch, používané v procesorech Loongson 3 5000 a implementující nový RISC ISA, podobný MIPS a RISC-V. Architektura LoongArch je k dispozici ve třech variantách: zjednodušené 32bitové (LA32R), běžné 32bitové (LA32S) a 64bitové (LA64).
    • Byl odstraněn kód pro podporu formátu spustitelných souborů a.out, který byl převeden do kategorie zastaralých ve vydání 5.1. Formát a.out se už dlouho nepoužívá na systémech s Linuxem a generace a.out souborů není podporována moderními nástroji v konfiguracích pro Linux ve výchozím nastavení. Načítací program pro soubory a.out může být realizován zcela v uživatelském prostoru.
    • Dohled nad bootovacími možnostmi specifickými pro architekturu x86 byla ukončena: nosep, nosmap, nosmep, noexec a noclflush.
    • Byla ukončena podpora zastaralé architektury CPU h8300 (Renesas H8/300), která je dlouho bez údržby.
    • Byly rozšířeny možnosti související s reakcí na detekci rozdělených zámků („split lock“), které vznikají při přístupu k nevyrovnaným datům v paměti, protože při provádění atomární instrukce data překračují dvě linie CPU cache. Takové zámky vedou k výraznému poklesu výkonu. Pokud dříve jádro jako výchozí upozorňovalo na proces, který zámek způsobil, nyní bude problémový proces navíc zpomalen, aby se uchoval výkon zbytku systému.
    • Byla přidána podpora mechanismu IFS (In-Field Scan) implementovaného v procesorech Intel, který umožňuje spouštění nízkoúrovňových diagnostických testů CPU schopných odhalit problémy, které nejsou určeny standardními prostředky na základě kódů pro opravu chyb (ECC) nebo parity. Prováděné testy jsou navrženy jako spustitelný firmware, uspořádaný podobně jako aktualizace mikrokódu. Výsledky testování jsou k dispozici prostřednictvím sysfs.
    • Byla přidána možnost vložení souboru bootconfig do jádra, což umožňuje definovat parametry funkce jádra prostřednictvím souboru s nastavením vedle voleb příkazového řádku. Vložení se provádí pomocí možnosti sestavení ‘CONFIG_BOOT_CONFIG_EMBED_FILE=„/PATH/TO/BOOTCONFIG/FILE“‘. Dříve byl bootconfig určen prostřednictvím připojení k obrazu initrd. Vložení do jádra umožňuje používat bootconfig v konfiguracích bez initrd.
    • Byla implementována možnost načítání firmwaru, komprimovaného pomocí algoritmu Zstandard. Do sysfs byla přidána sada ovládacích souborů /sys/class/firmware/*, která umožňuje zahájit načítání firmwaru z uživatelského prostoru.
    • V rozhraní asynchronního vstupu/výstupu io_uring byl navržen nový příznak IORING_RECVSEND_POLL_FIRST, při jehož nastavení bude síťová operace nejprve předána k zpracování pomocí polling, což může ušetřit zdroje v situacích, kdy je přípustné zpracování operace s určitým zpožděním. Do io_uring byla také přidána podpora systémového volání socket(), navržené nové příznaky pro zjednodušení správy souborových popisovačů, byl přidán režim „multi-shot“ pro příjem v volání accept() více spojení najednou, přidány operace pro průchody příkazů NVMe přímo do zařízení.
    • Pro architekturu Xtensa byla zajištěna podpora ladicího nástroje KCSAN (Kernel Concurrency Sanitizer), určeného pro dynamické odhalování podmínek závodu uvnitř jádra. Byla také přidána podpora režimu spánku a koprocessorů.
    • Pro architekturu m68k (Motorola 68000) byla implementována virtuální stroj (simulátor platformy), založený na emulátoru Android Goldfish.
    • Pro architekturu AArch64 byla zajištěna podpora rozšíření Armv9-A SME (Scalable Matrix Extension).
    • V subsystému eBPF je povoleno uchovávání typovaných ukazatelů v map-strukturách a byla také přidána podpora dynamických ukazatelů.
    • Byl navržen nový předvídavý mechanismus vyhazování paměti, který podporuje řízení z uživatelského prostoru pomocí souboru memory.reclaim. Zapsání čísla do určeného souboru povede k pokusu o vyhození odpovídajícího počtu bajtů z množiny spojené s cgroup.
    • Byla zvýšena přesnost sledování využití paměti při kompresi dat v oddílu swap pomocí mechanismu zswap.
    • Pro architekturu RISC-V byla zajištěna podpora spouštění 32bitových spustitelných souborů na 64bitových systémech, byla přidána funkce pro přidělování omezujících atributů k paměťovým stránkám (např. pro zakázání ukládání do cache) a byla implementována funkce kexec_file_load().
    • Implementace podpory 32bitových systémů Armv4T a Armv5 byla přizpůsobena pro použití v univerzálních multiplatformních sestavách jádra, vhodných pro různé ARM systémy.
  • Virtualizace a bezpečnost
    • V subsystému EFI byla realizována možnost důvěrného přenosu tajných informací hostitelským systémům bez jejich odhalení hostitelskému systému. Data jsou poskytována prostřednictvím adresáře security/coco v securityfs.
    • V režimu ochrany Lockdown, který omezuje přístup uživatele root k jádru a blokuje cesty obcházení UEFI Secure Boot, byla odstraněna zranitelnost, která umožňovala obcházení ochrany manipulací s ladicím programem jádra.
    • Byly zahrnuty záplaty zaměřené na zvýšení spolehlivosti a výkonu generátoru pseudonáhodných čísel.
    • Při sestavení pomocí Clang 15 byla zajištěna podpora mechanismu randomizace struktur jádra.
    • Do mechanismu Landlock, který umožňuje omezit interakci skupiny procesů s vnějším prostředím, byla poskytnuta podpora pravidel, která umožňují kontrolovat provádění operací přejmenování souborů.
    • Podsystema IMA (Architecture pro ověřování integrity), určená k ověřování integrity komponent operačního systému pomocí digitálních podpisů a hashů, byla převedena na použití modulu fs-verity pro verifikaci souborů.
    • Byla změněna logika akcí při deaktivaci nepřiděleného přístupu k subsystému eBPF - dříve byly deaktivovány všechny příkazy související se systémovým voláním bpf(), a od verze 5.19 je zachován přístup k příkazům, které nevytvářejí objekty. Při tomto chování je pro načtení BPF programu vyžadován privilegovaný proces, ale pak mohou nepřidělené procesy komunikovat s tímto programem.
    • Byla přidána podpora rozšíření AMD SEV-SNP (Secure Nested Paging), které zajišťuje bezpečnou práci s vloženými tabulkami stránek paměti a chrání proti útokům „undeSErVed“ a „SEVerity“ na procesory AMD EPYC, které umožňují obcházet ochranný mechanismus AMD SEV (Secure Encrypted Virtualization).
    • Byla přidána podpora mechanismu Intel TDX (Trusted Domain Extensions), který umožňuje blokovat pokusy o neautorizovaný přístup k šifrované paměti. virtuálních strojů.
    • Do ovladače virtio-blk, používaného pro emulaci blokových zařízení, byla přidána podpora vstupů/výstupů pomocí polling, což podle provedených testů umožnilo snížit latence přibližně o 10%.
  • Síťová subsystém
    • Byla zahrnuta série patchů BIG TCP, které umožňují zvýšení maximální velikosti TCP paketu na 4 GB pro optimalizaci výkonu vysokorychlostních vnitřních sítí datových center. Toto zvýšení velikosti paketu při 16-bitovém poli v záhlaví je dosaženo implementací „jumbo“ paketů, jejichž velikost v IP záhlaví je nastavena na 0 a skutečná velikost je předávána v samostatném 32-bitovém poli v připojeném záhlaví. Při testování výkonu nastavení velikosti paketu na 185 KB umožnilo zvýšit propustnost o 50% a významně snížit latence přenosu dat.
    • Pokračuje práce na integraci do síťového zásobníku prostředků pro sledování příčin odmítnutí paketů (kódy reason). Kód příčiny je předáván během uvolnění paměti spojené s paketem a umožňuje brát v úvahu takové situace, jako je odmítnutí paketu z důvodu chyb při vyplnění polí v hlavičce, detekce spoofingu filtrem rp_filter, nesprávná kontrolní suma, nedostatek paměti, aktivace pravidel IPSec XFRM, nesprávné pořadové číslo TCP atd.
    • Byla přidána podpora pro přechod připojení MPTCP (MultiPath TCP) na používání běžného TCP v situacích, kdy určité funkce MPTCP nemohou být využity. MPTCP je rozšíření protokolu TCP pro zajištění práce TCP-připojení s doručováním paketů současně po několika cestách přes různé síťové rozhraní svázané s různými IP adresami. Bylo přidáno API pro správu toků MPTCP z uživatelského prostoru.
  • Hardware
    • Bylo přidáno více než 420 tisíc řádků kódu související s ovladačem amdgpu, z nichž asi 400 tisíc řádků pochází z automaticky generovaných hlavičkových souborů s daty pro registry ASIC v ovladači pro GPU AMD, a dalších 22,5 tisíce řádků zajišťuje počáteční implementaci podpory AMD SoC21. Celková velikost ovladače pro GPU AMD překročila 4 miliony řádků kódu. Kromě SoC21 obsahuje ovladač AMD podporu SMU 13.x (System Management Unit), byla aktualizována podpora USB-C a GPUVM, a byl proveden příprava na podporu následujících generací platforem RDNA3 (RX 7000) a CDNA (AMD Instinct).
    • V ovladači i915 (Intel) byly rozšířeny možnosti související se správou spotřeby energie. Byly přidány identifikátory GPU Intel DG2 (Arc Alchemist), používané v noteboocích, byla zajištěna počáteční podpora platformy Intel Raptor Lake-P (RPL-P), byla přidána informace o grafických kartách Arctic Sound-M, byl realizován ABI pro výpočetní enginy, pro karty DG2 byla přidána podpora formátu Tile4, pro systémy založené na mikroarchitektuře Haswell byla zajištěna podpora DisplayPort HDR.
    • V ovladači Nouveau došlo k přechodu na použití zpracovatele drm_gem_plane_helper_prepare_fb, pro některé struktury a proměnné bylo použito statické alokace paměti. Co se týče použití v Nouveau otevřených společnostmi NVIDIA zdrojových textů modulů jádra, práce zatím spočívá v identifikaci a eliminaci chyb. V budoucnu se plánuje využití zveřejněného firmwaru pro zvýšení výkonu ovladače.
    • Byl přidán ovladač pro řadič NVMe, používaný v počítačích Apple založených na čipu M1.

Latinoamerický Fond svobodného softwaru zároveň vytvořil verzi zcela svobodného jádra 5.19 — Linux-libre 5.19-gnu, zbaveného prvků firmwaru a ovladačů obsahujících nesvobodné komponenty nebo části kódu, jejichž použití je omezeno výrobcem. V nové verzi byla vyčištěna ovladače pro pureLiFi X/XL/XC a TI AMx3 Wkup-M3 IPC. Byla aktualizována metoda čištění blobů v ovladačích a subsystémech Silicon Labs WFX, AMD amdgpu, Qualcomm WCNSS Peripheral Image Loader, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, pu3-imgu ovladačích. Byla implementována podpora pro zpracování devicetree souborů Qualcomm AArch64. Přidána podpora nové pojmenovací schéma komponentů Sound Open Firmware. Bylo zastaveno čištění ovladače ATM Ambassador, který byl odstraněn z jádra. Řízení čištění blobů v HDCP a Mellanox Core bylo přesunuto do samostatných značek kconfig.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster