Uvolnění jádra Linux 5.11

Po dvou měsících vývoje představil Linus Torvalds uvolnění jádra Linux 5.11. Mezi nejvýraznější změny patří: podpora enkapsulací Intel SGX, nový mechanismus zachytávání systémových volání, virtuální sběrnice auxiliary, zákaz sestavování modulů bez MODULE_LICENSE(), režim rychlého filtrování systémových volání v seccomp, ukončení podpory architektury ia64, přesun technologie WiMAX do větve „staging“ a možnost enkapsulace SCTP v UDP.

Do nové verze bylo přijato 15480 oprav od 1991 vývojářů, velikost patchu je 72 MB (změny se týkají 12090 souborů, bylo přidáno 868025 řádků kódu, odstraněno 261456 řádků). Přibližně 46 % všech změn v 5.11 se týká zařízení, asi 16 % změn má vztah k aktualizaci kódu specifického pro hardwarové architektury, 13 % se týká síťového zásobníku, 3 % - souborových systémů a 4 % interních subsystémů jádra.

Hlavní novinky:

  • Diskový subsystém, vstup/výstup a souborové systémy
    • V Btrfs bylo přidáno několik možností montáže pro použití při obnově dat z poškozeného FS: „rescue=ignorebadroots“ pro montáž, i když jsou některé kořenové stromy poškozené (extent, uuid, data reloc, device, csum, free space), „rescue=ignoredatacsums“ pro vypnutí kontroly kontrolních součtů pro data a „rescue=all“ pro současné zapnutí režimů ‘ignorebadroots’, ‘ignoredatacsums’ a ‘nologreplay’. Byla ukončena podpora montážní volby „inode_cache“, která byla dříve označena jako zastaralá. Byl proveden příprava kódu na zavedení podpory bloků s metadaty a daty menšími než stránka (PAGE_SIZE) a také podpora režimu zónovaného přidělování místa. Nebufferované (Direct IO) požadavky byly převedeny na infrastrukturu iomap. Byla optimalizována výkon několika operací, v některých případech může zrychlení dosáhnout desítek procent.
    • V XFS byl implementován příznak „needsrepair“, signalizující potřebu obnovy. Při nastavení tohoto příznaku nelze FS přimontovat, dokud není příznak resetován nástrojem xfs_repair.
    • V Ext4 byly navrženy pouze opravy chyb a optimalizace, odborné úpravy kódu.
    • Byl povolen opětovný export souborových systémů přimontovaných přes NFS (tj. oddíl přimontovaný přes NFS lze nyní exportovat přes NFS a použít jako mezipaměť).
    • Do systémového volání close_range() byla přidána volba CLOSE_RANGE_CLOEXEC, která umožňuje procesu uzavřít celý rozsah otevřených souborových descriptorů v režimu close-on-exec.
    • Do souborového systému F2FS byly přidány nové volání ioctl(), která umožňují z uživatelského prostoru řídit, které soubory se ukládají v komprimované podobě. Byla přidána možnost montování „compress_mode=“ pro výběr umístění kontrolního obslužného procesu na straně jádra nebo v uživatelském prostoru.
    • Byla umožněna montáž Overlayfs neprivilegovanými procesy pomocí samostatného prostoru identifikátorů uživatelů (user namespace). Pro ověření souladu s implementací bezpečnostního modelu byla provedena komplexní revize kódu. Do Overlayfs byla také přidána možnost spuštění s použitím kopií obrazů souborového systému pomocí volitelného vypnutí kontroly UUID.
    • Do souborového systému Ceph byla přidána podpora protokolu msgr2.1, která umožňuje použít algoritmus AES-GCM při přenosu dat v zašifrované podobě.
    • V modulu dm-multipath byla implementována možnost zohlednění vázání na CPU („IO affinity“) při výběru trasy požadavků na vstup/výstup.
  • Paměť a systémové služby
    • Byl přidán nový mechanismus pro odchytávání systémových volání založený na prctl(), který umožňuje z uživatelského prostoru generovat výjimky při volání určitého systémového volání a emulovat jeho provádění. Tato funkčnost je požadována v programech Wine a Proton pro emulaci systémových volání Windows, což je nezbytné pro zajištění kompatibility s hrami a programy, které přímo provádějí systémová volání mimo Windows API (například pro ochranu před neoprávněným použitím).
    • Do systémového volání userfaultfd(), určeného pro zpracování page faults (přístup k nealokovaným stránkám paměti) v uživatelském prostoru, byla přidána možnost vypnout zpracování výjimek vznikajících na úrovni jádra, aby se ztížila exploatace některých zranitelností.
    • Do subsystému BPF byla přidána podpora lokálního úložiště dat pro úlohy (task-local storage), které zajišťuje vazbu dat na konkrétní BPF zpracovatel.
    • Úplně byla přepracována správa spotřeby paměti programy BPF — pro řízení využití paměti v objektech BPF byl navržen kontrolér cgroup místo rlimit pro memlock.
    • Do mechanismu BTF (BPF Type Format), který poskytuje informace pro ověřování typů v pseudokódu BPF, byla implementována podpora jádrových modulů.
    • Do rozhraní asynchronního I/O io_uring byla přidána podpora systémových volání shutdown(), renameat2() a unlinkat(). Při volání io_uring_enter() byla přidána možnost specifikace časového limitu (podporu parametru pro specifikaci časového limitu lze zkontrolovat pomocí příznaku IORING_FEAT_EXT_ARG).
    • Architektura ia64, používaná v procesorech Intel Itanium, byla přeřazena do kategorie abandonovaných ('orphaned'), což znamená, že bylo ukončeno testování. Společnost Hewlett Packard Enterprise přestala přijímat objednávky na nové vybavení Itanium, a Intel to učinil už minulý rok.
    • Byla ukončena podpora systémů založených na architektuře MicroBlaze, které nemají paměťového řadiče (MMU). Takové systémy se již dlouho v praxi nevyskytují.
    • Pro architekturu MIPS byla přidána podpora testování pokrytí kódu (coverage testing) pomocí nástroje gcov.
    • Byla přidána podpora virtuální sběrnice auxiliary pro interakci s multifunkčními zařízeními, která kombinují funkce vyžadující různé ovladače (například síťové karty s podporou Ethernet a RDMA). Sběrnice může být použita k přiřazení primárního a sekundárního ovladače zařízení, když je problematické využití subsystému MFD (Multi-Function Devices).
    • Pro architekturu RISC-V byla přidána podpora systému správy paměti CMA (Contiguous Memory Allocator), který je optimalizován na vyčlenění velkých nepřetržitých oblastí paměti pomocí techniky přesouvání stránek paměti. Pro RISC-V byly také implementovány prostředky pro omezení přístupu k /dev/mem a sledování doby zpracování přerušení.
    • Pro 32bitové systémy ARM byla přidána podpora ladicího nástroje KASan (Kernel address sanitizer), který zajišťuje odhalení chyb při manipulaci s pamětí. Pro 64bitové ARM byla implementace KASan převedena na použití tagů MTE (MemTag).
    • Byl přidán systémový volání epoll_pwait2(), které umožňuje používat časové limity s nanosekuntovou přesností (volání epoll_wait manipulují s milisekundami).
    • V systému sestavení byla zavedena chybová hláška při pokusu o sestavení načtených modulů jádra, ve kterých nebyla pomocí makra MODULE_LICENSE() určena licence na kód. Chyba při sestavení nyní také nastane při použití makra EXPORT_SYMBOL() pro statické funkce.
    • Byla přidána podpora mapování objektů GEM z paměti využívané pro vstup/výstup, což umožnilo urychlit práci s framebufferem na některých architekturách.
    • V Kconfig byla ukončena podpora Qt4 (podpora Qt5, GTK a Ncurses zůstává).
  • Virtualizace a bezpečnost
    • Do systémového volání seccomp() byla přidána podpora režimu rychlé reakce, který umožňuje velmi rychle zjistit, zda je určité systémové volání povoleno nebo zakázáno na základě připojené tabulky oprávnění (bitmapa konstantních akcí), která nevyžaduje spuštění zpracovatele BPF.
    • Byly integrovány komponenty jádra pro vytváření a správu enclávů na bázi technologie Intel SGX (Software Guard eXtensions), která umožňuje aplikacím vykonávat kód v izolovaných zašifrovaných oblastech paměti, k nimž je přístup ostatní systémy omezen.
    • V rámci iniciativy na omezení přístupu z prostoru uživatele k registrům MSR (model-specific register) byla zakázána zápis do registru MSR_IA32_ENERGY_PERF_BIAS, který umožňuje změnu režimu energetické účinnosti procesoru ("normal", "performance", "powersave").
    • Z větve kernel-rt pro systémy reálného času byla přenesena možnost zakázání migrace vysoce prioritních úloh mezi CPU.
    • Pro systémy ARM64 byla přidána možnost aplikace štítků MTE (MemTag, Memory Tagging Extension) pro adresy paměti obsluhovačů signálů. Použití MTE se aktivuje zadáním možnosti SA_EXPOSE_TAGBITS v sigaction() a umožňuje organizovat kontrolu správnosti použití ukazatelů pro blokaci zneužití zranitelností způsobených přístupem k již uvolněným blokům paměti, přetečeními bufferů, přístupy před inicializací a používáním mimo aktuální kontext.
    • Byl přidán parametr „DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING“, který umožňuje subsystému dm-verity kontrolovat hashové podpisy certifikátů umístěných ve vedlejší součásti úložiště klíčů (keyring). V praxi toto nastavení umožňuje ověřovat nejen certifikáty zabudované do jádra, ale i certifikáty načtené během provozu, což umožňuje aktualizaci certifikátů bez nutnosti aktualizace celého jádra.
    • V User-mode Linux byla přidána podpora režimu suspend-to-idle, který umožňuje zmrazení prostředí a používání signálu SIGUSR1 k probuzení ze spánkového režimu.
    • Do mechanismu virtio-mem, který umožňuje horké připojení a odpojení paměti k virtuálním strojům, byla přidána podpora režimu velkých bloků (BBM, Big Block Mode), což umožňuje přenášení nebo odebírání paměti ve blocích překračujících velikost bloku jádrové paměti, což je nezbytné pro optimalizaci VFIO v QEMU.
    • Do implementace TLS na úrovni jádra byla přidána podpora šifrovacího algoritmu CHACHA20-POLY1305.
  • Síťová subsystém
    • Pro 802.1Q (VLAN) byl implementován mechanismus správy poruch připojení (CFM, Connectivity Fault Management), který umožňuje detekci, ověření a izolaci poruch v sítích s virtuálními mosty (Virtual Bridged Networks). Například CFM může být použit k lokalizaci problémů v sítích, které zahrnují několik nezávislých organizací, jejichž zaměstnanci mají přístup pouze k vlastnímu zařízení.
    • Byla přidána podpora enkapsulace paketu protokolu SCTP do UDP paketů (RFC 6951), což umožňuje využití SCTP v sítích se starými překladači adres, které přímo nepodporují SCTP, a také implementaci SCTP na systémech, které nenabízejí přímý přístup na úrovni IP.
    • Implementace technologie WiMAX byla přesunuta do stagingu a v budoucnu je plánováno odstranění, pokud se nenajdou uživatelé, kteří WiMAX potřebují. WiMAX se již nepoužívá v veřejných sítích a v jádře zůstává jediným ovladačem, s nímž lze WiMAX používat, zastaralý ovladač Intel 2400m. V síťovém konfiguračním nástroji NetworkManager byla podpora WiMAX ukončena v roce 2015. V současnosti je WiMAX prakticky úplně nahrazen takovými technologiemi, jako jsou LTE, HSPA+ a Wi-Fi 802.11n.
    • Byla provedena optimalizace výkonu zpracování příchozího TCP provozu v režimu zerocopy, tj. bez nutnosti dalšího kopírování do nových bufferů. Pro provoz střední velikosti, pokrývající desítky nebo několik stovek kilobajtů dat, se uplatnění zerocopy místo recvmsg() ukazuje jako výrazně efektivnější. Například realizované změny umožnily zvýšit efektivitu zpracování RPC provozu se zprávami o velikosti 32 kB při použití zerocopy o 60-70%.
    • Byly přidány nové volání ioctl() pro vytváření síťových mostů pokrývajících více kanálů PPP. Navrhovaná funkce umožňuje přesun rámců z jednoho kanálu do druhého, například z PPPoE do relace PPPoL2TP.
    • Pokračuje integrace do jádra MPTCP (MultiPath TCP), rozšíření protokolu TCP pro zajištění fungování TCP spojení s doručováním paketů současně přes více tras prostřednictvím různých síťových rozhraní vázaných na různé IP adresy. V novém vydání byla implementována podpora volby ADD_ADDR pro oznámení dostupných IP adress ke kterým je možné se připojit při přidání nových toků k existujícímu spojení MPTCP.
    • Byla přidána možnost nastavení akcí při překročení rozpočtu pollingových spojení (busy-polling). Dříve dostupný režim SO_BUSY_POLL předpokládal přepnutí na softirq při vyčerpání rozpočtu. Pro aplikace, které potřebují pokračovat v používání pollingu, byla navržena nová volba SO_PREFER_BUSY_POLL.
    • V IPv6 byla implementována podpora režimů SRv6 End.DT4 a End.DT6, používaných pro vytváření víceuživatelských IPv4 L3 VPN a zařízení VRF (Virtual routing and forwarding).
    • V Netfilter byla sjednocena implementace výrazů set, což umožnilo stanovit možnost uvedení několika výrazů pro každý element set-seznamů.
    • V bezdrátovém zásobníku 802.11 byly přidány API pro nastavení omezení výkonu SAR a také parametrů AE PWE a HE MCS. V ovladači Intel iwlwifi byla přidána podpora pásma 6GHz (Ultra High Band). V ovladači Qualcomm Ath11k byla přidána podpora technologie rychlého nastavení spojení FILS (Fast Initial Link Setup, standardizováno jako IEEE 802.11ai), která umožňuje zbavit se zpoždění při roamingu během migrace z jednoho přístupového bodu na jiný.
  • Hardware
    • V ovladači amdgpu byla implementována podpora APU AMD „Green Sardine“ (Ryzen 5000) a GPU „Dimgrey Cavefish“ (Navi 2), jakož i počáteční podpora APU AMD Van Gogh se jádrem Zen 2 a GPU RDNA 2 (Navi 2). Byla přidána podpora nových identifikátorů APU Renoir (na bázi CPU Zen 2 CPU a GPU Vega).
    • V ovladači i915 pro grafické karty Intel byla implementována podpora technologie IS (Integer scaling), zahrnující filtr pro zvětšení měřítka s ohledem na stav sousedních pixelů (interpolace Nearest-neighbor) k určení barvy chybějících pixelů. Rozšířena podpora diskrétních karet Intel DG1. Byla zavedena podpora technologie „Big Joiner“, která je přítomna od čipů Ice Lake / Gen11 a umožňuje použít jeden transcoder pro zpracování dvou streamů, například pro výstup na 8K obrazovku přes jeden DisplayPort. Přidán režim asynchronního přepínání mezi dvěma buffery ve video paměti (async flip).
    • Do ovladače nouveau byla přidána základní podpora GPU NVIDIA založených na mikroarchitektuře „Ampere“ (GA100, GeForce RTX 30xx), prozatím omezená na nástroje pro správu videorežimů.
    • Byla přidána podpora protokolu 3WIRE, používaného v LCD panelech. Byla přidána podpora panelů novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 a ABT Y030XX067A 3.0. Zvlášť je třeba zmínit podporu panelu chytrého telefonu OnePlus 6 a 6T, která umožnila organizovat zavádění na zařízeních s nemodifikovaným jádrem.
    • Byla přidána podpora prvního diskrétního USB4 hostitelského kontroléru Intel Maple Ridge.
    • Byla přidána podpora zvukových kodeků Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI a XCVR, Realtek RT715 a Qualcomm SM8250.
    • Byla přidána podpora ARM platforem, zařízení a platforem: Galaxy Note 10.1, Microsoft Lumia 950 XL, NanoPi R1, FriendlyArm ZeroPi, Elimo Initium SBC, Broadcom BCM4908, Mediatek MT8192/MT6779/MT8167, MStar Infinity2M, Nuvoton NPCM730, Marvell Armada 382, Mikrotik postavený na Marvell Prestera 98DX3236, servery s Nuvoton NPCM750 BMC, Kontron i.MX8M Mini, Espressobin Ultra, „Trogdor“ Chromebook, Kobol Helios64, Engicam PX30.Core.
    • Byla integrována podpora herní konzole Ouya založené na NVIDIA Tegra 3.

Zároveň latinskoamerická Nadace svobodného software vytvořila variantu zcela svobodného jádra 5.11 — Linux-libre 5.11-gnu, očištěného od prvků firmwaru a ovladačů obsahujících nesvobodné komponenty nebo úseky kódu, jejichž použití je omezeno výrobcem. V nové verzi došlo k úpravě ovladačů pro qat_4xxx (crypto), lt9611uxcm (dsi/hdmi bridge), ccs/smia++ (senzor), ath11k_pci, nxp audio transceiver a mhi pci controller. Aktualizován kód pro čištění blobů v ovladačích a subsystémech amdgpu, btqca, btrtl, btusb, i915 csr. Nové bloby v m3 rproc, idt82p33 ptp clock a qualcomm arm64 byly zakázány.

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