Uvolnění jádra Linux 5.12

Po dvou měsících vývoje představil Linus Torvalds uvolnění jádra Linux 5.12. Mezi nejvýznamnější změny patří: podpora zónovaných blokových zařízení v Btrfs, možnost mapování identifikátorů uživatelů pro FS, úklid zastaralých architektur ARM, režim "netrpělivého" zápisu v NFS, mechanismus LOOKUP_CACHED pro určování cest k souborům z cache, podpora atomárních instrukcí v BPF, ladicí systém KFENCE pro odhalování chyb při práci s pamětí, režim NAPI pollingu pracující v samostatném vlákně jádra v síťovém stacku, hypervizor ACRN, možnost dynamické změny preempt-modelu v plánovači úloh a podpora LTO optimalizací při kompilaci v Clang.

Do nové verze bylo přijato 14170 (v minulém vydání 15480) oprav od 1946 (1991) vývojářů, velikost patchu je 38 MB (změny se dotkly 12102 (12090) souborů, přidáno 538599 (868025) řádků kódu, odstraněno 333377 (261456) řádků). Přibližně 43% všech předložených změn v 5.12 souvisí s ovladači zařízení, přibližně 17% změn má vztah k aktualizaci kódu specifického pro hardware, 12% souvisí se síťovým stackem, 5% s файловими системами a 4% s interními subsystémy jádra.

