Izdaja jedra Linuxa 5.12

Po dveh mesecih razvoja je Linus Torvalds predstavil izdajo jedra Linux 5.12. Med najbolj opaznimi spremembami: podpora za conske blokovne naprave v Btrfs, zmožnost preslikave uporabniških ID-jev za datotečni sistem, čiščenje podedovanih arhitektur ARM, "nestrpen" način pisanja v NFS, mehanizem LOOKUP_CACHED za določanje poti datotek iz predpomnilnika , podpora za atomska navodila v BPF, sistem za razhroščevanje KFENCE za prepoznavanje napak pri delu s pomnilnikom, način pozivanja NAPI, ki teče v ločeni niti jedra v omrežnem skladu, hipervizor ACRN, možnost spreminjanja prehroščevalnega modela na letenju v nalogi razporejevalnik in podpora za optimizacije LTO pri gradnji v Clangu.

Nova različica vključuje 14170 (v prejšnji izdaji 15480) popravkov od 1946 (1991) razvijalcev, velikost popravka je 38 MB (spremembe so vplivale na 12102 (12090) datotek, dodanih je bilo 538599 (868025) vrstic kode, 333377 (261456) vrstice so bile izbrisane). Približno 43 % vseh sprememb, uvedenih v 5.12, je povezanih z gonilniki naprav, približno 17 % sprememb je povezanih s posodabljanjem kode, specifične za arhitekture strojne opreme, 12 % je povezanih z omrežnim skladom, 5 % je povezanih z datotečnimi sistemi in 4 % so povezani z notranjimi podsistemi jedra.

Glavne novosti:

  • Diskovni podsistem, V/I in datotečni sistemi
    • Implementirana je bila možnost preslikave ID-jev uporabnikov za nameščene datotečne sisteme (lahko preslikate datoteke enega uporabnika na nameščeni tuji particiji z drugim uporabnikom v trenutnem sistemu). Preslikava je podprta za datotečne sisteme FAT, ext4 in XFS. Predlagana funkcionalnost omogoča poenostavitev skupne rabe datotek med različnimi uporabniki in na različnih računalnikih, vključno s preslikavo, ki bo uporabljena v mehanizmu prenosnega domačega imenika systemd-homed, kar uporabnikom omogoča, da svoje domače imenike premaknejo na zunanje medije in jih uporabljajo na različnih računalniki, pri čemer se preslikava uporabniških ID-jev ne ujema. Druga uporabna aplikacija je organiziranje zagotavljanja skupnega dostopa do datotek z zunanjega gostitelja, ne da bi dejansko spremenili podatke o lastnikih datotek v datotečnem sistemu.
    • Popravki LOOKUP_CACHED so bili sprejeti v jedro, kar omogoča operacijam določanje poti datoteke iz uporabniškega prostora brez blokiranja, samo na podlagi podatkov, ki so na voljo v predpomnilniku. Način LOOKUP_CACHED se aktivira v klicu openat2() s posredovanjem zastavice RESOLVE_CACHED, v kateri se podatki strežejo samo iz predpomnilnika, in če določanje poti zahteva dostop do pogona, se vrne napaka EAGAIN.
    • Datotečni sistem Btrfs ima dodano začetno podporo za conske blokovne naprave (naprave na trdih magnetnih diskih ali NVMe SSD, kjer je prostor za shranjevanje razdeljen na cone, ki sestavljajo skupine blokov ali sektorjev, v katere je dovoljeno le zaporedno dodajanje podatkov, posodabljanje celotne skupine blokov). V načinu samo za branje je implementirana podpora za bloke z metapodatki in podatke, manjše od strani (podstrani).
    • V datotečnem sistemu F2FS je dodana možnost izbire algoritma in stopnje stiskanja. Dodana podpora za visoko stopnjo stiskanja za algoritem LZ4. Implementirana možnost namestitve checkpoint_merge.
    • Implementiran je nov ukaz ioctl FS_IOC_READ_VERITY_METADATA za branje metapodatkov iz datotek, zaščitenih s fs-verity.
    • Odjemalec NFS implementira "nestrpen" način pisanja (writes=eager), ko je omogočen, se operacije pisanja v datoteko takoj prenesejo na strežnik, mimo predpomnilnika strani. Ta način vam omogoča zmanjšanje porabe pomnilnika, zagotavlja takojšen prejem informacij o koncu prostega prostora v datotečnem sistemu in v nekaterih situacijah omogoča doseganje večje zmogljivosti.
    • V CIFS (SMB) so bile dodane nove možnosti priklopa: acregmax za nadzor predpomnjenja datotek in acdirmax za nadzor predpomnjenja metapodatkov imenika.
    • V XFS je omogočen večnitni način preverjanja kvot, pospešeno izvajanje fsync in pripravljena koda growfs za izvajanje funkcije zmanjševanja velikosti datotečnega sistema.
  • Pomnilniške in sistemske storitve
    • Dodan je podsistem DTMP (Dynamic Thermal Power Management), ki omogoča dinamično uravnavanje porabe energije različnih naprav glede na nastavljene splošne temperaturne omejitve.
    • Izvedena je bila možnost gradnje jedra s prevajalnikom Clang z vključitvijo optimizacij na stopnji povezovanja (LTO, Link Time Optimization). Optimizacije LTO se razlikujejo po upoštevanju stanja vseh datotek, vključenih v proces gradnje, medtem ko tradicionalni načini optimizacije optimizirajo vsako datoteko posebej in ne upoštevajo pogojev za klicanje funkcij, definiranih v drugih datotekah. Na primer, z LTO je možna vgrajena uvedba za funkcije iz drugih datotek, neuporabljena koda ni vključena v izvršljivo datoteko, preverjanje tipa in splošna optimizacija se izvajata na ravni projekta kot celote. Podpora za LTO je trenutno omejena na arhitekturi x86 in ARM64.
    • V razporejevalniku opravil je mogoče izbrati prednostne načine (PREEMPT) na stopnji zagona (preempt=none/voluntary/full) ali med delom skozi debugfs (/debug/sched_debug), če je bila nastavitev PREEMPT_DYNAMIC določena pri gradnji jedra. Prej je bilo mogoče način iztiskanja nastaviti samo na ravni parametrov sklopa. Sprememba omogoča, da distribucije pošiljajo jedra z omogočenim načinom PREEMPT, ki zagotavlja minimalno zakasnitev za namizne računalnike za ceno majhne prepustnosti, in po potrebi vrnejo na PREEMPT_VOLUNTARY (vmesni način za namizne računalnike) ali PREEMPT_NONE (zagotavlja največjo prepustnost za strežnike). .
    • Podsistemu BPF je bila dodana podpora za atomske operacije BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG in BPF_CMPXCHG.
    • Programi BPF imajo možnost dostopa do podatkov v skladu s pomočjo kazalcev s spremenljivimi odmiki. Na primer, če ste prej lahko za dostop do matrike v skladu uporabljali le stalni indeks elementa, lahko zdaj uporabite spreminjajočega se. Kontrolo dostopa samo znotraj obstoječih meja izvaja BPF overitelj. Ta funkcija je na voljo samo privilegiranim programom zaradi pomislekov glede izkoriščanja špekulativne ranljivosti pri izvajanju kode.
    • Dodana možnost pripenjanja programov BPF na gole sledilne točke, ki niso povezane z dogodki sledenja, vidnimi v uporabniškem prostoru (ohranjanje ABI ni zagotovljeno za takšne sledilne točke).
    • Izvedena je bila podpora za vodilo CXL 2.0 (Compute Express Link), ki se uporablja za organizacijo hitre interakcije med CPU in pomnilniškimi napravami (omogoča uporabo zunanjih pomnilniških naprav kot del RAM-a ali trajnega pomnilnika, kot da bi ta pomnilnik so bili povezani prek standardnega pomnilniškega krmilnika v CPE).
    • Dodan gonilnik nvmem za pridobivanje podatkov iz pomnilniških območij, rezerviranih za vdelano programsko opremo, ki niso neposredno dostopna Linuxu (na primer pomnilnik EEPROM, ki je fizično dostopen samo vdelani programski opremi, ali podatki, ki so dostopni le med fazo zgodnjega zagona).
    • Odstranjena je bila podpora za sistem profiliranja »oprofile«, ki ni bil široko uporabljen in ga je nadomestil sodobnejši mehanizem perf.
    • Asinhroni V/I vmesnik io_uring zagotavlja integracijo s skupinami c, ki nadzorujejo uporabo pomnilnika.
    • Arhitektura RISC-V podpira sisteme NUMA ter mehanizme kprobes in uprobes.
    • Dodana možnost uporabe sistemskega klica kcmp() ne glede na funkcionalnost posnetkov stanja procesa (kontrolna točka/obnovitev).
    • Odstranjena sta bila makra EXPORT_UNUSED_SYMBOL() in EXPORT_SYMBOL_GPL_FUTURE(), ki že vrsto let nista bila uporabljena v praksi.
  • Virtualizacija in varnost
    • Dodan zaščitni mehanizem KFence (Kernel Electric Fence), ki lovi napake pri delu s pomnilnikom, kot so prekoračitve medpomnilnika in dostop po sprostitvi pomnilnika. Za razliko od mehanizma za odpravljanje napak KASAN je za podsistem KFence značilna visoka hitrost delovanja in nizka obremenitev, kar vam omogoča, da ujamete napake v pomnilniku, ki se pojavijo samo v delujočih sistemih ali med dolgotrajnim delovanjem.
    • Dodana podpora za hipervizor ACRN, napisana s pogledom na pripravljenost za opravila v realnem času in primernost za uporabo v kritičnih sistemih. ACRN zagotavlja minimalne stroške, zagotavlja nizko zakasnitev in ustrezno odzivnost pri interakciji z opremo. Podpira virtualizacijo virov CPE, V/I, omrežnega podsistema, grafike in zvočnih operacij. ACRN se lahko uporablja za zagon več izoliranih virtualnih strojev v elektronskih krmilnih enotah, instrumentnih ploščah, avtomobilskih informacijskih sistemih, potrošniških napravah IoT in drugi vgrajeni tehnologiji. ACRN podpira dve vrsti gostujočih sistemov - privilegirane storitvene VM-je, ki se uporabljajo za upravljanje sistemskih virov (CPE, pomnilnik, V/I itd.), in uporabniške VM-je po meri, ki lahko izvajajo distribucije Linuxa, Androida in Windows.
    • V podsistemu IMA (Integrity Measurement Architecture), ki vzdržuje zgoščeno bazo podatkov za preverjanje celovitosti datotek in povezanih metapodatkov, je zdaj mogoče preveriti celovitost podatkov samega jedra, na primer slediti spremembam v pravilih SELinux .
    • Hipervizorju KVM je bila dodana možnost prestrezanja hiperklicev Xen in njihovega posredovanja emulatorju, ki se izvaja v uporabniškem prostoru.
    • Dodana možnost uporabe Linuxa kot korenskega okolja za hipervizor Hyper-V. Korensko okolje ima neposreden dostop do strojne opreme in se uporablja za zagon sistemov za goste (analogno Dom0 v Xen). Do zdaj je Hyper-V (Microsoft Hypervisor) podpiral Linux samo v gostujočih okoljih, sam hipervizor pa je bil nadzorovan iz okolja, ki temelji na sistemu Windows.
    • Dodana podpora za vgrajeno šifriranje za kartice eMMC, kar vam omogoča uporabo mehanizmov šifriranja, vgrajenih v krmilnik pogona, ki pregledno šifrirajo in dešifrirajo V/I.
    • Podpora za hashe RIPE-MD 128/256/320 in Tiger 128/160/192, ki se ne uporabljajo v jedru, kot tudi pretočna šifra Salsa20, ki jo je nadomestil algoritem ChaCha20, je bila odstranjena iz kripto podsistem. Algoritem blake2 je bil posodobljen za implementacijo blake2s.
  • Omrežni podsistem
    • Dodana zmožnost premikanja nadzornika poziva NAPI za omrežne naprave v ločeno nit jedra, kar omogoča izboljšano zmogljivost za nekatere vrste delovnih obremenitev. Prej se je glasovanje izvajalo v kontekstu softirq in ga ni pokrival razporejevalnik opravil, zaradi česar je bilo težko izvajati natančne optimizacije za doseganje največje zmogljivosti. Izvajanje v ločeni niti jedra omogoča opazovanje upravljalnika anketiranja iz uporabniškega prostora, pritrjenega na posamezna jedra CPE in upoštevanja pri načrtovanju preklapljanja opravil. Za omogočanje novega načina v sysfs je predlagan parameter /sys/class/net//threaded.
    • 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 dodaja možnost dodeljevanja prioritet določenim nitim, kar omogoča na primer organiziranje dela rezervnih niti, ki se vklopijo le, če pride do težav s primarno nitjo.
    • IGMPv3 dodaja podporo za mehanizem EHT (Explicit Host Tracking).
    • Netfilterjev mehanizem za filtriranje paketov omogoča lastništvo določenih tabel za pridobitev izključnega nadzora (na primer, proces požarnega zidu v ozadju lahko prevzame lastništvo nad določenimi tabelami in prepreči, da bi se kdorkoli vmešaval vanje).
  • Оборудование
    • Očistili smo zastarele in nevzdrževane platforme ARM. Koda za platforme efm32, picoxcell, prima2, tango, u300, zx in c6x ter z njimi povezani gonilniki so bili odstranjeni.
    • Gonilnik amdgpu omogoča overclocking (OverDrive) kartic, ki temeljijo na Sienna Cichlid GPE (Navi 22, Radeon RX 6xxx). Dodana podpora za format slikovnih pik FP16 za DCE (motor krmilnika zaslona) od 8. do 11. generacije. Za GPE Navy Flounder (Navi 21) in APU Van Gogh je bila implementirana možnost ponastavitve GPE.
    • Gonilnik i915 za grafične kartice Intel implementira parameter i915.mitigations, da onemogoči izolacijo in zaščitne mehanizme v korist izboljšane zmogljivosti. Za čipe, ki se začnejo s Tiger Lakeom, je vključena podpora za mehanizem VRR (Variable Rate Refresh), ki vam omogoča prilagodljivo spreminjanje stopnje osveževanja monitorja, da zagotovite gladkost in brez vrzeli med igrami. Za izboljšano barvno natančnost je vključena podpora za tehnologijo Intel Clear Color. Dodana podpora za DP-HDMI 2.1. Izvedena je bila možnost nadzora osvetlitve ozadja plošč eDP. Za GPE Gen9 s podporo LSPCON (Level Shifter and Protocol Converter) je omogočena podpora HDR.
    • Gonilnik nouveau doda začetno podporo za grafične procesorje NVIDIA, ki temeljijo na arhitekturi GA100 (Ampere).
    • Gonilnik msm dodaja podporo za grafične procesorje Adreno 508, 509 in 512, ki se uporabljajo v čipih SDM (Snapdragon) 630, 636 in 660.
    • Dodana podpora za zvočne kartice Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s in Pioneer DJM-750. Dodana podpora za zvočni podsistem Intel Alder Lake PCH-P. Podpora za programsko simulacijo povezovanja in odklopa zvočnega konektorja je bila implementirana za odpravljanje napak v uporabniškem prostoru.
    • Dodana podpora za igralne konzole Nintendo 64, izdelane od leta 1996 do 2003 (pretekli poskusi prenosa Linuxa na Nintendo 64 niso bili dokončani in so bili razvrščeni kot Vaporware). Motivacija za ustvarjanje novega porta za zastarelo platformo, ki ni bila izdana že skoraj dvajset let, je želja po spodbujanju razvoja emulatorjev in poenostavitvi prenosa iger.
    • Dodan gonilnik za igralni krmilnik Sony PlayStation 5 DualSense.
    • Dodana podpora za plošče, naprave in platforme ARM: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4B.
    • Dodana podpora za pametne telefone Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070.
    • Dodan gonilnik bcm-vk za pospeševalne plošče Broadcom VK (na primer plošče Valkyrie in Viper PCIe), ki jih je mogoče uporabiti za prenos operacij obdelave zvoka, videa in slik ter operacij, povezanih s šifriranjem, na ločeno napravo.
    • Dodana podpora za platformo Lenovo IdeaPad z možnostjo nadzora stalnega polnjenja in osvetlitve tipkovnice. Zagotovljena je tudi podpora za profil ACPI platforme ThinkPad z možnostjo nadzora načinov porabe energije. Dodan gonilnik za podsistem Lenovo ThinkPad X1 Tablet Gen 2 HID.
    • Dodan gonilnik ov5647 s podporo za modul kamere za Raspberry Pi.
    • Dodana podpora za plošče RISC-V SoC FU740 in HiFive Unleashed. Dodan je bil tudi nov gonilnik za čip Kendryte K210.

Vir: opennet.ru

Dodaj komentar