Po dvoch mesiacoch vývoja vydal Linus Torvalds jadro. Linux 5.11. Medzi najvýznamnejšie zmeny patria: podpora enkláv Intel SGX, nový mechanizmus zachytávania systémových volaní, virtuálna pomocná zbernica, zákaz zostavovania modulov bez MODULE_LICENSE(), rýchly režim filtrovania systémových volaní v seccomp, koniec podpory architektúry ia64, presun technológie WiMAX do vetvy „staging“ a možnosť zapuzdriť SCTP do UDP.
Nová verzia obsahuje 15480 1991 opráv od 72 12090 vývojárov, veľkosť opravy je 868025 MB (zmeny sa dotkli 261456 46 súborov, pribudlo 5.11 16 riadkov kódu, zmazalo sa 13 3 riadkov). Približne 4 % všetkých zmien zavedených v XNUMX súvisí s ovládačmi zariadení, približne XNUMX % zmien súvisí s aktualizáciou kódu špecifického pre hardvérové architektúry, XNUMX % súvisí so sieťovým zásobníkom, XNUMX % sa týka súborových systémov a XNUMX % súvisia s internými subsystémami jadra.
Hlavné inovácie:
- Diskový subsystém, I/O a súborové systémy
- Do Btrfs bolo pridaných niekoľko možností pripojenia na použitie pri obnove údajov z poškodeného súborového systému: „rescue=ignorebadroots“ na pripojenie, napriek poškodeniu niektorých koreňových stromov (extent, uuid, data reloc, device, csum, voľné miesto), „ Rescue=ignoredatacsums” na zakázanie kontroly kontrolných súčtov pre dáta a “rescue=all” na súčasné povolenie režimov 'ignorebadroots', 'ignoredatacsums' a 'nologreplay'. Možnosť pripojenia „inode_cache“, ktorá bola predtým zastaraná, bola zrušená. Kód bol pripravený tak, aby implementoval podporu pre bloky s metadátami a údajmi menšími ako veľkosť stránky (PAGE_SIZE), ako aj podporu pre režim prideľovania zónového priestoru. Požiadavky bez vyrovnávacej pamäte (priame IO) boli presunuté do infraštruktúry iomap. Výkon množstva operácií bol optimalizovaný, v niektorých prípadoch môže zrýchlenie dosahovať desiatky percent.
- XFS implementuje príznak „needsrepair“, ktorý signalizuje potrebu opravy. Keď je tento príznak nastavený, súborový systém nemožno pripojiť, kým tento príznak nezresetuje pomocný program xfs_repair.
- Ext4 ponúka iba opravy chýb a optimalizácie, ako aj vyčistenie kódu.
- Opätovný export súborových systémov pripojených cez NFS je povolený (t. j. oddiel pripojený cez NFS možno teraz exportovať cez NFS a použiť ako medzipamäť).
- Systémové volanie close_range(), ktoré umožňuje procesu zatvoriť celý rad otvorených deskriptorov súborov naraz, pridalo možnosť CLOSE_RANGE_CLOEXEC na zatvorenie deskriptorov v režime close-on-exec.
- Súborový systém F2FS pridáva nové volania ioctl(), ktoré umožňujú užívateľskému priestoru kontrolu nad tým, ktoré súbory sú uložené v komprimovanej forme. Pridaná možnosť pripojenia "compress_mode=" na výber, či sa má obslužný program kompresie umiestniť na stranu jadra alebo do užívateľského priestoru.
- Poskytuje možnosť pripojiť Overlayfs neprivilegovanými procesmi pomocou samostatného užívateľského menného priestoru. Na overenie súladu s implementáciou bezpečnostného modelu bol vykonaný úplný audit kódu. Overlayfs tiež pridáva možnosť spúšťať pomocou kópií obrazov systému súborov voliteľným vypnutím kontroly UUID.
- Súborový systém Ceph pridal podporu pre protokol msgr2.1, ktorý umožňuje použitie algoritmu AES-GCM pri prenose dát v šifrovanej forme.
- Modul dm-multipath implementuje schopnosť brať do úvahy afinitu CPU (“IO afinita”) pri výbere trasy pre I/O požiadavky.
- Pamäťové a systémové služby
- Bol pridaný nový mechanizmus zachytávania systémových volaní založený na funkcii prctl(), ktorý umožňuje používateľskému priestoru generovať výnimky pri prístupe ku konkrétnemu systémovému volaniu a emulovať jeho vykonanie. Táto funkcionalita je vyžadovaná vo Wine a Protone pre emuláciu systémových volaní. Windows, čo je nevyhnutné na zabezpečenie kompatibility s hrami a programami, ktoré priamo vykonávajú systémové volania obchádzaním Windows API (napr. na ochranu pred neoprávneným použitím).
- Systémové volanie userfaultfd() navrhnuté na riešenie porúch stránok (prístup k stránkam s nepridelenou pamäťou) v užívateľskom priestore má teraz možnosť zakázať spracovanie výnimiek, ktoré sa vyskytujú na úrovni jadra, aby bolo ťažšie zneužiť určité zraniteľnosti.
- Subsystém BPF pridal podporu pre miestne úložisko úloh, ktoré poskytuje dátové viazanie na špecifický obslužný program BPF.
- Účtovanie spotreby pamäte programami BPF bolo úplne prepracované - namiesto memlock rlimit bol navrhnutý radič cgroup na správu využitia pamäte v objektoch BPF.
- Mechanizmus BTF (BPF Type Format), ktorý poskytuje informácie o kontrole typu v pseudokóde BPF, poskytuje podporu pre moduly jadra.
- Pridaná podpora systémových volaní shutdown(), renameat2() a unlinkat() do asynchrónneho I/O rozhrania io_uring. Pri volaní io_uring_enter() bola pridaná možnosť zadať časový limit (podporu argumentu na určenie časového limitu môžete skontrolovať pomocou príznaku IORING_FEAT_EXT_ARG).
- Architektúra ia64 používaná v procesoroch Intel Itanium bola presunutá do kategórie osirelých, čo znamená, že testovanie bolo ukončené. Spoločnosť Hewlett Packard Enterprise prestala prijímať objednávky na nové zariadenia Itanium a Intel tak urobil minulý rok.
- Podpora systémov založených na architektúre MicroBlaze, ktoré neobsahujú jednotku správy pamäte (MMU), bola ukončená. Takéto systémy sa v každodennom živote dlho nevideli.
- Pre architektúru MIPS bola pridaná podpora pre testovanie pokrytia kódu pomocou pomôcky gcov.
- Pridaná podpora pre virtuálnu pomocnú zbernicu na prepojenie s multifunkčnými zariadeniami, ktoré kombinujú funkčnosť vyžadujúcu rôzne ovládače (napríklad sieťové karty s podporou Ethernetu a RDMA). Zbernicu je možné použiť na priradenie primárneho a sekundárneho ovládača k zariadeniu v situáciách, keď je použitie subsystému MFD (Multi-Function Devices) problematické.
- Pre architektúru RISC-V bola pridaná podpora pre systém prideľovania pamäte CMA (Contiguous Memory Allocator), ktorý je optimalizovaný na prideľovanie veľkých súvislých pamäťových oblastí pomocou techník pohybu pamäťových stránok. Pre RISC-V sú implementované aj nástroje na obmedzenie prístupu k /dev/mem a zohľadnenie času spracovania prerušenia.
- Pre 32-bitové systémy ARM bola pridaná podpora pre ladiaci nástroj KASan (Kernel address sanitizer), ktorý pomáha identifikovať chyby pri práci s pamäťou. Pre 64-bitový ARM bola implementácia KASan prevedená na používanie značiek MTE (MemTag).
- Pridané systémové volanie epoll_pwait2() umožňujúce časové limity s presnosťou na nanosekundy (volanie epoll_wait manipuluje s milisekundami).
- Systém zostavovania teraz zobrazuje chybu pri pokuse o zostavenie načítateľných modulov jadra, v ktorých nie je definovaná licencia kódu pomocou makra MODULE_LICENSE(). Odteraz spôsobí chybu pri zostavovaní aj používanie makra EXPORT_SYMBOL() pre statické funkcie.
- Pridaná podpora pre mapovanie GEM objektov z pamäte používanej pre I/O, čo umožnilo zrýchliť prácu s framebufferom na niektorých architektúrach.
- Kconfig zrušil podporu pre Qt4 (pri zachovaní podpory pre Qt5, GTK a Ncurses).
- Virtualizácia a bezpečnosť
- Do systémového volania seccomp() bola pridaná podpora pre režim rýchlej odozvy, ktorý vám umožňuje veľmi rýchlo určiť, či je určité systémové volanie povolené alebo zakázané na základe bitmapy s konštantnou akciou pripojenej k procesu, ktorá nevyžaduje spustenie manipulátor BPF.
- Integrované komponenty jadra na vytváranie a správu enkláv založené na technológii Intel SGX (Software Guard eXtensions), ktorá umožňuje aplikáciám spúšťať kód v izolovaných zašifrovaných oblastiach pamäte, ku ktorým má zvyšok systému obmedzený prístup.
- V rámci iniciatívy na obmedzenie prístupu z užívateľského priestoru do MSR (model-specific register), zápis do registra MSR_IA32_ENERGY_PERF_BIAS, ktorý vám umožňuje zmeniť režim energetickej účinnosti procesora („normálny“, „výkon“, „úspora energie“). , Je zakázané.
- Možnosť zakázať migráciu úloh s vysokou prioritou medzi CPU bola presunutá z vetvy kernel-rt pre systémy v reálnom čase.
- Pre systémy ARM64 bola pridaná možnosť používať MTE tagy (MemTag, Memory Tagging Extension) pre adresy pamäte obslužného programu signálov. Použitie MTE je povolené zadaním možnosti SA_EXPOSE_TAGBITS v sigaction() a umožňuje vám skontrolovať správne použitie ukazovateľov na blokovanie zneužitia zraniteľností spôsobených prístupom k už uvoľneným blokom pamäte, pretečeniu vyrovnávacej pamäte, prístupom pred inicializáciou a používaním mimo aktuálny kontext.
- Pridaný parameter „DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING“, ktorý umožňuje podsystému dm-verity kontrolovať hašovacie podpisy certifikátov umiestnených v sekundárnom zväzku kľúčov. V praxi nastavenie umožňuje overiť nielen certifikáty zabudované v jadre, ale aj certifikáty načítané počas prevádzky, čo umožňuje aktualizovať certifikáty bez aktualizácie celého jadra.
- V používateľskom režime Linux Pridaná podpora pre režim pozastavenia do nečinnosti, ktorý umožňuje zmraziť prostredie a použiť signál SIGUSR1 na prebudenie z režimu spánku.
- Mechanizmus virtio-mem, ktorý vám umožňuje pripojiť a odpojiť pamäť virtuálnym počítačom za chodu, má pridanú podporu pre režim Big Block Mode (BBM), ktorý umožňuje prenášať alebo brať pamäť v blokoch väčších ako je veľkosť pamäte jadra. blok, ktorý je potrebný na optimalizáciu VFIO v QEMU.
- Do implementácie TLS v jadre bola pridaná podpora pre šifru CHACHA20-POLY1305.
- Sieťový subsystém
- Pre 802.1Q (VLAN) bol implementovaný mechanizmus riadenia zlyhania pripojenia (CFM, Connectivity Fault Management), ktorý umožňuje identifikovať, overovať a izolovať zlyhania v sieťach s virtuálnymi mostmi (Virtual Bridged Networks). Napríklad CFM možno použiť na izoláciu problémov v sieťach zahŕňajúcich viacero nezávislých organizácií, ktorých zamestnanci majú prístup len k ich vlastnému zariadeniu.
- Pridaná podpora pre zapuzdrenie paketov protokolu SCTP do paketov UDP (RFC 6951), ktorá vám umožňuje používať SCTP v sieťach so staršími prekladačmi adries, ktoré priamo nepodporujú SCTP, ako aj implementovať SCTP na systémoch, ktoré neposkytujú priamy prístup k IP vrstva.
- Implementácia technológie WiMAX bola presunutá do štádia a je naplánovaná na jej odstránenie v budúcnosti, ak nebudú žiadni používatelia, ktorí potrebujú WiMAX. WiMAX sa už nepoužíva vo verejných sieťach a v jadre je jediným ovládačom, s ktorým možno WiMAX používať, zastaraný ovládač Intel 2400m. Podpora WiMAX bola v konfigurátore siete NetworkManager ukončená v roku 2015. V súčasnosti je WiMax takmer úplne nahradený technológiami ako LTE, HSPA+ a Wi-Fi 802.11n.
- Pracovalo sa na optimalizácii výkonu spracovania prichádzajúcej TCP prevádzky v režime zerocopy, t.j. bez dodatočného kopírovania do nových vyrovnávacích pamätí. Pre stredne veľkú prevádzku, ktorá pokrýva desiatky alebo niekoľko stoviek kilobajtov dát, je použitie zerocopy namiesto recvmsg() výrazne efektívnejšie. Implementované zmeny napríklad umožnili zvýšiť efektivitu spracovania prevádzky v štýle RPC s 32 KB správami pri použití zerocopy o 60 – 70 %.
- Pridané nové volania ioctl() na vytvorenie sieťových mostov zahŕňajúcich viacero prepojení PPP. Navrhovaná schopnosť umožňuje rámcom presúvať sa z jedného kanála do druhého, napríklad z PPPoE do relácie PPPoL2TP.
- Integrácia jadra MPTCP (MultiPath TCP) pokračuje. Ide o rozšírenie protokolu TCP na organizovanie TCP pripojení so súčasným doručovaním paketov pozdĺž viacerých trás cez rôzne sieťové rozhrania viazané na rôzne IP adresy. Nová verzia tiež obsahuje podporu pre možnosť ADD_ADDR na oznamovanie dostupných pripojení. IP adresy ku ktorému sa možno pripojiť pri pridávaní nových streamov do existujúceho pripojenia MPTCP.
- Pridaná možnosť konfigurovať akcie, keď je prekročený rozpočet na dotazovanie pripojenia (busy-polling). Predtým dostupný režim SO_BUSY_POLL znamenal prechod na softirq, keď bol rozpočet vyčerpaný. Pre aplikácie, ktoré musia naďalej používať hlasovanie, sa navrhuje nová možnosť SO_PREFER_BUSY_POLL.
- IPv6 teraz podporuje režimy SRv6 End.DT4 a End.DT6, ktoré sa používajú na vytvorenie viacnájomníckeho IPv4 L3. VPN a zariadenia VRF (virtuálne smerovanie a presmerovanie).
- Netfilter zjednotil implementáciu množinových výrazov, čo umožnilo špecifikovať viacero výrazov pre každý prvok množinových zoznamov.
- Do bezdrôtového zásobníka 802.11 boli pridané rozhrania API na konfiguráciu limitov výkonu SAR, ako aj parametrov AE PWE a HE MCS. Ovládač Intel iwlwifi pridal podporu pre rozsah 6 GHz (Ultra High Band). Ovládač Qualcomm Ath11k pridal podporu pre technológiu FILS (Fast Initial Link Setup, štandardizovanú ako IEEE 802.11ai), ktorá vám umožní zbaviť sa oneskorení pri roamingu počas migrácie z jedného prístupového bodu na druhý.
- Оборудование
- Ovládač amdgpu poskytuje podporu pre AMD "Green Sardine" APU (Ryzen 5000) a "Dimgrey Cavefish" GPU (Navi 2), ako aj počiatočnú podporu pre AMD Van Gogh APU s jadrom Zen 2 a GPU RDNA 2 (Navi 2). Pridaná podpora pre nové identifikátory Renoir APU (založené na CPU Zen 2 a GPU Vega).
- Ovládač i915 pre grafické karty Intel podporuje technológiu IS (Integer scaling) s implementáciou filtra na zvýšenie mierky s prihliadnutím na stav susedných pixelov (interpolácia Najbližší sused) na určenie farby chýbajúcich pixelov. Rozšírená bola podpora pre diskrétne karty Intel DG1. Bola implementovaná podpora technológie „Big Joiner“, ktorá je prítomná už od čipov Ice Lake / Gen11 a umožňuje použiť jeden transkodér na spracovanie dvoch streamov, napríklad na výstup na 8K obrazovku cez jeden DisplayPort. Pridaný režim pre asynchrónne prepínanie medzi dvoma vyrovnávacími pamäťami vo videopamäti (asynchrónne preklopenie).
- Ovládač nouveau pridal počiatočnú podporu pre GPU NVIDIA založené na mikroarchitektúre Ampere (GA100, GeForce RTX 30xx), zatiaľ obmedzenú na nástroje na ovládanie video režimov.
- Pridaná podpora pre protokol 3WIRE používaný v LCD paneloch. Pridaná podpora pre panely novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 a ABT Y030XX067A 3.0. Samostatne si môžeme všimnúť podporu pre panel smartfónov OnePlus 6 a 6T, ktorý umožnil zorganizovať načítanie neupraveného jadra na zariadeniach.
- Pridaná podpora pre prvý samostatný hostiteľský radič Intel USB4, Maple Ridge.
- Pridaná podpora pre zvukové kodeky Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI a XCVR, Realtek RT715 a Qualcomm SM8250.
- Pridaná podpora ARM dosiek, zariadení a platforiem: Galaxy Note 10.1, Microsoft Lumia 950 XL, NanoPi R1, FriendlyArm ZeroPi, Elimo Initium SBC, Broadcom BCM4908, Mediatek MT8192/MT6779/MT8167, MStar Infinity2CM, MarNPll Armed, 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.
- Zabudovaná podpora pre hernú konzolu Ouya založenú na NVIDIA Tegra 3.
Zároveň Latinskoamerická nadácia pre slobodný softvér vytvorila verziu úplne slobodného jadra 5.11 - Linux-libre 5.11-gnu, očistené od prvkov firmvéru a ovládačov obsahujúcich nevoľné komponenty alebo sekcie kódu s obmedzeným rozsahom. Táto nová verzia obsahuje vyčistenie ovládačov pre qat_4xxx (crypto), lt9611uxcm (dsi/hdmi bridge), ccs/smia++ (senzor), ath11k_pci, nxp audio transceiver a mhi pci controller. Kód na čistenie blobov bol aktualizovaný pre ovládače a subsystémy amdgpu, btqca, btrtl, btusb a i915 csr. Nové bloby boli zakázané v m3 rproc, idt82p33 ptp clock a qualcomm arm64.
Zdroj: opennet.ru
