Izid jedra Linux 5.11

Po dveh mesecih razvoja je Linus Torvalds predstavil izdajo jedra Linux 5.11. Med najbolj opaznimi spremembami so: podpora za Intel SGX enclaves, nov mehanizem za prestrezanje sistemskih klicev, dodatna virtualna vodila, prepoved sestavljanja modulov brez MODULE_LICENSE(), način hitrega filtriranja sistemskih klicev v seccomp-u, prenehanje podpore za arhitekturo ia64, premik tehnologije WiMAX v vejo 'staging' ter možnost enkapsulacije SCTP v UDP.

V novo različico je bilo sprejetih 15480 popravkov od 1991 razvijalca, velikost popravka pa znaša 72 MB (spremembe so zajele 12090 datotek, dodanih je bilo 868025 vrstic kode in izbrisanih 261456 vrstic). Približno 46% vseh sprememb v 5.11 je povezanih z napravnimi gonilniki, približno 16% sprememb se nanaša na posodobitev kode, specifične za strojne arhitekture, 13% je povezano z omrežnim skladom, 3% z datotečnimi sistemi in 4% z notranjimi podsistemi jedra.

Glavne novosti:

  • Дисковая подсистема, ввод/вывод и файловые системы
    • V Btrfs je bilo dodanih več možnosti za montažo, ki se uporabljajo pri obnovi podatkov s poškodovane datotečnega sistema: 'rescue=ignorebadroots' za montažo kljub poškodbam nekaterih korenskih dreves (extent, uuid, data reloc, device, csum, free space), 'rescue=ignoredatacsums' za izklop preverjanja kontrolnih vsot za podatke in 'rescue=all' za hkratno vključitev načinov 'ignorebadroots', 'ignoredatacsums' in 'nologreplay'. Podpora za možnost montaže 'inode_cache' je bila ukinjena, ki je bila prej razglašena za zastarelo. Koda je pripravljena za izvajanje podporo blokov z metapodatki in podatki, manjšimi od velikosti strani (PAGE_SIZE), ter podporo za način zoniranega dodeljevanja prostora. Nepredpomnjeni (Direct IO) zahtevki so bili preneseni na infrastrukturo iomap. Optimizirana je bila zmogljivost številnih operacij, pri čemer lahko pospešitev v nekaterih primerih doseže celo desetine odstotkov.
    • V XFS je bil uveden zastavica 'needsrepair', ki signalizira potrebo po obnovi. Ko je ta zastavica nastavljena, datotečni sistem ni mogoče montirati, dokler ni zastavica odstranjena s pomočjo orodja xfs_repair.
    • V Ext4 so bile ponujene samo popravke napak in optimizacije ter je bila izvedena čistka kode.
    • Dovolen je ponovni izvoz datotečnih sistemov, montiranih preko NFS (t.j. razdelek, montiran preko NFS, je zdaj mogoče izvoziti preko NFS in uporabiti kot vmesni predpomnilnik).
    • V sistemski klic close_range() je bila dodana možnost CLOSE_RANGE_CLOEXEC, ki omogoča procesu, da hkrati zapre celoten razpon odprtih datotečnih descriptorjev v načinu close-on-exec.
    • V datotečnem sistemu F2FS so bili dodani novi klici ioctl(), ki omogočajo upravljanje, kateri datoteke se shranijo v stisnjeni obliki iz uporabniškega prostora. Dodana je možnost montaže »compress_mode=«, ki omogoča izbiro, kje se nahaja upravljalnik stiskanja, bodisi na strani jedra bodisi v uporabniškem prostoru.
    • Omogočeno je montažo Overlayfs za procesi brez privilegijev, ki uporabljajo ločeni prostor uporabniških identifikatorjev (user namespace). Za preverjanje skladnosti z varnostnim modelom je bila izvedena celovita revizija kode. V Overlayfs je bila prav tako dodana možnost za zagon z uporabo kopij slik datotečnega sistema z opcionalnim izklopom preverjanja UUID.
    • V datotečnem sistemu Ceph je bila dodana podpora za protokol msgr2.1, ki omogoča uporabo algoritma AES-GCM pri prenosu podatkov v šifrirani obliki.
    • V modulu dm-multipath je bila implementirana možnost upoštevanja vezave na CPU ('IO affinity') pri izbiri poti za zahteve vhod/izhod.
  • Pomnilnik in sistemske storitve
    • Dodana je nova mehanizem za prestrezanje sistemskih klicev, ki temelji na prctl() in omogoča generiranje izjem iz uporabniškega prostora ob dostopu do določenega sistema klic in emulacijo njegove izvedbe. Podana funkcionalnost je povpraševana v Wine in Proton za emulacijo sistemskih klicev Windows, kar je potrebno za zagotavljanje združljivosti z igrami in programi, ki neposredno izvajajo sistemske klice mimo Windows API (npr. za zaščito pred nepooblaščenim koristkom).
    • V sistemski klic userfaultfd(), namenjen obravnavi page faults (dostop do nealokiranih strani pomnilnika) v uporabniškem prostoru, je bila dodana možnost izklopa obravnave izjem, ki nastanejo na ravni jedra, da se oteži izkoriščanje nekaterih ranljivosti.
    • V podsistem BPF je bila dodana podpora za lokalno shranjevanje podatkov za naloge (task-local storage), ki zagotavlja vezavo podatkov na določen BPF-obdelovalec.
    • Popolnoma je bila prenovljena evidenca porabe pomnilnika s programi BPF — za upravljanje z uporabo pomnilnika v objektih BPF je bil predlagan cgroup krmilnik namesto memlock rlimit.
    • V mehanizmu BTF (BPF Type Format), ki zagotavlja informacije za preverjanje tipov v psevdokodu BPF, je bila implementirana podpora za jedrne module.
    • V vmesnik za asinhrono vhod/izhod io_uring je bila dodana podpora za sistemske klice shutdown(), renameat2() in unlinkat(). Pri klicu io_uring_enter() je bila dodana možnost navedbe časovnega omejitev (podporo argumenta za navedbo časovnega omejitev je mogoče preveriti s pomočjo zastavice IORING_FEAT_EXT_ARG).
    • Arhitektura ia64, uporabljena v procesorjih Intel Itanium, je bila preklasificirana v kategorijo zapuščenih ('orphaned'), kar pomeni prenehanje testiranja. Podjetje Hewlett Packard Enterprise je prenehalo sprejemati naročila za novo opremo Itanium, Intel pa je to storil že lani.
    • Podpora za sisteme na osnovi arhitekture MicroBlaze, ki nimajo enote za upravljanje pomnilnika (MMU), je bila ukinjena. Takšni sistemi že dolgo niso prisotni v vsakdanji rabi.
    • Za arhitekturo MIPS je bila dodana podpora za testiranje pokritosti kode (coverage testing) s pomočjo orodja gcov.
    • Dodana je bila podpora za pomožno vodilo za interakcijo z večfunkcionalnimi napravami, ki združujejo funkcionalnosti, ki zahtevajo različne gonilnike (na primer, omrežne kartice s podporo za Ethernet in RDMA). Vodilo se lahko uporablja za določitev primarnega in sekundarnega gonilnika za napravo, kadar je uporaba podsistema MFD (Multi-Function Devices) problematična.
    • Za arhitekturo RISC-V je bila dodana podpora za sistem dodeljevanja pomnilnika CMA (Contiguous Memory Allocator), ki je optimiziran za dodelitev velikih neprekinjenih pomnilniških območij z uporabo tehnike premika pomnilniških strani. Za RISC-V so bile prav tako implementirane metode omejevanja dostopa do /dev/mem in beleženja časa obdelave prekinitev.
    • Za 32-bitne sisteme ARM je bila dodana podpora za debug orodje KASan (Kernel address sanitizer), ki omogoča odkrivanje napak pri delu s pomnilnikom. Za 64-bitne ARM je bila implementacija KASan prenesena na uporabo oznak MTE (MemTag).
    • Dodana je bila sistemska klic epoll_pwait2(), ki omogoča uporabo časovnih omejitev z natančnostjo v nanosekundah (klic epoll_wait manipulira z milisekundami).
    • V sistemu za sestavljanje je zagotovljeno prikazovanje napake, ko poskušate sestaviti naložene module jedra, v katerih določena licenca za kodo s pomočjo makra MODULE_LICENSE() ni opredeljena. Napako pri sestavljanju bo zdaj povzročilo tudi uporabo makra EXPORT_SYMBOL() za statične funkcije.
    • Dodana je podpora za preslikavo GEM-objektov iz pomnilnika, ki se uporablja za vhod/izhod, kar je omogočilo hitrejše delo s predpomnilnikom na nekaterih arhitekturah.
    • V Kconfigu je prenehana podpora za Qt4 (ohranjena je podpora za Qt5, GTK in Ncurses).
  • Virtualizacija in varnost
    • V sistemski klic seccomp() je dodana podpora za hitri odziv, ki omogoča zelo hitro določitev, ali je določen sistemski klic dovoljen ali prepovedan na podlagi pripete tabelice pooblastil (constant-action bitmap), ki ne zahteva zagona BPF-obdelovalnika.
    • Integrirani so sestavni deli jedra za ustvarjanje in upravljanje enklav na osnovi tehnologije Intel SGX (Software Guard eXtensions), ki aplikacijam omogoča izvajanje kode v izoliranih, šifriranih območjih pomnilnika, do katerih je dostop preostalega sistema omejen.
    • V okviru pobude za omejevanje dostopa iz uporabniškega prostora do registrov MSR (model-specific register) je prepovedano pisanje v register MSR_IA32_ENERGY_PERF_BIAS, ki omogoča spremembo energijske učinkovitosti procesorja („normal“, „performance“, „powersave“).
    • Iz veje kernel-rt za realnočasovne sisteme je prenesena možnost onemogočanja migracije visoko prioritetnih nalog med CPU.
    • Za sisteme ARM64 je dodana možnost uporabe oznak MTE (MemTag, Memory Tagging Extension) za naslove pomnilnika obdelovalcev signalov. Uporaba MTE se omogoči z navedbo možnosti SA_EXPOSE_TAGBITS v sigaction() in omogoča organizacijo preverjanja pravilnosti uporabe kazalnikov, da se prepreči izkoriščanje ranljivosti, ki jih povzročajo dostopi do že osvobojenih blokov pomnilnika, prekoračitve pomnilnika, dostopi pred inicializacijo in uporaba zunaj trenutnega konteksta.
    • Dodana je možnost „DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING“, ki omogoča podskladu dm-verity preverjanje hash-podpisov certifikatov, shranjenih v sekundarnem skladišču ključev (keyring). V praksi ta nastavitev omogoča preverjanje ne le certifikatov, vgrajenih v jedro, temveč tudi certifikatov, naloženih med delovanjem, kar omogoča posodobitev certifikatov brez posodobitve celotnega jedra.
    • V User-mode Linux je bila dodana podpora za način suspend-to-idle, ki omogoča zamrznitev okolja in uporabo signala SIGUSR1 za prekinitev mirovanja.
    • V mehanizmu virtio-mem, ki omogoča vroče dodajanje in odklapljanje pomnilnika virtualnim strojem, je bila dodana podpora za način velikega bloka (BBM, Big Block Mode), kar omogoča prenos ali umik pomnilnika v blokih, ki presegajo velikost bloka pomnilnika jedra, kar je potrebno za optimizacijo VFIO v QEMU.
    • V implementacijo TLS na ravni jedra je bila dodana podpora za šifro CHACHA20-POLY1305.
  • Mrežna podsistem
    • Za 802.1Q (VLAN) je bil implementiran mehanizem upravljanja napak s povezavo (CFM, Connectivity Fault Management), ki omogoča odkrivanje, preverjanje in izolacijo napak v omrežjih z virtualnimi mostovi (Virtual Bridged Networks). Na primer, CFM se lahko uporablja za lokalizacijo težav v omrežjih, ki zajemajo več neodvisnih organizacij, katerih zaposleni imajo dostop samo do svoje opreme.
    • Dodana je bila podpora za enkapsulacijo paketov protokola SCTP v UDP-pakete (RFC 6951), kar omogoča uporabo SCTP v omrežjih s starejšimi prevajalniki naslovov, ki neposredno ne podpirajo SCTP, ter implementacijo SCTP na sistemih, ki ne zagotavljajo neposrednega dostopa do ravni IP.
    • Izvedba tehnologije WiMAX je bila premaknjena v stanje staging in je v prihodnje predvidena za odstranitev, če ne bodo našli uporabnikov, ki potrebujejo WiMAX. WiMAX se že ne uporablja v javnih omrežjih, edini gonilnik, s katerim je mogoče uporabljati WiMAX v jedru, ostaja zastarel gonilnik Intel 2400m. V omrežnem konfiguratorju NetworkManager je bila podpora za WiMAX ukinjena leta 2015. Trenutno je WiMAX praktično popolnoma nadomestila tehnologije kot so LTE, HSPA+ in Wi-Fi 802.11n.
    • Izvedeno je bilo delo na optimizaciji zmogljivosti obravnave dohodnega TCP prometa v načinu zerocopy, tj. brez dodatnega kopiranja v nove pomnilniške bloke. Za promet srednje velikosti, ki zajema desetine ali več sto kilobajtov podatkov, je uporaba zerocopy namesto recvmsg() znatno bolj učinkovita. Na primer, izvedene spremembe so omogočile povečanje učinkovitosti obravnave prometa v slogu RPC s sporočili v velikosti 32 KB pri uporabi zerocopy za 60-70%.
    • Dodani so novi klici ioctl() za ustvarjanje omrežnih mostov, ki pokrivajo več PPP kanalov. Predlagana funkcionalnost omogoča prenos okvirjev iz enega kanala v drugega, na primer iz PPPoE v sejo PPPoL2TP.
    • Integracija v jedro MPTCP (MultiPath TCP) se nadaljuje, kar je razširitev protokola TCP za organizacijo delovanja TCP povezav, ki omogočajo hkratno dostavo paketov po več poteh prek različnih omrežnih vmesnikov, ki so vezani na različne IP naslove. V novi različici je bila uvedena podpora za možnost ADD_ADDR za napoved razpoložljivih IP naslovov povezav, ko se dodajajo novi tokovi obstoječi MPTCP povezavi.
    • Dodana je možnost nastavitve dejanj ob presežku proračuna za busy-polling povezave. Prej uporabljeni način SO_BUSY_POLL je predvideval preklop na softirq ob izčrpanju proračuna. Za aplikacije, ki morajo še naprej uporabljati polling, je bila predlagana nova možnost SO_PREFER_BUSY_POLL.
    • V IPv6 je bila implementirana podpora za načine SRv6 End.DT4 in End.DT6, ki se uporabljajo za ustvarjanje večuporabniških IPv4 L3 VPN in naprav VRF (Virtual routing and forwarding).
    • V Netfilter je bila poenotena implementacija izrazov set, kar je omogočilo določitev več izrazov za vsak element set-seznamov.
    • V brezžičnem skladu 802.11 so dodani API-ji za nastavitev omejitev moči SAR ter parametrov AE PWE in HE MCS. V gonilniku Intel iwlwifi je bila dodana podpora za obseg 6GHz (Ultra High Band). V gonilniku Qualcomm Ath11k je bila dodana podpora za tehnologijo hitrega nastavljanja povezave FILS (Fast Initial Link Setup, standardizirana kot IEEE 802.11ai), ki omogoča odpravo zamud pri preklapljanju med dostopnimi točkami.
  • Oprema
    • V gonilniku amdgpu je bila implementirana podpora za APU AMD 'Green Sardine' (Ryzen 5000) in GPU 'Dimgrey Cavefish' (Navi 2), ter začetna podpora za APU AMD Van Gogh z jedrom Zen 2 in GPU RDNA 2 (Navi 2). Dodana je podpora za nove identifikatorje APU Renoir (na osnovi CPU Zen 2 in GPU Vega).
    • V gonilniku i915 za Intel grafične kartice je implementirana podpora za tehnologijo IS (Integer scaling) z izvedbo filtra za povečanje mere ob upoštevanju stanja sosednjih pikslov (Nearest-neighbor interpolacija) za določanje barve manjkajočih pikslov. Razširjena je podpora za diskretne grafične kartice Intel DG1. Uvedena je podpora za tehnologijo 'Big Joiner', ki je prisotna od čipov Ice Lake / Gen11 in omogoča uporabo enega transkoderja za obdelavo dveh tokov, na primer, za izhod na 8K zaslon preko enega DisplayPort-a. Dodan je način asinhronega preklapljanja med dvema pomnilnikoma v video pomnilniku (async flip).
    • V gonilniku nouveau je bila dodana začetna podpora za GPU NVIDIA na osnovi mikroarhitekture 'Ampere' (GA100, GeForce RTX 30xx), ki je trenutno omejena na sredstva za upravljanje video režimov.
    • Dodana je podpora za protokol 3WIRE, uporabljen v LCD panelih. Dodana je podpora za panele novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 in ABT Y030XX067A 3.0. Posebej izstopa podpora za panel pametnih telefonov OnePlus 6 in 6T, kar je omogočilo zagon na napravah z nespremenjenim jedrom.
    • Dodana je podpora za prvega diskretnega USB4 gostitelja Intel Maple Ridge.
    • Dodana je podpora za avdio kodeke Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI in XCVR, Realtek RT715 in Qualcomm SM8250.
    • Dodana je podpora ARM platformam, napravam in platformam: 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 na osnovi Marvell Prestera 98DX3236, strežniki z Nuvoton NPCM750 BMC, Kontron i.MX8M Mini, Espressobin Ultra, 'Trogdor' Chromebook, Kobol Helios64, Engicam PX30.Core.
    • Vgrajena je podpora za igralno konzolo Ouya na osnovi NVIDIA Tegra 3.

Hkrati je latinski Ameriški sklad prostega programja oblikoval različico popolnoma prostega jedra 5.11 - Linux-libre 5.11-gnu, očiščenega od elementov trdega diska in gonilnikov, ki vsebujejo nesvobodne komponente ali odseke kode, katerih področje uporabe je omejeno na proizvajalca. V novi različici je bila izvedena čistka gonilnikov za qat_4xxx (crypto), lt9611uxcm (dsi/hdmi bridge), ccs/smia++ (sensor), ath11k_pci, nxp audio transceiver in mhi pci controller. Posodobljen je koda za čiščenje blobov v gonilnikih in podsistemih amdgpu, btqca, btrtl, btusb, i915 csr. Isključeni so novi blobi v m3 rproc, idt82p33 ptp clock in qualcomm arm64.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster