Vydání jádra Linux 5.11

Po dvou měsících vývoje představil Linus Torvalds vydání linuxového jádra 5.11. Mezi nejpozoruhodnější změny patří podpora enkláv Intel SGX, nový mechanismus pro zachytávání systémových volání, virtuální pomocná sběrnice, zákaz sestavování modulů bez MODULE_LICENSE(), režim rychlého filtrování systémových volání v seccomp, ukončení podpory pro architektura ia64, přenos technologie WiMAX do větve „staging“, možnost zapouzdřit SCTP do UDP.

Nová verze obsahuje 15480 1991 oprav od 72 12090 vývojářů, velikost opravy je 868025 MB (změny se dotkly 261456 46 souborů, bylo přidáno 5.11 16 řádků kódu, smazáno 13 3 řádků). Přibližně 4 % všech změn zavedených v XNUMX se týká ovladačů zařízení, přibližně XNUMX % změn souvisí s aktualizací kódu specifického pro hardwarové architektury, XNUMX % se týká síťového zásobníku, XNUMX % se týká souborových systémů a XNUMX % souvisí s vnitřními subsystémy jádra.

Hlavní inovace:

  • Diskový subsystém, I/O a souborové systémy
    • Do Btrfs bylo přidáno několik možností připojení pro použití při obnově dat z poškozeného souborového systému: „rescue=ignorebadroots“ pro připojení, navzdory poškození některých kořenových stromů (extent, uuid, data reloc, device, csum, volné místo), „ Rescue=ignoredatacsums” pro zakázání kontroly kontrolních součtů pro data a "rescue=all" pro současné povolení režimů 'ignorebadroots', 'ignoredatacsums' a 'nologreplay'. Možnost připojení "inode_cache", která byla dříve zastaralá, byla ukončena. Kód byl připraven tak, aby implementoval podporu pro bloky s metadaty a daty menšími než velikost stránky (PAGE_SIZE), stejně jako podporu pro režim zónového přidělování prostoru. Požadavky bez vyrovnávací paměti (přímé IO) byly přesunuty do infrastruktury iomap. Optimalizován byl výkon řady operací, v některých případech může zrychlení dosahovat až desítek procent.
    • XFS implementuje příznak „needsrepair“, který signalizuje potřebu opravy. Když je tento příznak nastaven, systém souborů nemůže být připojen, dokud není příznak resetován obslužným programem xfs_repair.
    • Ext4 nabízí pouze opravy chyb a optimalizace, stejně jako vyčištění kódu.
    • Opětovný export souborových systémů připojených přes NFS je povolen (tj. oddíl připojený přes NFS lze nyní exportovat přes NFS a použít jako mezipaměť).
    • Systémové volání close_range(), které umožňuje procesu zavřít celou řadu otevřených deskriptorů souborů najednou, přidalo možnost CLOSE_RANGE_CLOEXEC pro uzavření deskriptorů v režimu close-on-exec.
    • Systém souborů F2FS přidává nová volání ioctl(), která umožňují v uživatelském prostoru řídit, které soubory jsou uloženy v komprimované podobě. Přidána možnost připojení "compress_mode=", která umožňuje zvolit, zda se má ovladač komprese umístit na stranu jádra nebo do uživatelského prostoru.
    • Poskytuje možnost připojit Overlayfs pomocí neprivilegovaných procesů pomocí samostatného uživatelského jmenného prostoru. Pro ověření souladu s implementací bezpečnostního modelu byl proveden úplný audit kódu. Overlayfs také přidává možnost spouštět pomocí kopií obrazů systému souborů volitelným vypnutím kontroly UUID.
    • Souborový systém Ceph přidal podporu pro protokol msgr2.1, který umožňuje použití algoritmu AES-GCM při přenosu dat v šifrované podobě.
    • Modul dm-multipath implementuje schopnost zohlednit afinitu CPU („IO afinita“) při výběru cesty pro I/O požadavky.
  • Paměťové a systémové služby
    • Byl přidán nový mechanismus zachycování systémových volání založený na prctl(), který umožňuje generovat výjimky z uživatelského prostoru při přístupu ke konkrétnímu systémovému volání a emulovat jeho provedení. Tato funkce je vyžadována ve Wine a Protonu k 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í obcházejíce Windows API (například pro ochranu před neoprávněným použitím).
    • Systémové volání userfaultfd() navržené ke zpracování chyb stránek (přístupu k nepřiděleným paměťovým stránkám) v uživatelském prostoru má nyní možnost zakázat zpracování výjimek, ke kterému dochází na úrovni jádra, a ztížit tak zneužití určitých zranitelností.
    • Subsystém BPF přidal podporu pro místní úložiště úloh, které poskytuje vazbu dat na konkrétní obslužnou rutinu BPF.
    • Účtování spotřeby paměti programy BPF bylo zcela přepracováno - namísto memlock rlimit byl navržen řadič cgroup pro správu využití paměti v objektech BPF.
    • Mechanismus BTF (BPF Type Format), který poskytuje informace o kontrole typu v pseudokódu BPF, poskytuje podporu pro moduly jádra.
    • Přidána podpora pro shutdown(), renameat2() a unlinkat() systémová volání do asynchronního I/O rozhraní io_uring. Při volání io_uring_enter() byla přidána možnost zadat časový limit (podporu argumentu pro určení časového limitu můžete zkontrolovat pomocí příznaku IORING_FEAT_EXT_ARG).
    • Architektura ia64 používaná v procesorech Intel Itanium byla přesunuta do kategorie osiřelých, což znamená, že testování bylo ukončeno. Společnost Hewlett Packard Enterprise přestala přijímat objednávky na nové zařízení Itanium a Intel tak učinil loni.
    • Podpora systémů založených na architektuře MicroBlaze, které neobsahují jednotku správy paměti (MMU), byla ukončena. Takové systémy nebyly v běžném životě vidět už dlouho.
    • Pro architekturu MIPS byla přidána podpora pro testování pokrytí kódu pomocí nástroje gcov.
    • Přidána podpora pro virtuální pomocnou sběrnici pro propojení s multifunkčními zařízeními, která kombinují funkce vyžadující různé ovladače (například síťové karty s podporou Ethernetu a RDMA). Sběrnici lze použít k přiřazení primárního a sekundárního ovladače k ​​zařízení v situacích, kdy je použití subsystému MFD (Multi-Function Devices) problematické.
    • Pro architekturu RISC-V byla přidána podpora pro systém alokace paměti CMA (Contiguous Memory Allocator), který je optimalizován pro alokaci velkých souvislých paměťových oblastí pomocí technik pohybu stránek paměti. Pro RISC-V jsou také implementovány nástroje pro omezení přístupu k /dev/mem a zohlednění doby zpracování přerušení.
    • Pro 32bitové systémy ARM byla přidána podpora pro ladicí nástroj KASan (Kernel address sanitizer), který pomáhá identifikovat chyby při práci s pamětí. Pro 64bitový ARM byla implementace KASan převedena na použití značek MTE (MemTag).
    • Přidáno systémové volání epoll_pwait2() umožňující časové limity s přesností na nanosekundy (volání epoll_wait manipuluje s milisekundami).
    • Systém sestavení nyní zobrazuje chybu při pokusu o sestavení zaváděcích modulů jádra, ve kterých není definována licence kódu pomocí makra MODULE_LICENSE(). Od této chvíle způsobí chybu sestavení také použití makra EXPORT_SYMBOL() pro statické funkce.
    • Přidána podpora pro mapování GEM objektů z paměti používané pro I/O, což umožnilo na některých architekturách zrychlit práci s framebufferem.
    • Kconfig zrušil podporu pro Qt4 (při zachování podpory pro Qt5, GTK a Ncurses).
  • Virtualizace a bezpečnost
    • Do systémového volání seccomp() byla přidána podpora režimu rychlé odezvy, která umožňuje velmi rychle určit, zda je určité systémové volání povoleno nebo zakázáno na základě bitmapy s konstantní akcí připojené k procesu, která nevyžaduje spouštění. manipulátor BPF.
    • Integrované komponenty jádra pro vytváření a správu enkláv založené na technologii Intel SGX (Software Guard eXtensions), která aplikacím umožňuje spouštět kód v izolovaných zašifrovaných oblastech paměti, ke kterým má zbytek systému omezený přístup.
    • V rámci iniciativy k omezení přístupu z uživatelského prostoru do MSR (model-specific register), zápis do registru MSR_IA32_ENERGY_PERF_BIAS, který umožňuje změnit režim energetické účinnosti procesoru („normální“, „výkon“, „úspora energie“). , je zakázáno.
    • Možnost zakázat migraci úloh s vysokou prioritou mezi CPU byla přesunuta z větve kernel-rt pro systémy pracující v reálném čase.
    • Pro systémy ARM64 byla přidána možnost používat MTE tagy (MemTag, Memory Tagging Extension) pro adresy paměti obslužného programu signálů. Použití MTE je umožněno zadáním volby SA_EXPOSE_TAGBITS v sigaction() a umožňuje vám zkontrolovat správné použití ukazatelů k blokování zneužití zranitelností způsobených přístupem k již uvolněným blokům paměti, přetečením vyrovnávací paměti, přístupy před inicializací a použitím mimo aktuální kontext.
    • Přidán parametr „DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING“, který umožňuje subsystému dm-verity kontrolovat hašovací podpisy certifikátů umístěných v sekundárním svazku klíčů. V praxi nastavení umožňuje ověřit nejen certifikáty zabudované v jádře, ale také certifikáty načtené během provozu, což umožňuje aktualizovat certifikáty bez aktualizace celého jádra.
    • Uživatelský režim Linux přidal podporu pro režim uspání do nečinnosti, který umožňuje zmrazit prostředí a použít signál SIGUSR1 k probuzení z režimu spánku.
    • Mechanismus virtio-mem, který umožňuje připojit a odpojit paměť virtuálním strojům za provozu, přidal podporu pro režim Big Block Mode (BBM), který umožňuje přenášet nebo brát paměť v blocích větších, než je velikost paměti jádra. blok, který je nezbytný pro optimalizaci VFIO v QEMU.
    • Do implementace jádra TLS byla přidána podpora pro šifru CHACHA20-POLY1305.
  • Síťový subsystém
    • Pro 802.1Q (VLAN) byl implementován mechanismus pro správu selhání připojení (CFM, Connectivity Fault Management), který umožňuje identifikovat, ověřovat a izolovat selhání v sítích s virtuálními mosty (Virtual Bridged Networks). CFM lze například použít k izolaci problémů v sítích zahrnujících několik nezávislých organizací, jejichž zaměstnanci mají přístup pouze ke svému vlastnímu zařízení.
    • Přidána podpora pro zapouzdření paketů protokolu SCTP do paketů UDP (RFC 6951), která umožňuje používat SCTP v sítích se staršími překladači adres, které přímo nepodporují SCTP, a také implementovat SCTP na systémech, které neposkytují přímý přístup k IP vrstva.
    • Implementace technologie WiMAX byla přesunuta do stagingu a v budoucnu se plánuje odstranění, pokud nebudou žádní uživatelé, kteří potřebují WiMAX. WiMAX se již ve veřejných sítích nepoužívá a v jádře je jediným ovladačem, se kterým lze WiMAX používat, zastaralý ovladač Intel 2400m. Podpora WiMAX byla v konfigurátoru sítě NetworkManager ukončena v roce 2015. V současné době je WiMax téměř kompletně nahrazen technologiemi jako LTE, HSPA+ a Wi-Fi 802.11n.
    • Pracovalo se na optimalizaci výkonu zpracování příchozího TCP provozu v režimu zerocopy, tzn. bez dalšího kopírování do nových bufferů. Pro středně velký provoz, který pokrývá desítky nebo několik stovek kilobajtů dat, je použití zerocopy místo recvmsg() znatelně efektivnější. Implementované změny například umožnily zvýšit efektivitu zpracování provozu ve stylu RPC se zprávami o velikosti 32 KB při použití zerocopy o 60–70 %.
    • Přidána nová volání ioctl() pro vytvoření síťových mostů zahrnujících více PPP spojení. Navrhovaná schopnost umožňuje rámcům přesunout se z jednoho kanálu do druhého, například z PPPoE do relace PPPoL2TP.
    • Integrace do jádra MPTCP (MultiPath TCP), rozšíření protokolu TCP pro organizaci provozu TCP spojení s doručováním paketů současně po několika trasách přes různá síťová rozhraní spojená s různými IP adresami. Nové vydání zavádí podporu pro volbu ADD_ADDR pro inzerování dostupných IP adres, ke kterým se lze připojit při přidávání nových toků do existujícího připojení MPTCP.
    • Přidána možnost konfigurovat akce, když je překročen rozpočet dotazování připojení (busy-polling). Dříve dostupný režim SO_BUSY_POLL znamenal přechod na softirq, když byl rozpočet vyčerpán. Pro aplikace, které potřebují nadále používat dotazování, je navržena nová možnost SO_PREFER_BUSY_POLL.
    • IPv6 implementuje podporu pro režimy SRv6 End.DT4 a End.DT6, které se používají k vytváření víceuživatelských IPv4 L3 VPN a zařízení VRF (Virtual routing and forwarding).
    • Netfilter sjednotil implementaci množinových výrazů, což umožnilo specifikovat více výrazů pro každý prvek množinových seznamů.
    • Do bezdrátového zásobníku 802.11 byla přidána rozhraní API pro konfiguraci limitů výkonu SAR a také parametrů AE PWE a HE MCS. Ovladač Intel iwlwifi přidal podporu pro pásmo 6 GHz (Ultra High Band). Ovladač Qualcomm Ath11k přidal podporu technologie FILS (Fast Initial Link Setup, standardizovaná jako IEEE 802.11ai), která vám umožní zbavit se zpoždění při roamingu během migrace z jednoho přístupového bodu na druhý.
  • Оборудование
    • Ovladač amdgpu poskytuje podporu pro AMD "Green Sardine" APU (Ryzen 5000) a "Dimgrey Cavefish" GPU (Navi 2), stejně jako počáteční podporu pro AMD Van Gogh APU s jádrem Zen 2 a RDNA 2 GPU (Navi 2). Přidána podpora pro nové identifikátory Renoir APU (založené na CPU Zen 2 a GPU Vega).
    • Ovladač i915 pro grafické karty Intel podporuje technologii IS (Integer scaling) s implementací filtru pro zvětšení měřítka zohledňujícího stav sousedních pixelů (interpolace Nejbližší soused) pro určení barvy chybějících pixelů. Byla rozšířena podpora pro diskrétní karty Intel DG1. Byla implementována podpora technologie „Big Joiner“, která je přítomna již od čipů Ice Lake / Gen11 a umožňuje použití jednoho transkodéru pro zpracování dvou streamů, například pro výstup na 8K obrazovku přes jeden DisplayPort. Přidán režim pro asynchronní přepínání mezi dvěma vyrovnávacími pamětmi ve videopaměti (async flip).
    • Ovladač nouveau přidal počáteční podporu pro GPU NVIDIA založené na mikroarchitektuře Ampere (GA100, GeForce RTX 30xx), zatím omezenou na nástroje pro ovládání video režimů.
    • Přidána podpora protokolu 3WIRE používaného v LCD panelech. Přidána podpora pro panely novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 a ABT Y030XX067A 3.0. Samostatně si můžeme všimnout podpory panelu smartphonů OnePlus 6 a 6T, což umožnilo organizovat načítání neupraveného jádra na zařízeních.
    • Přidána podpora pro první samostatný hostitelský řadič Intel USB4, Maple Ridge.
    • Přidána podpora audio kodeků Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI a XCVR, Realtek RT715 a Qualcomm SM8250.
    • Přidána podpora ARM desek, 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 Infinity2CM, MarNPll Armouton, MarNP ​Mikrotik založený na Marvell Prestera 730DX382, servery s Nuvoton NPCM98 BMC, Kontron i.MX3236M Mini, Espressobin Ultra, „Trogdor“ Chromebook, Kobol Helios750, Engicam PX8.Core.
    • Vestavěná podpora pro herní konzoli Ouya založenou na NVIDIA Tegra 3.

Ve stejné době vytvořila Latin American Free Software Foundation verzi zcela svobodného jádra 5.11 - Linux-libre 5.11-gnu, zbavenou prvků firmwaru a ovladačů obsahujících nesvobodné komponenty nebo části kódu, jejichž rozsah je omezený. výrobcem. Nová verze čistí ovladače pro qat_4xxx (crypto), lt9611uxcm (dsi/hdmi bridge), ccs/smia++ (senzor), ath11k_pci, nxp audio transceiver a mhi pci řadič. Aktualizovaný kód čištění objektů blob v ovladačích a podsystémech amdgpu, btqca, btrtl, btusb, i915 csr. Zakázané nové bloby v m3 rproc, idt82p33 ptp clock a qualcomm arm64.

Zdroj: opennet.ru

Přidat komentář