Hlavní novinky:

  • Diskový subsystém, vstup/výstup a souborové systémy
    • Byla realizována možnost mapování identifikátorů uživatelů pro připojené souborové systémy (možno přiřadit soubory jednoho uživatele na připojeném cizím oddílu k jinému uživateli v aktuálním systému). Mapování je podporováno pro FS FAT, ext4 a XFS. Navrhovaná funkcionalita usnadňuje sdílení souborů různými uživateli a na různých počítačích, včetně toho, že mapování bude použito v mechanismu přenositelných domácích adresářů systemd-homed, což uživatelům umožní přesunout své domácí adresáře na externí nosiče a používat je na různých počítačích, jejichž rozložení identifikátorů uživatelů se neshoduje. Dalším užitečným použitím je organizace sdílení souborů z externího hostitele, aniž by došlo ke skutečné změně údajů o vlastnících souborů v FS.
    • Do jádra byly přijaty patche LOOKUP_CACHED, které umožňují provádět operace určování cest k souborům z uživatelského prostoru bez blokování, pouze na základě dostupných dat v cache. Režim LOOKUP_CACHED se aktivuje při volání openat2() zasláním příznaku RESOLVE_CACHED, při němž se data vracejí pouze z cache, a pokud určení cesty vyžaduje přístup k úložišti, vrací se chyba EAGAIN.
    • Ve souborovém systému Btrfs byla přidána počáteční podpora zónovaných blokových zařízení (zařízení na pevných discích nebo NVMe SSD, jejichž úložný prostor je rozdělen na zóny, které obsahují skupiny bloků nebo sektorů, do kterých je povoleno pouze sekvenční přidávání dat s aktualizací celé skupiny bloků). V režimu pouze pro čtení byla implementována podpora bloků s metadaty a daty menšími než stránka (subpage).
    • Ve souborovém systému F2FS byla přidána možnost výběru algoritmu a úrovně komprese. Přidána podpora vysoké úrovně komprese pro algoritmus LZ4. Byla implementována možnost připojení checkpoint_merge.
    • Byla implementována nová ioctl příkaz FS_IOC_READ_VERITY_METADATA pro čtení metadat z souborů chráněných pomocí fs-verity.
    • V klientovi NFS byl implementován režim 'netrpělivého' zápisu (writes=eager), při jehož zapnutí se operace zápisu do souboru okamžitě předávají na server, obcházející stránkovou cache. Tento režim umožňuje snížit spotřebu paměti, poskytuje okamžité získání informací o dokončení volného místa v FS a v některých situacích může zvýšit výkon.
    • Do CIFS (SMB) byly přidány nové možnosti připojení: acregmax pro řízení cachování souborů a acdirmax pro řízení cachování metadat adresářů.
    • Ve XFS byl zahrnut režim vícestupňové kontroly kvót, bylo urychleno provádění fsync a byl proveden příprava kódu growfs pro realizaci funkce zmenšení velikosti FS.
  • Paměť a systémové služby
    • Byl přidán subsystém DTMP (Dynamic Thermal Power Management), který umožňuje dynamicky regulovat spotřebu energie různých zařízení na základě stanovených obecných teplotních limitů.
    • Byla implementována možnost sestavení jádra pomocí kompilátoru Clang s aktivací optimalizací během propojení (LTO, Link Time Optimization). Optimalizace LTO se liší tím, že zohledňují stav všech souborů účastnících se procesu sestavení, zatímco tradiční režimy optimalizace optimalizují každý soubor jednotlivě a nezohledňují podmínky volání funkcí definovaných v jiných souborech. Například při LTO je možné inlinové rozvinutí funkcí z jiných souborů, do spustitelného souboru se nezahrnuje nepoužívaný kód, probíhá kontrola typů a celková optimalizace na úrovni projektu. Podpora LTO je zatím omezena na architektury x86 a ARM64.
    • Byla poskytnuta možnost výběru režimů předzisku (PREEMPT) v plánovači úloh při bootování (preempt=none/voluntary/full) nebo během běhu prostřednictvím debugfs (/debug/sched_debug), pokud je při sestavování jádra nastavena volba PREEMPT_DYNAMIC. Dříve bylo možné nastavit režim předzisku pouze na úrovni parametrů sestavení. Změna umožňuje distribucím dodávat jádra se zapnutým režimem PREEMPT, který zajišťuje minimální zpoždění pro pracovní plochy na úkor malého snížení propustnosti, a v případě potřeby se vracet k režimům PREEMPT_VOLUNTARY (meziprojektový režim pro pracovní plochy) nebo PREEMPT_NONE (zajišťující maximální propustnost). servery).
    • Do subsystému BPF byla přidána podpora atomických operací BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG a BPF_CMPXCHG.
    • BPF programům byla poskytnuta možnost přístupu k datům na zásobníku pomocí ukazatelů s proměnným posunutím. Například, pokud bylo dříve možné pro přístup k poli na zásobníku používat pouze konstantní index prvku, nyní je možné použít měnící se. Kontrola přístupu je vykonávána v rámci existujících hranic verifikátorem BPF. Tato možnost je dostupná pouze privilegovaným programům kvůli obavám o zneužití zranitelností spojených se spekulativním vykonáváním kódu.
    • Byla přidána možnost připojení BPF programů k 'holým' stanicím sledování (bare tracepoints), které nejsou spojeny se sledovacími událostmi viditelnými ve uživatelském prostoru (pro takové sledovací stanice není zaručena zachování ABI).
    • Byl implementován podporovaný standard CXL 2.0 (Compute Express Link), který je používán pro rychlou interakci mezi CPU a paměťovými zařízeními (umožňuje využívat externí paměťová zařízení jako součást RAM nebo trvalé paměti, jako by byla tato paměť připojena přes standardní paměťový řadič v CPU).
    • Byl přidán ovladač nvmem pro získávání dat z oblastí paměti rezervovaných firmwary, které nejsou přímo přístupné pro Linux (například EEPROM paměť, která je fyzicky dostupná pouze pro firmware, nebo data dostupná pouze během rané fáze spouštění).
    • Byla odstraněna podpora profilačního systému „oprofile“, který se nedostal do širokého používání a byl vyřazen modernějším mechanismem perf.
    • V rozhraní asynchronního vstupu/výstupu io_uring byla zajištěna integrace s cgroup, která kontroluje použití paměti.
    • Byla implementována podpora NUMA systémů pro architekturu RISC-V, stejně jako mechanismy kprobes a uprobes.
    • Byla přidána možnost použití systémového volání kcmp() nezávisle na funkcionalitě kontrolního bodu/obnovení (checkpoint/restore).
    • Byly odstraněny makra EXPORT_UNUSED_SYMBOL() a EXPORT_SYMBOL_GPL_FUTURE(), která nebyla v praxi již mnoho let používána.
  • Virtualizace a bezpečnost
    • Byl přidán mechanismus ochrany KFence (Kernel Electric Fence), který zachycuje chyby při práci s pamětí, jako je překročení hranice buffera a přístup po uvolnění paměti. Na rozdíl od ladicího mechanismu KASAN se subsystem KFence vyznačuje vysokou rychlostí a nízkými režijními náklady, což umožňuje detekovat chyby s pamětí, které se projevují pouze na pracovních systémech nebo při dlouhém běhu.
    • Byla přidána podpora hypervisoru ACRN, který byl navržen s ohledem na připravenost pro úkoly reálného času a vhodnost pro použití v kritických systémech. ACRN zajišťuje minimální režijní náklady, garantuje nízkou latenci a adekvátní odezvu při interakci s hardwarem. Podporována je virtualizace zdrojů CPU, vstupu/výstupu, síťových subsystémů, grafických a zvukových operací. virtuálních strojů v elektronických řídicích blocích, přístrojových panelech, automobilech informačních systémech, spotřebitelských IoT zařízeních a další embedded technice. ACRN podporuje dva typy hostitelských systémů — privilegované Service VM, které se používají k řízení systémových zdrojů (CPU, paměť, I/O atd.), a uživatelské User VM, ve kterých mohou běžet Linuxové distribuce, Android a Windows.
    • V subsystému IMA (Integrity Measurement Architecture), který zajišťuje údržbu databáze hashů pro kontrolu integrity souborů a souvisejících metadat, se objevila možnost kontroly integrity dat samotného jádra, například k sledování změn pravidel SELinux.
    • Do hypervizoru KVM byla přidána možnost zachytávání hypervolání Xen a jejich přesměrování do emulatoru běžícího v uživatelském prostoru.
    • Byla přidána možnost použití Linuxu jako kořenového prostředí pro hypervizor Hyper-V. Kořenové prostředí má přímý přístup k hardwaru a používá se k spuštění hostitelských systémů (analog Dom0 v Xen). Dosud Hyper-V (Microsoft Hypervisor) podporoval Linux pouze v hostitelských prostředích, ale sám hypervizor byl řízen z prostředí založeného na Windows.
    • Byla přidána podpora inline šifrování pro karty eMMC, což umožňuje využívat mechanismy šifrování vestavěné v řadiči úložiště, které provádějí transparentní šifrování a dešifrování vstupu/výstupu.
    • Z kryptosystému byla odstraněna podpora nepoužívaných hashů RIPE-MD 128/256/320 a Tiger 128/160/192, stejně jako streamového šifrování Salsa20, které nahradil algoritmus ChaCha20. Algoritmus blake2 byl aktualizován na implementaci blake2s.
  • Síťová subsystém
    • Byla přidána možnost vyčlenění obsluhy NAPI polling síťových zařízení do samostatného jádra, což umožňuje zvýšení výkonu pro některé typy zátěže. Dříve byl polling prováděn v kontextu softirq a nebyl zahrnut plánovačem úloh, což ztěžovalo detailní optimalizaci pro dosažení maximálního výkonu. Provádění v samostatném jádře umožňuje sledovat obsluhu pollingu z uživatelského prostoru, přiřazovat ji k jednotlivým jádrům CPU a brát v úvahu při plánování přepínání úloh. Pro aktivaci nového režimu v sysfs byl navržen parametr /sys/class/net//threaded.
    • Pokračuje integrace do jádra MPTCP (MultiPath TCP), rozšíření protokolu TCP pro organizaci práce TCP připojení s doručováním paketů současně několika cestami přes různé síťové rozhraní, spojená s různými IP adresami. V nové verzi byla přidána možnost přiřadit prioritu určitým tokům, což umožňuje například organizovat práci záložních toků, které se zapnou pouze při problémech s primárním tokem.
    • V IGMPv3 byla přidána podpora mechanismu EHT (Explicit Host Tracking).
    • V mechanismu filtrování paketů netfilter byla zrealizována možnost vlastnit určité tabulky pro získání exkluzivní kontroly (například na pozadí může proces firewallu zablokovat určité tabulky, a tím zabránit jiným osobám do nich zasahovat).
  • Hardware
    • Byla provedena čistka zastaralých a neudržovaných ARM platforem. Byl odstraněn kód platforem efm32, picoxcell, prima2, tango, u300, zx a c6x, jakož i související ovladače.
    • V ovladači amdgpu byla realizována možnost přetaktování (OverDrive) karet na bázi GPU Sienna Cichlid (Navi 22, Radeon RX 6xxx). Byla přidána podpora pixelového formátu FP16 pro DCE (display controller engine) od 8. do 11. generace. Pro GPU Navy Flounder (Navi 21) a APU Van Gogh byla realizována možnost resetování GPU.
    • V ovladači i915 pro grafické karty Intel byla implementována možnost i915.mitigations pro deaktivaci izolačních a ochranných mechanismů ve prospěch zvýšení výkonu. Pro čipy od Tiger Lake byla aktivována podpora mechanismu VRR (Variable Rate Refresh), který umožňuje adaptivně měnit obnovovací frekvenci monitoru pro zajištění plynulosti a absence trhání během hraní. Byla zahrnuta podpora technologie Intel Clear Color pro zlepšení přesnosti barev. Byla přidána podpora DP-HDMI 2.1. Byla realizována možnost řízení podsvícení panelů eDP. Pro GPU Gen9 s podporou LSPCON (Level Shifter and Protocol Converter) byla aktivována podpora HDR.
    • V ovladači nouveau byla přidána základní podpora GPU NVIDIA na bázi architektury GA100 (Ampere).
    • V ovladači msm byla přidána podpora GPU Adreno 508, 509 a 512, které se používají v čipech SDM (Snapdragon) 630, 636 a 660.
    • Byla přidána podpora zvukových karet Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s a Pioneer DJM-750. Byla přidána podpora zvukového subsystému Intel Alder Lake PCH-P. Byla realizována podpora softwarové simulace připojení a odpojení audio konektoru pro debuggování handlerů v uživatelském prostoru.
    • Byla přidána podpora herních konzolí Nintendo 64, které se vyráběly v letech 1996 až 2003 (předchozí pokusy o portování Linuxu na Nintendo 64 nebyly dokončeny a měly status Vaporware). Důvodem pro vytvoření nového portu pro tuto zastaralou platformu, která se nevyrábí už skoro dvacet let, je touha podnítit rozvoj emulátorů a zjednodušení přenosu her.
    • Byl přidán ovladač pro herní ovladač Sony PlayStation 5 DualSense.
    • Byla přidána podpora ARM platforem, zařízení a platforem: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4B.
    • Byla přidána podpora smartphonů Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070.
    • Byl přidán ovladač bcm-vk pro akcelerační desky Broadcom VK (např. PCIe desky Valkyrie a Viper), které lze použít pro oddělení operací zpracování zvuku, videa a obrazů na samostatné zařízení, stejně jako pro činnosti související s šifrováním.
    • Byla přidána podpora pro platformu Lenovo IdeaPad s možností správy trvalého nabíjení a podsvícením klávesnice. Byla také zajištěna podpora ACPI profilu platformy ThinkPad s možností správy režimů úspory energie. Byl přidán ovladač pro HID subsystém Lenovo ThinkPad X1 Tablet Gen 2.
    • Byl přidán ovladač ov5647 s podporou modulu s kamerou pro Raspberry Pi.
    • Byla přidána podpora RISC-V SoC FU740 a desek HiFive Unleashed. Byl také přidán nový ovladač pro čip Kendryte K210.

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