Po dveh mesecih razvoja je Linus Torvalds predstavil različico jedra Linux 5.13. Med najbolj opaznimi spremembami so: datotečni sistem EROFS, začetna podpora za čipe Apple M1, cgroup nadzornik "misc", prekinitev podpore za /dev/kmem, podpora novih GPU-jev Intel in AMD, možnost neposrednega klica funkcij jedra iz BPF programov, ranžiranje sklada jedra za vsak sistemski klic, možnost sestavljanja v Clang z zaščito CFI (Ohranitev pretoka), LSM modul Landlock za dodatno omejevanje procesov, virtualna zvočna naprava na osnovi virtio, multi-shot način v io_uring.
V novo različico je bilo sprejetih 17189 popravkov od 2150 razvijalcev (največje v zgodovini), velikost popravka pa znaša 60 MB (spremembe so vplivale na 12996 datotek, dodanih je bilo 794705 vrstic kode, izbrisanih 399590 vrstic). Približno 47 % vseh predstavljenih sprememb v 5.13 je povezanih z napravami gonilnikov, približno 14 % sprememb se nanaša na posodobitev kode, specifične za strojne arhitekture, 13 % je povezanih s omrežnim steklom, 5 % z datotečnimi sistemi in 4 % z notranjimi podsistemi jedra.
Glavne novosti:
- Дисковая подсистема, ввод/вывод и файловые системы
- Dodana je podpora za datotečni sistem EROFS (Enhanced Read-Only File System), ki ga je predlagala družba Huawei za uporabo na particijah, dostopnih v načinu samo za branje. Novi FS podpira shranjevanje podatkov v stisnjeni obliki in v primerjavi z Ext4 prikazuje podobno zmogljivost pri izvajanju operacij zaporednega branja, vendar večkrat prekaša Ext4 pri naključnem dostopu do podatkov. Na primer, pri ravni stiskanja 4 in testiranju na strežnikom trdem disku je FS EROFS prehitela Ext4 pri operacijah naključnega branja za več kot šestkrat, pri uporabi pametnega telefona Android s Flash pa skoraj trikrat. Tako kot pri drugih read-only FS je struktura EROFS znatno poenostavljena z opustitvijo nekaterih področij metapodatkov pri izvedbi, kot je bitna mapa prostih blokov.
- Za datotečni sistem SMB3 je bila uvedena možnost montaže "rasize", s katero lahko določite velikost okna predhodnega branja (readahead) za povečanje zmogljivosti nekaterih vrst obremenitev.
- V FS ext4 je omogočeno prepisovanje elementov imenikov pri brisanju datotek. V ext4 je prav tako dovoljeno sočasno uporabo delovanja brez upoštevanja velike in male črke ter šifriranja.
- V datovém systému exFAT byla přidána podpora pro ioctl příkaz FITRIM (discard), který informuje úložné zařízení o nepoužívaných blocích v systému souborů.
- V souborovém systému XFS byla přidána funkce uvolnění místa z poslední skupiny alokace, což se stalo prvním krokem k implementaci funkce zmenšení velikosti stávajících oddílů v systému souborů XFS.
- Byl přidán nový systémový volání quotactl_path, které se liší od quotactl tím, že umožňuje spravovat kvóty nikoli prostřednictvím speciálního zařízení, ale pomocí cesty k jeho bodu připojení.
- Mechanismus fanotify rozšířil možnosti dostupné neprivilegovaným uživatelům. Například analogicky k inotify lze nyní bez práv SYS_CAP_ADMIN sledovat události OPEN, ACCESS, MODIFY a CLOSE pro soubory a adresáře.
- Pomnilnik in sistemske storitve
- Byl přidán nový kontroler cgroup – „Misc“ (CONFIG_CGROUP_MISC), určený k omezení a sledování skalarových zdrojů, které je možné spravovat pomocí jednoduchého počítadla a omezovat nastavením maximálních hodnot. Jako příklad využití nového kontroleru cgroup se uvádí správa identifikátorů adresního prostoru používaných v mechanismu AMD SEV (Secure Encrypted Virtualization).
- V rozhraní pro asynchronní vstup/výstup io_uring byl pro požadavky POLL implementován režim „multi-shot“, při kterém POLL není po vygenerování události odstraněn, ale zůstává aktivní a může generovat více událostí.
- Z reálné větve jádra byl přenesen kód, který zajišťuje zpracování softwarově generovaných přerušení v jádrových vláknech, což umožňuje jejich vyřazení více prioritními procesy.
- Byla přidána interní knihovna netfs, do které byly přesunuty standardní funkce používané v síťových souborových systémech.
- Pro architekturu PowerPC byla implementována podpora časových prostorů (time namespaces), které umožňují v kontejneru používat svůj vlastní čas.
- Pro architekturu RISC-V byla implementována podpora kexec, crash dump, kprobe a spuštění jádra z místa (execute-in-place, provedení z původního média, bez kopírování do RAM).
- V BPF programech sledování byla přidána možnost využití úložiště dat místního pro úkol (task-local storage), které zajišťuje vyšší výkon díky vazbě dat na konkrétní BPF handler.
- Uveden je novi mehanizam za direktno pozivanje funkcija jezgra iz BPF programa, koji je već iskorišćen u implementaciji algoritama preopterećenja TCP-a. Za obezbeđivanje bezbednosti, pozvane funkcije moraju biti eksplicitno definisane u beloj listi.
- Sistemu za praćenje funkcija ftrace dodata je opcija func-no-repeats, koja omogućava da se ponavljajući uzastopni pozivi funkcije odraze kao brojač.
- U sistemski poziv userfaultfd(), namenjen za obradu page fault-ova (pristup nealokiranim stranicama memorije) u korisničkom prostoru, dodana je mogućnost upravljanja delimičnim fault-ovima, pri čemu stranica memorije postoji, ali nema zapisa u tabeli stranica memorije.
- Obustavljena je podrška za poseban fajl /dev/kmem, preko kojeg se može pristupiti celom adresnom prostoru jezgra. Ovaj fajl je proglašen zastarelim i stvara probleme sa bezbednošću.
- Za Intel čipove implementiran je novi drajver za upravljanje hlađenjem, koji omogućava smanjenje frekvencije procesora u slučaju opasnosti od pregrevanja. Za razliku od postojećeg mehanizma aktivacije TCC (Thermal Control Circuit), novi drajver manipuliše relativnim vrednostima, tj. može smanjiti frekvenciju u fazi početnog značajnog porasta temperature, ali ne čeka da pređe kritičnu granicu.
- Virtualizacija in varnost
- U sastav uključen LSM modul obezbeđenja izolacije aplikacija Landlock, koji omogućava ograničavanje interakcije sa spoljnim okruženjem grupe procesa i razvijen je imajući u vidu takve mehanizme izolacije kao što su XNU Sandbox, FreeBSD Capsicum i OpenBSD Pledge/Unveil. Logika dodeljivanja pristupa definiše se pomoću BPF programa, ali za razliku od seccomp-bpf, Landlock ne filtrira sistemske pozive i njihove argumente, već omogućava ograničavanje korišćenja objekata jezgra, kao što su hijerarhije fajlova. Pomoću Landlock-a svaki proces, uključujući neprivilegovane, može sigurno izolovati sebe i sprečiti zaobilaženje izolacije u slučaju otkrivanja ranjivosti ili malicioznih izmena u aplikaciji. Landlock omogućava procesu da stvori zaštićena izolovana okruženja, realizovana u vidu dodatnog sloja iznad postojećih sistemskih mehanizama kontrole pristupa. Na primer, program može zabraniti pristup fajlovima izvan radnog direktorijuma.
- Dodana je mogućnost nasumičnog pomeranja u steku jezgra prilikom obrade sistemskih poziva kako bi se otežale napade na stek. Suština predložene zaštite je izbor slučajnog pomeranja steka pri svakom sistemskom pozivu, što otežava određivanje rasporeda steka u memoriji čak i kada se dobiju informacije o adresama, jer će se prilikom sledećeg sistemskog poziva osnovna adresa steka promeniti. Za uključivanje nasumične obrade predloženi su parametri komandne linije jezgra „randomize_kstack_offset=on/off“ i podešavanje CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT. Troškovi se procenjuju na otprilike 1% gubitka performansi.
- Dodata je podrška za izgradnju jezgra sa aktiviranim mehanizmom zaštite CFI (Control Flow Integrity) u Clang kompajleru, koji dodaje provere pre svake indirektne funkcijske poziva kako bi se identifikovale neke forme neodređenog ponašanja koje potencijalno mogu dovesti do kršenja normalnog reda izvršavanja (control flow) usled primene eksploitacija koje menjaju pokazivače na funkcije u memoriji. Za uključivanje CFI predložen je parametar CONFIG_CFI_CLANG.
- U servisu za čuvanje ključeva šifrovanja koje obezbeđuje jezgro, mehanizam poverljivih ključeva (Trusted Keys) sada obuhvata ne samo ključeve iz TPM modula, već i iz TEE okruženja (Trusted Execution Environment). Za upravljanje izvorom poverljivih ključeva predložen je parametar pri pokretanju „trusted.source“. Pored toga, dodata je mogućnost obrade poverljivih ključeva u ASN.1 formatu.
- Dodana je opcija za unapred učitavanje liste opozvanih sertifikata tokom pokretanja jezgra. Rešen je problem (CVE-2020-26541) sa ignorisanjem sertifikata u crnoj listi UEFI Secure Boot koji su isporučeni u EFI_CERT_X509_GUID formatu, što je omogućilo pokretanje sistema sa opozvanim sertifikatom.
- U kriptografsku podstrukturu jezgra dodata je podrška za proveru digitalnih potpisa ECDSA koji se zasnivaju na eliptičnim krivuljama.
- Implementirana je mogućnost verifikacije SELinux politika pomoću IMA (Integrity Measurement Architecture) podstrukture koja obezbeđuje održavanje baze hešova za proveru integriteta podataka.
- Mrežna podsistem
- Podpora tehnologije WiMAX je odstranjena, saj se ta že ne uporablja v javnih omrežjih, v jedru pa edina gonilna enota, ki jo je mogoče uporabiti s WiMAX, ostaja zastarel gonilnik Intel 2400m. V omrežnem konfiguratorju NetworkManager je bila podpora WiMAX ukinjena leta 2015. Trenutno je WiMAX praktično popolnoma nadomestila tehnologije, kot so LTE, HSPA+ in Wi-Fi 802.11n.
- Dodan je gonilnik za omrežni vmesnik MANA (Microsoft Azure Network Adapter).
- V gonilniku ath11k je bila dodana podpora za brezžične module Qualcomm QCN9074, ki podpirajo 802.11ax.
- V gonilniku iwlwifi je bila implementirana pasivna možnost skeniranja kanalov v območju 6GHz. Za Ukrajino je bila dodana podpora za vklop/izklop IEEE 802.11ax na podlagi nastavitev v BIOS-u.
- Optimizirana je bila podpora XDP (eXpress Data Path), ki omogoča manipulacijo omrežnih paketov pred njihovo obdelavo v omrežni skladbi jedra Linux. Opravljeni testi kažejo na povečanje zmogljivosti XDP za 4-8%. Pri napravah virtio lahko povečanje zmogljivosti programske obdelave AF_XDP doseže 33%.
- V ICMP je bila implementirana podpora za razširjena PROBE sporočila, določena v RFC 8335.
- Nadaljuje se integracija razširitve protokola MPTCP (MultiPath TCP) v jedro, ki omogoča delovanje TCP povezave, pri čemer se paketi dostavljajo hkrati po več poteh prek različnih omrežnih vmesnikov, povezanih z različnimi. IP-naslovovV novi izdaji je bila dodana podpora sockopt za nastavitev tipičnih TCP možnosti. Implementirana je bila možnost ponovnega zagona posameznih podtokov (subflow).
- V netfilter je bila dodana podpora za upravljanje z viri z uporabo poenotene hierarhije cgroups v2.
- V ethtool je bil implementiran vmesnik za branje statistike IEEE MIB s podporo za mlx5 in bnxt. Omrežnim gonilnikom je dovoljeno pridobivanje poljubnih podatkov iz SFP EEPROM, tako da manipulirajo ne z seznami pomik + velikost, temveč s stranmi pomnilnika.
- Oprema
- Implementirana je bila začetna podpora za ARM čip Apple M1, ki zajema krmilnik prekinitev, časovnik, UART, SMP, funkcije za organizacijo vnosa/izvoda in MMIO. Povratno inženirstvo GPU še ni zaključeno, podpora za izhod pa je na voljo prek framebufferja in konzole preko serijskega porta.
- Nadaljuje se čiščenje jedra od zastarelih gonilnikov, odstranjeni so bili gonilniki 'gasket' (Google ASIC), 'sysace', 'umem' in več zastarelih gonilnikov za serijske porte.
- Po 13 letih na veji staging je bil stabiliziran in prenesen v glavno različico gonilnika „comedi“ za podporo napravam za zbiranje podatkov.
- Dodano je gonilo GUD (Generic USB Display) z implementacijo osnovnega gonilnika za zaslone in TV-adapterje, priključene preko USB vmesnika. Gonilo omogoča DRM-lastnosti (Direct Rendering Manager) za vrtenje slike, upravljanje svetlosti, dostop do EDID, nastavitev video načinov in povezovanje TV, ki se lahko uporablja kot osnova za ustvarjanje gonilnikov za specifične naprave.
- Dodano je zvočno gonilo „virtio“ z implementacijo virtualne zvočne naprave, ki se lahko uporablja v gostujočih sistemih za predvajanje in snemanje zvoka brez prenosa dostopa do zvočne kartice in brez emulacije.
- V gonilu amdgpu je dodana začetna podpora za GPU Aldebaran (gfx90a). Vključena je začetna podpora za tehnologijo prilagodljive sinhronizacije FreeSync za HDMI (prej je bila na voljo le za DisplayPort), ki omogoča prilagoditev osveževalne frekvence na zaslonu. Vključena je podpora ASSR (Alternate Scrambler Seed Reset). Dodan je ioctl za poizvedbo o zmogljivostih, povezanih s kodiranjem in dekodiranjem videa. Dodan je način CONFIG_DRM_AMD_SECURE_DISPLAY za odkrivanje sprememb na zaslonih, ki prikazujejo kritične informacije. Dodana je podpora za mehanizem varčevanja z energijo ASPM.
- V gonilu i915 za grafične kartice Intel je vključena podpora za čipe Intel Alderlake-S. Dodana je podpora za eDP MSO (Embedded DisplayPort Multi-SST Operation).
- Dodana je podpora za igralni krmilnik Luna (Amazon), pa tudi za na dotik občutljive zaslone Hycon HY46XX, ILITEK Lego Series in MStar MSG2638.
Hkrati je Latinskoameriška fundacija prostega programske opreme oblikovala različico povsem prostega jedra 5.11 — Linux-libre 5.11-gnu, očiščeno od elementov programske opreme in gonilnikov, ki vsebujejo neproste komponente ali dele kode, katerih uporaba je omejena s strani proizvajalca. V novi različici je bila očiščena gonila comedi. Očiščenje gonilnikov cyclades, isicom tty in i2400m wimax je bilo prekinjeno, saj so bili odstranjeni iz jedra. Posodobljen je kodeks čiščenja blobov v gonilnikih in podsystemih amdgpu, i915 csr, r8152 usb, mhi bus, x86 touchscreen in qualcomm arm64.
Izvor: opennet.ru
