Uvoľnenie jadra Linux 5.13

Po dvoch mesiacoch vývoja predstavil Linus Torvalds vydanie jadra Linux 5.13. Medzi najpozoruhodnejšími zmenami sú: súborový systém EROFS, počiatočná podpora čipov Apple M1, cgroup kontroller „misc“, zastavenie podpory /dev/kmem, podpora nových GPU Intel a AMD, možnosť priamych volaní funkcií jadra z BPF programov, randomizácia zásobníka jadra pre každý systémový volanie, možnosť kompilácie v Clang s ochranou CFI (Control Flow Integrity), LSM modul Landlock pre ďalšie obmedzenie procesov, virtuálne zvukové zariadenie na báze virtio, multi-shot režim v io_uring.

Do novej verzie bolo prijatých 17189 opráv od 2150 vývojárov (najviac v histórii), veľkosť patchu je 60 MB (zmeny sa dotkli 12996 súborov, pridalo sa 794705 riadkov kódu, odstránilo 399590 riadkov). Približne 47% všetkých zmien predložených v 5.13 súvisí s ovládačmi zariadení, približne 14% zmien sa týka aktualizácie kódu špecifického pre hardvérové architektúry, 13% súvisí so sieťovým zásobníkom, 5% - s súborovými systémami a 4% s internými subsystémami jadra.

Hlavné novinky:

  • Diskový subsystém, I/O a súborové systémy
    • Pridaná podpora súborového systému EROFS (Enhanced Read-Only File System), navrhnutého spoločnosťou Huawei na použitie na oddieloch dostupných v režime iba na čítanie. Nový FS podporuje ukladanie dát v komprimovanej forme a v porovnaní s Ext4 vykazuje podobnú výkonnosť pri vykonávaní operácií sekvenčného čítania, ale výrazne prekonáva Ext4 pri náhodnom prístupe k dátam. Napríklad pri úrovni kompresie 4 a testovaní na serveri s pevným diskom FS EROFS prekonala Ext4 v operáciách náhodného čítania viac ako šesťkrát, a pri použití Android smartfónu s Flash takmer trikrát. Rovnako ako v iných read-only FS je štruktúra EROFS podstatne zjednodušená vďaka odstráneniu niektorých oblastí metadát, ako je bitová mapa voľných blokov.
    • Pre súborový systém SMB3 bola implementovaná možnosť montovania „rasize“, pomocou ktorej je možné určiť veľkosť okna predčítania (readahead) na zvýšenie výkonu niektorých typov záťaže.
    • V systéme ext4 je zabezpečené prepísanie prvkov adresárov pri odstraňovaní súborov. V ext4 je tiež povolené súčasné použitie režimu bez ohľadu na veľkosť písmen a šifrovania.
    • Vo FS exFAT bola pridaná podpora príkazu ioctl FITRIM (discard) na informovanie disku o nepoužívaných blokoch vo FS.
    • Vo FS XFS bola pridaná možnosť získať miesto z poslednej skupiny alokácie vo FS, čo sa stalo prvým krokom pri realizácii funkcie zmenšovania veľkosti existujúcich oddielov vo FS XFS.
    • Bol pridaný nový systémový hovor quotactl_path, ktorý sa od quotactl líši tým, že umožňuje spravovať kvóty nie cez špeciálny súbor zariadenia, ale určením cesty k bodu pripojenia FS.
    • Vo mechanizme fanotify boli rozšírené možnosti dostupné neoprávneným používateľom. Napríklad, analogicky s inotify bez práv SYS_CAP_ADMIN je teraz možné sledovať udalosti OPEN, ACCESS, MODIFY a CLOSE pre súbory a adresáre.
  • Pamäť a systémové služby
    • Bol pridaný nový kontrolér cgroup — «Misc» (CONFIG_CGROUP_MISC), určený na obmedzenie a sledovanie skalárnych zdrojov, ktorými sa dá spravovať pomocou jednoduchého počítadla a obmedzovať napríklad maximálne prijateľné hodnoty. Ako príklad využitia nového kontroléra cgroup je spomenuté riadenie identifikátorov adresného priestoru používaných v mechanizme AMD SEV (Secure Encrypted Virtualization).
    • V rozhraní asynchrónneho vstupu/výstupu io_uring pre požiadavky POLL bol implementovaný režim «multi-shot», pri ktorom POLL nie je odstránené po vygenerovaní udalosti, ale zostáva aktívne a môže generovať viacero udalostí.
    • Z vetvy realtime jadra bol presunutý kód, ktorý zaručuje spracovanie programovo generovaných prerušením v jadrových vláknach, čo umožňuje ich nahradenie prioritnejšími procesmi.
    • Bola pridaná interná knižnica netfs, do ktorej boli presunuté typické funkcie používané v sieťových súborových systémoch.
    • Pre architektúru PowerPC bola implementovaná podpora časových priestorov (time namespaces), ktoré umožňujú používať v kontajneri vlastný čas.
    • Pre architektúru RISC-V bola implementovaná podpora kexec, crash dump, kprobe a spustenie jadra na mieste (execute-in-place, vykonávanie z pôvodného média, bez kopírovania do RAM).
    • V BPF programoch pre trasovanie sa objavila možnosť používať úložisko dát lokálne pre úlohu (task-local storage), ktoré poskytuje vyšší výkon vďaka pripájaniu dát k konkrétnemu BPF spracovateľovi.
    • Bol zavedený nový mechanizmus pre priame volanie funkcií jadra z BPF programov, ktorý už bol použitý pri implementácii algoritmov preťaženia TCP. Na zabezpečenie bezpečnosti musia byť volané funkcie jasne definované v bielom zozname.
    • Do systému trasovania funkcií ftrace bola pridaná možnosť func-no-repeats, ktorá umožňuje zobraziť opakujúce sa po sebe idúce volania funkcie vo forme čítača.
    • Do systémového volania userfaultfd(), určeného na spracovanie zlyhaní strán (prístup k nealokovaným stránkam pamäte) v priestore používateľa, bola pridaná možnosť spravovať čiastočné zlyhania, pri ktorých stránka pamäte existuje, ale nie sú zaznamenané v tabuľke strán pamäte.
    • Podpora špeciálneho súboru /dev/kmem, pomocou ktorého je možné pristupovať ku všetkému adresnému priestoru jadra, bola ukončená. Tento súbor bol uznaný za zastaraný a vytvára problémy s bezpečnosťou.
    • Pre čipy Intel bol implementovaný nový ovládač pre správu chladenia, ktorý umožňuje znižovať frekvenciu procesora pri nebezpečenstve prehriatia. Na rozdiel od existujúceho mechanizmu aktivácie TCC (Thermal Control Circuit) nový ovládač manipuluje s relatívnymi hodnotami, t.j. môže znížiť frekvenciu už na začiatku výrazného nárastu teploty, ale nečaká na prekročenie kritickej hranice.
  • Virtualizácia a bezpečnosť
    • Bol zahrnutý LSM modul na zabezpečenie izolácie aplikácií Landlock, ktorý umožňuje obmedziť interakciu s vonkajším prostredím skupiny procesov a bol vyvinutý s ohľadom na také mechanizmy izolácie, ako XNU Sandbox, FreeBSD Capsicum a OpenBSD Pledge/Unveil. Logika poskytovania prístupu je určená pomocou BPF programu, no na rozdiel od seccomp-bpf, Landlock nefiltroval systémové volania a ich argumenty, ale umožňuje obmedziť používanie objektov jadra, ako sú hierarchie súborov. S pomocou Landlock môže každý proces, vrátane nepovolených, spoľahlivo izolovať seba a zabrániť obchádzaniu izolácie v prípade zistenia zraniteľností alebo škodlivých zmien v aplikácii. Landlock umožňuje procesu vytvoriť chránené izolované prostredia realizované vo forme dodatočnej vrstvy nad existujúcimi systémovými mechanizmami správy prístupu. Napríklad program môže zakázať prístup k súborom mimo pracovného adresára.
    • Pridaná možnosť randomizácie posunov v zásobníku jadra pri spracovaní systémových volaní s cieľom skomplikovať útoky na zásobník. Podstata navrhovanej ochrany spočíva vo výbere náhodného posunu zásobníka pri každom systémovom volaní, čo komplikuje určenie rozloženia zásobníka v pamäti, aj keď sú k dispozícii informácie o adresách, pretože pri nasledujúcom systémovom volaní sa základná adresa zásobníka zmení. Na aktiváciu randomizácie sú navrhnuté parametre príkazového riadku jadra „randomize_kstack_offset=on/off“ a nastavenie CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT. Náklady sú odhadované na približne 1% straty výkonu.
    • Pridaná podpora zostavenia jadra s aktivovaním mechanizmu ochrany CFI (Control Flow Integrity) v kompilátore Clang, ktorý pridáva pred každým nepriameho volania funkcie kontrolu na odhalenie niektorých foriem neurčitého správania, ktoré potenciálne môžu viesť k narušeniu normálneho poradia vykonávania (control flow) v dôsledku použitia exploitov, ktoré menia uložené v pamäti ukazovatele na funkcie. Na aktiváciu CFI je navrhnutý parameter CONFIG_CFI_CLANG.
    • V poskytovanej službe jadra na ukladanie šifrovacích kľúčov (key ring) teraz mechanizmus dôveryhodných kľúčov (Trusted Keys) pokrýva nielen kľúče z TPM modulov, ale aj z prostredí TEE (Trusted Execution Environment). Na správu zdroja dôveryhodných kľúčov je navrhnutý spúšťací parameter „trusted.source“. Okrem toho bola pridaná možnosť spracovania dôveryhodných kľúčov vo formáte ASN.1.
    • Bol pridaný parameter na preemptívne načítanie zoznamu odvolaných certifikátov počas načítania jadra. Riešený problém (CVE-2020-26541) s ignorovaním v čiernej listine UEFI Secure Boot certifikátov dodávaných vo formáte EFI_CERT_X509_GUID, čo umožnilo načítať systém s odvolaným certifikátom.
    • Do kryptosub systému jadra bola pridaná podpora overovania digitálnych podpisov ECDSA na báze eliptických kriviek.
    • Realizovaná možnosť verifikácie politík SELinux pomocou subsystému IMA (Integrity Measurement Architecture), ktorý zabezpečuje udržovanie databázy hashov na overenie integrity dát.
  • Sieťový subsystém
    • Podpora technológie WiMAX bola zrušená, pretože sa už nepoužíva v verejných sieťach, a jediným ovládačom, s ktorým sa môže WiMAX používať, zostáva zastaraný ovládač Intel 2400m. V sieťovom konfigurátore NetworkManager bola podpora WiMAX ukončená v roku 2015. V súčasnosti je WiMAX prakticky úplne nahradená technológiami ako LTE, HSPA+ a Wi-Fi 802.11n.
    • Bol pridaný ovládač pre sieťový adaptér MANA (Microsoft Azure Network Adapter).
    • Do ovládača ath11k bola pridaná podpora bezdrôtových modulov Qualcomm QCN9074 s podporou 802.11ax.
    • V ovládači iwlwifi bola implementovaná možnosť pasívneho skenovania kanálov v pásme 6GHz. Pre Ukrajinu bola pridaná podpora zapínania/vypínania IEEE 802.11ax na základe parametrov v BIOS.
    • Bola optimalizovaná subsystém XDP (eXpress Data Path), ktorý umožňuje manipuláciu so sieťovými paketmi pred ich spracovaním sieťovým zásobníkom jadra Linux. Realizované testy preukazujú zvýšenie výkonu XDP o 4-8%. Pre zariadenia virtio môže prílev výkonu softvérovej spracovania AF_XDP dosiahnuť 33%.
    • V ICMP bola implementovaná podpora rozšírených PROBE správ definovaných v RFC 8335.
    • Pokračuje integrácia do jadra MPTCP (MultiPath TCP), rozšírenia protokolu TCP na organizovanie práce TCP spojenia s dodávkou paketov súčasne cez viacero trás prostredníctvom rôznych sieťových rozhraní, priradených k rôznym IP adresy. V novej verzii bola pridaná podpora sockopt pre nastavenie typových volieb TCP. Bol umožnený reset jednotlivých podprúdov (subflow).
    • V netfilter bola pridaná podpora správy zdrojov pomocou zjednotenej hierarchie cgroups v2.
    • V ethtool bola implementovaná rozhranie na čítanie štatistík IEEE MIB s podporou mlx5 a bnxt. Sieťovým ovládačom bolo povolené extrahovanie akýchkoľvek údajov zo SFP EEPROM manipulovaním nie spárovaním posun+veľkosť, ale stránkami pamäti.
  • Zariadenie
    • Bola implementovaná počiatočná podpora ARM čipu Apple M1, pokrývajúca ovládač prerušení, časovač, UART, SMP a funkcie na organizovanie vstupu/výstupu a MMIO. Reverzné inžinierstvo GPU ešte nie je dokončené, pre organizáciu výstupu je poskytovaná podpora rámcového buffera a konzoly cez sériový port.
    • Pokračuje čistenie jadra od starých ovládačov, odstránené boli ovládače „gasket“ (Google ASIC), „sysace“, „umem“ a niekoľko starých ovládačov pre sériové porty.
    • Po 13 rokoch v stagingovom vetve bol ovládač „comedi“ stabilizovaný a presunutý do hlavnej zostavy na podporu zariadení na zber dát.
    • Bol pridaný ovládač GUD (Generic USB Display) s realizáciou základného ovládača pre obrazovky a TV adaptér, ktoré sú pripojené cez rozhranie USB. Ovládač poskytuje vlastnosti DRM (Direct Rendering Manager) na otáčanie obrazu, ovládanie jasu, prístup k EDID, nastavenie video režimov a pripojenie TV, ktoré môžu byť použité ako základ pre vytvorenie ovládačov pre konkrétne zariadenia.
    • Bol pridaný zvukový ovládač «virtio» s realizáciou virtuálneho zvukového zariadenia, ktoré môže byť použité v hosťujúcich systémoch na výstup a záznam zvuku bez prenosu prístupu k zvukovej karte a bez emulácie.
    • V ovládači amdgpu bola pridaná počiatočná podpora GPU Aldebaran (gfx90a). Bola aktivovaná počiatočná podpora technológie adaptívnej synchronizácie FreeSync pre HDMI (predtým dostupná pre DisplayPort), ktorá umožňuje korekciu frekvencie obnovovania informácií na obrazovke. Bola pridaná podpora ASSR (Alternate Scrambler Seed Reset). Bol pridaný ioctl na požiadanie o možnosti spojené s kódovaním a dekódovaním videa. Bol pridaný režim CONFIG_DRM_AMD_SECURE_DISPLAY na zistenie zmien na displejoch, ktoré zobrazujú kriticky dôležité informácie. Bola pridaná podpora mechanizmu šetrenia energie ASPM.
    • V ovládači i915 pre grafické karty Intel bola pridaná podpora čipov Intel Alderlake-S. Bola pridaná podpora eDP MSO (Embedded DisplayPort Multi-SST Operation).
    • Bola pridaná podpora herného ovládača Luna (Amazon), ako aj dotykových obrazoviek Hycon HY46XX, ILITEK Lego Series a MStar MSG2638.

Súčasne latinskoamerický Fond slobodného softvéru vytvoril variant úplne slobodného jadra 5.11 — Linux-libre 5.11-gnu, vyčisteného od prvkov firmvéru a ovládačov, ktoré obsahujú neslobodné komponenty alebo časti kódu, ktorých rozsah použitia je obmedzený výrobcom. V novej verzii bola prevedená čistasť ovládača comedi. Prečistenie ovládačov cyclades, isicom tty a i2400m wimax bolo zastavené, ktoré boli odstránené z jadra. Bolo aktualizované kód čistenia blobov v ovládačoch a podsystémoch amdgpu, i915 csr, r8152 usb, mhi bus, x86 touchscreen a qualcomm arm64.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster