Izdaja jedra Linuxa 5.11

Po dveh mesecih razvoja je Linus Torvalds predstavil izdajo jedra Linuxa 5.11. Med najbolj opaznimi spremembami: podpora za enklave Intel SGX, nov mehanizem za prestrezanje sistemskih klicev, virtualno pomožno vodilo, prepoved sestavljanja modulov brez MODULE_LICENSE(), hiter način filtriranja sistemskih klicev v seccomp, ukinitev podpore za arhitektura ia64, prenos tehnologije WiMAX v »staging« vejo, možnost inkapsulacije SCTP v UDP.

Nova različica vključuje 15480 popravkov 1991 razvijalcev, velikost popravka je 72 MB (spremembe so vplivale na 12090 datotek, dodanih je bilo 868025 vrstic kode, izbrisanih je bilo 261456 vrstic). Približno 46 % vseh sprememb, uvedenih v 5.11, je povezanih z gonilniki naprav, približno 16 % sprememb je povezanih s posodabljanjem kode, specifične za arhitekture strojne opreme, 13 % je povezanih z omrežnim skladom, 3 % je povezanih z datotečnimi sistemi in 4 % so povezani z notranjimi podsistemi jedra.

Glavne novosti:

  • Diskovni podsistem, V/I in datotečni sistemi
    • V Btrfs je bilo dodanih več možnosti vpenjanja za uporabo pri obnavljanju podatkov iz poškodovanega datotečnega sistema: »rescue=ignorebadroots« za pripenjanje kljub poškodbam nekaterih korenskih dreves (obseg, uuid, relokacija podatkov, naprava, csum, prosti prostor), » rescue=ignoredatacsums«, da onemogočite preverjanje kontrolne vsote za podatke, in »rescue=all«, da hkrati omogočite načine 'ignorebadroots', 'ignoredatacsums' in 'nologreplay'. Možnost priklopa "inode_cache", ki je bila prej opuščena, je bila opuščena. Koda je bila pripravljena za implementacijo podpore za bloke z metapodatki in podatki, ki so manjši od velikosti strani (PAGE_SIZE), kot tudi podporo za conski način dodeljevanja prostora. Zahteve brez medpomnjenja (neposredni IO) so bile premaknjene v infrastrukturo iomap. Učinkovitost številnih operacij je optimizirana, v nekaterih primerih lahko pospešek doseže več deset odstotkov.
    • XFS implementira zastavico "needsrepair", ki signalizira potrebo po popravilu. Ko je ta zastavica nastavljena, datotečnega sistema ni mogoče namestiti, dokler zastavice ne ponastavi pripomoček xfs_repair.
    • Ext4 ponuja le popravke napak in optimizacije ter čiščenje kode.
    • Dovoljen je ponovni izvoz datotečnih sistemov, nameščenih prek NFS (tj. particijo, nameščeno prek NFS, je zdaj mogoče izvoziti prek NFS in uporabiti kot vmesni predpomnilnik).
    • Sistemski klic close_range(), ki omogoča procesu, da zapre celoten obseg odprtih deskriptorjev datotek hkrati, je dodal možnost CLOSE_RANGE_CLOEXEC za zapiranje deskriptorjev v načinu close-on-exec.
    • Datotečni sistem F2FS doda nove klice ioctl(), da omogoči nadzor uporabniškega prostora nad tem, katere datoteke so shranjene v stisnjeni obliki. Dodana možnost priklopa "compress_mode=" za izbiro, ali naj se upravljalnik stiskanja postavi na stran jedra ali v uporabniški prostor.
    • Zagotovljena možnost vpetja Overlayfs s strani neprivilegiranih procesov z uporabo ločenega uporabniškega imenskega prostora. Za preverjanje skladnosti z implementacijo varnostnega modela je bila izvedena popolna revizija kode. Overlayfs dodaja tudi možnost zagona z uporabo kopij slik datotečnega sistema, tako da izbirno onemogoči preverjanje UUID.
    • Datotečni sistem Ceph ima dodano podporo za protokol msgr2.1, ki omogoča uporabo algoritma AES-GCM pri prenosu podatkov v šifrirani obliki.
    • Modul dm-multipath izvaja zmožnost upoštevanja afinitete procesorja (»IO afiniteta«) pri izbiri poti za V/I zahteve.
  • Pomnilniške in sistemske storitve
    • Dodan je nov mehanizem za prestrezanje sistemskih klicev, ki temelji na prctl(), ki vam omogoča ustvarjanje izjem iz uporabniškega prostora pri dostopu do določenega sistemskega klica in posnemanje njegove izvedbe. Ta funkcionalnost je potrebna v Wine in Proton za posnemanje sistemskih klicev Windows, kar je potrebno za zagotovitev združljivosti z igrami in programi, ki neposredno izvajajo sistemske klice mimo Windows API (na primer za zaščito pred nepooblaščeno uporabo).
    • Sistemski klic userfaultfd(), zasnovan za obravnavo napak strani (dostop do nedodeljenih pomnilniških strani) v uporabniškem prostoru, ima zdaj možnost onemogočiti obravnavo izjem, ki se pojavi na ravni jedra, da oteži izkoriščanje določenih ranljivosti.
    • Podsistem BPF je dodal podporo za lokalno shranjevanje nalog, ki zagotavlja vezavo podatkov na določen upravljalnik BPF.
    • Obračun porabe pomnilnika s programi BPF je bil popolnoma preoblikovan - namesto memlock rlimit je bil predlagan krmilnik cgroup za upravljanje porabe pomnilnika v objektih BPF.
    • Mehanizem BTF (BPF Type Format), ki zagotavlja informacije o preverjanju tipa v psevdokodi BPF, zagotavlja podporo za module jedra.
    • Dodana podpora za sistemske klice shutdown(), renameat2() in unlinkat() v asinhroni V/I vmesnik io_uring. Pri klicu io_uring_enter() je bila dodana možnost določitve časovne omejitve (lahko preverite podporo za argument za določitev časovne omejitve z uporabo zastavice IORING_FEAT_EXT_ARG).
    • Arhitektura ia64, ki se uporablja v procesorjih Intel Itanium, je bila premaknjena v kategorijo osirotelih, kar pomeni, da se je testiranje ustavilo. Hewlett Packard Enterprise je prenehal sprejemati naročila za novo opremo Itanium, Intel pa je to storil lani.
    • Podpora za sisteme, ki temeljijo na arhitekturi MicroBlaze in ne vključujejo enote za upravljanje pomnilnika (MMU), je bila ukinjena. Takih sistemov že dolgo nismo videli v vsakdanjem življenju.
    • Za arhitekturo MIPS je bila dodana podpora za testiranje pokritosti kode s pomočjo pripomočka gcov.
    • Dodana podpora za virtualno pomožno vodilo za povezovanje z večnamenskimi napravami, ki združujejo funkcionalnost, ki zahteva različne gonilnike (na primer omrežne kartice s podporo za Ethernet in RDMA). Vodilo se lahko uporablja za dodelitev primarnega in sekundarnega gonilnika napravi v primerih, ko je uporaba podsistema MFD (večfunkcijskih naprav) problematična.
    • Za arhitekturo RISC-V je bila dodana podpora za sistem dodeljevanja pomnilnika CMA (Contiguous Memory Allocator), ki je optimiziran za dodeljevanje velikih sosednjih pomnilniških območij s tehnikami premikanja pomnilniških strani. Za RISC-V so implementirana tudi orodja za omejevanje dostopa do /dev/mem in upoštevanje časa obdelave prekinitev.
    • Za 32-bitne sisteme ARM je bila dodana podpora za orodje za odpravljanje napak KASan (Kernel address sanitizer), ki pomaga prepoznati napake pri delu s pomnilnikom. Za 64-bitni ARM je bila implementacija KASan pretvorjena za uporabo oznak MTE (MemTag).
    • Dodan sistemski klic epoll_pwait2(), ki omogoča časovne omejitve z nanosekundno natančnostjo (klic epoll_wait manipulira z milisekundami).
    • Sistem gradnje zdaj prikaže napako, ko poskuša zgraditi naložljive module jedra, v katerih licenca kode ni definirana z uporabo makra MODULE_LICENSE(). Od zdaj naprej bo uporaba makra EXPORT_SYMBOL() za statične funkcije povzročila tudi napako pri gradnji.
    • Dodana podpora za preslikavo objektov GEM iz pomnilnika, ki se uporablja za I/O, kar je omogočilo pospešitev dela z medpomnilnikom okvirjev na nekaterih arhitekturah.
    • Kconfig je opustil podporo za Qt4 (ohranil pa je podporo za Qt5, GTK in Ncurses).
  • Virtualizacija in varnost
    • Sistemskemu klicu seccomp() je bila dodana podpora za način hitrega odziva, ki vam omogoča, da zelo hitro ugotovite, ali je določen sistemski klic dovoljen ali prepovedan na podlagi bitne slike s konstantnim delovanjem, priložene procesu, ki ne zahteva izvajanja upravljalnik BPF.
    • Integrirane komponente jedra za ustvarjanje in upravljanje enklav na osnovi tehnologije Intel SGX (Software Guard eXtensions), ki omogoča aplikacijam izvajanje kode v izoliranih šifriranih območjih pomnilnika, do katerih ima preostali sistem omejen dostop.
    • Kot del pobude za omejitev dostopa iz uporabniškega prostora do MSR (register, specifičen za model), pisanje v register MSR_IA32_ENERGY_PERF_BIAS, ki vam omogoča spreminjanje načina energetske učinkovitosti procesorja (»normal«, »performance«, »powersave«) , je prepovedano.
    • Možnost onemogočanja selitve nalog z visoko prioriteto med procesorji je bila premaknjena iz veje kernel-rt za sisteme v realnem času.
    • Za sisteme ARM64 je bila dodana možnost uporabe oznak MTE (MemTag, Memory Tagging Extension) za pomnilniške naslove upravljavca signalov. Uporaba MTE je omogočena z določitvijo možnosti SA_EXPOSE_TAGBITS v sigaction() in vam omogoča, da preverite pravilno uporabo kazalcev za blokiranje izkoriščanja ranljivosti, ki jih povzroči dostopanje do že sproščenih pomnilniških blokov, prelivanje medpomnilnika, dostopi pred inicializacijo in uporaba zunaj trenutni kontekst.
    • Dodan parameter »DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING«, ki podsistemu dm-verity omogoča preverjanje zgoščenih podpisov potrdil, nameščenih v sekundarnem obesku ključev. V praksi nastavitev omogoča preverjanje ne samo potrdil, vgrajenih v jedro, temveč tudi potrdil, naloženih med delovanjem, kar omogoča posodobitev potrdil brez posodobitve celotnega jedra.
    • Linux v uporabniškem načinu je dodal podporo za način mirovanja, ki vam omogoča, da zamrznete okolje in uporabite signal SIGUSR1 za prebujanje iz načina mirovanja.
    • Mehanizem virtio-mem, ki vam omogoča vročo priključitev in odklop pomnilnika od navideznih strojev, ima dodano podporo za Big Block Mode (BBM), ki omogoča prenos ali prevzem pomnilnika v blokih, večjih od velikosti pomnilnika jedra blok, ki je potreben za optimizacijo VFIO v QEMU.
    • Podpora za šifro CHACHA20-POLY1305 je bila dodana implementaciji jedra TLS.
  • Omrežni podsistem
    • Za 802.1Q (VLAN) je implementiran mehanizem za upravljanje napak povezave (CFM, Connectivity Fault Management), ki omogoča prepoznavanje, preverjanje in izolacijo napak v omrežjih z virtualnimi mostovi (Virtual Bridged Networks). Na primer, CFM se lahko uporablja za izolacijo težav v omrežjih, ki obsegajo več neodvisnih organizacij, katerih zaposleni imajo dostop samo do lastne opreme.
    • Dodana podpora za enkapsulacijo paketov protokola SCTP v pakete UDP (RFC 6951), ki omogoča uporabo SCTP v omrežjih s starejšimi prevajalniki naslovov, ki ne podpirajo neposredno SCTP, kot tudi implementacijo SCTP v sistemih, ki ne omogočajo neposrednega dostopa do IP plast.
    • Implementacija tehnologije WiMAX je bila premaknjena v uprizoritev in je predvidena za odstranitev v prihodnosti, če ne bo uporabnikov, ki potrebujejo WiMAX. WiMAX se v javnih omrežjih ne uporablja več, v jedru pa je edini gonilnik, s katerim je mogoče uporabljati WiMAX, zastarel gonilnik Intel 2400m. Podpora za WiMAX je bila v omrežnem konfiguratorju NetworkManager ukinjena leta 2015. Trenutno je WiMax skoraj v celoti nadomeščen s tehnologijami, kot so LTE, HSPA+ in Wi-Fi 802.11n.
    • Opravljeno je bilo delo za optimizacijo zmogljivosti obdelave dohodnega prometa TCP v načinu brez kopiranja, tj. brez dodatnega kopiranja v nove medpomnilnike. Za srednje velik promet, ki zajema desetine ali več sto kilobajtov podatkov, je uporaba zerocopy namesto recvmsg() opazno bolj učinkovita. Izvedene spremembe so na primer omogočile povečanje učinkovitosti obdelave prometa v slogu RPC s sporočili 32 KB pri uporabi zerocopy za 60-70%.
    • Dodani novi klici ioctl() za ustvarjanje omrežnih mostov, ki zajemajo več povezav PPP. Predlagana zmožnost omogoča premikanje okvirjev iz enega kanala v drugega, na primer iz seje PPPoE v sejo PPPoL2TP.
    • Integracija v jedro MPTCP (MultiPath TCP), razširitev protokola TCP za organizacijo delovanja povezave TCP z dostavo paketov hkrati po več poteh prek različnih omrežnih vmesnikov, povezanih z različnimi naslovi IP. Nova izdaja uvaja podporo za možnost ADD_ADDR za oglaševanje razpoložljivih naslovov IP, s katerimi je mogoče vzpostaviti povezavo pri dodajanju novih tokov v obstoječo povezavo MPTCP.
    • Dodana možnost konfiguriranja dejanj, ko je proračun za anketiranje povezave presežen (zasedeno anketiranje). Prejšnji razpoložljivi način SO_BUSY_POLL je pomenil preklop na softirq, ko je bil proračun izčrpan. Za aplikacije, ki morajo še naprej uporabljati anketiranje, je predlagana nova možnost SO_PREFER_BUSY_POLL.
    • IPv6 izvaja podporo za načina SRv6 End.DT4 in End.DT6, ki se uporabljata za ustvarjanje večuporabniških IPv4 L3 VPN in naprav VRF (navidezno usmerjanje in posredovanje).
    • Netfilter je poenotil implementacijo nabornih izrazov, kar je omogočilo podajanje več izrazov za vsak element nabornih seznamov.
    • API-ji so bili dodani brezžičnemu skladu 802.11 za konfiguracijo omejitev moči SAR ter parametrov AE PWE in HE MCS. Gonilnik Intel iwlwifi ima dodano podporo za območje 6 GHz (ultra visoki pas). Gonilnik Qualcomm Ath11k ima dodano podporo za tehnologijo FILS (Fast Initial Link Setup, standardizirana kot IEEE 802.11ai), ki vam omogoča, da se znebite zamud pri gostovanju med selitvijo z ene dostopne točke na drugo.
  • Оборудование
    • Gonilnik amdgpu zagotavlja podporo za AMD "Green Sardine" APU (Ryzen 5000) in "Dimgrey Cavefish" GPE (Navi 2), kot tudi začetno podporo za AMD Van Gogh APU z jedrom Zen 2 in RDNA 2 GPE (Navi 2). Dodana podpora za nove identifikatorje APU Renoir (temelji na CPU Zen 2 in GPE Vega).
    • Gonilnik i915 za grafične kartice Intel podpira tehnologijo IS (integer scaling) z implementacijo filtra za povečanje lestvice ob upoštevanju stanja sosednjih slikovnih pik (interpolacija najbližjega soseda) za določitev barve manjkajočih slikovnih pik. Podpora za diskretne kartice Intel DG1 je bila razširjena. Implementirana 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 zaslon 8K prek enega DisplayPort. Dodan način za asinhrono preklapljanje med dvema medpomnilnikoma v video pomnilniku (asinhroni preklop).
    • Gonilnik nouveau je dodal začetno podporo za grafične procesorje NVIDIA, ki temeljijo na mikroarhitekturi Ampere (GA100, GeForce RTX 30xx), doslej omejeno na orodja za nadzor video načinov.
    • Dodana podpora za protokol 3WIRE, ki se uporablja v LCD ploščah. Dodana podpora za plošče novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 in ABT Y030XX067A 3.0. Ločeno lahko omenimo podporo za ploščo pametnih telefonov OnePlus 6 in 6T, ki je omogočila organizacijo nalaganja nespremenjenega jedra na naprave.
    • Dodana podpora za Intelov prvi diskretni gostiteljski krmilnik USB4, Maple Ridge.
    • Dodana podpora za zvočne kodeke Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI in XCVR, Realtek RT715 in Qualcomm SM8250.
    • Dodana podpora za plošče, naprave in platforme ARM: 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 podpora za igralno konzolo Ouya, ki temelji na NVIDIA Tegra 3.

Istočasno je Latinskoameriška fundacija za prosto programsko opremo oblikovala različico popolnoma brezplačnega jedra 5.11 - Linux-libre 5.11-gnu, očiščeno elementov vdelane programske opreme in gonilnikov, ki vsebujejo neproste komponente ali odseke kode, katerih obseg je omejen. s strani proizvajalca. Nova izdaja čisti gonilnike za qat_4xxx (crypto), lt9611uxcm (dsi/hdmi bridge), ccs/smia++ (senzor), ath11k_pci, nxp audio transiver in mhi pci controller. Posodobljena koda za čiščenje madežev v gonilnikih in podsistemih amdgpu, btqca, btrtl, btusb, i915 csr. Onemogočeni novi blobi v m3 rproc, idt82p33 ptp clock in qualcomm arm64.

Vir: opennet.ru

Dodaj komentar