Izdanje kernela Linux 5.12

Nakon dva mjeseca razvoja, Linus Torvalds je predstavio izdanje Linux kernela 5.12. Među najznačajnijim promjenama: podrška za zonirane blok uređaje u Btrfs-u, mogućnost mapiranja korisničkih ID-ova za sistem datoteka, čišćenje naslijeđenih ARM arhitektura, „željan“ način pisanja u NFS-u, mehanizam LOOKUP_CACHED za određivanje putanja datoteka iz keša , podrška za atomske instrukcije u BPF-u, sistem za otklanjanje grešaka KFENCE za identifikaciju grešaka pri radu sa memorijom, NAPI način prozivanja koji radi u posebnoj niti kernela u mrežnom stogu, ACRN hipervizor, mogućnost promjene modela preempt-a u hodu u zadatku planer i podrška za LTO optimizacije prilikom izgradnje u Clang-u.

Nova verzija uključuje 14170 (u prethodnom izdanju 15480) popravki od 1946 (1991) programera, veličina zakrpe je 38 MB (promjene su utjecale na 12102 (12090) datoteka, 538599 (868025) linija koda je dodano, 333377) (261456) linije su izbrisane). Oko 43% svih promjena uvedenih u 5.12 odnosi se na drajvere uređaja, otprilike 17% promjena se odnosi na ažuriranje koda specifičnog za hardverske arhitekture, 12% se odnosi na mrežni stog, 5% se odnosi na sistem datoteka i 4% odnose se na interne podsisteme kernela.

Glavne inovacije:

  • Diskovni podsistem, I/O i sistemi datoteka
    • Implementirana je mogućnost mapiranja korisničkih ID-ova za montirane sisteme datoteka (možete mapirati datoteke jednog korisnika na montiranoj stranoj particiji sa drugim korisnikom na trenutnom sistemu). Mapiranje je podržano za FAT, ext4 i XFS sistem datoteka. Predložena funkcionalnost olakšava dijeljenje datoteka između različitih korisnika i na različitim računarima, uključujući mapiranje će se koristiti u mehanizmu prijenosnog kućnog direktorija systemd-homed, omogućavajući korisnicima da premjeste svoje kućne direktorije na vanjski medij i koriste ih na različitim računarima, mapiranje ID-ovi korisnika koji se ne podudaraju. Još jedna korisna aplikacija je organiziranje pružanja zajedničkog pristupa datotekama sa vanjskog hosta, bez stvarne promjene podataka o vlasnicima datoteka u sistemu datoteka.
    • Zakrpe LOOKUP_CACHED su usvojene u kernel, omogućavajući operacijama da odrede putanju datoteke iz korisničkog prostora bez blokiranja, samo na osnovu podataka dostupnih u kešu. Režim LOOKUP_CACHED se aktivira u pozivu openat2() prenošenjem zastavice RESOLVE_CACHED, u kojoj se podaci serviraju samo iz keš memorije, a ako određivanje putanje zahtijeva pristup drajvu, vraća se greška EAGAIN.
    • Datotečni sistem Btrfs je dodao početnu podršku za zonirane blok uređaje (uređaje na tvrdim magnetnim diskovima ili NVMe SSD-ovima, prostor za pohranu u kojem je podijeljen na zone koje čine grupe blokova ili sektora, kojima je dozvoljeno samo sekvencijalno dodavanje podataka, ažuriranje cijele grupe blokova). U načinu samo za čitanje implementirana je podrška za blokove s metapodacima i podacima manjim od stranice (podstranice).
    • U sistemu datoteka F2FS, dodata je mogućnost izbora algoritma i nivoa kompresije. Dodata podrška za kompresiju visokog nivoa za LZ4 algoritam. Implementirana opcija montiranja checkpoint_merge.
    • Nova ioctl komanda FS_IOC_READ_VERITY_METADATA je implementirana za čitanje metapodataka iz datoteka zaštićenih fs-verity.
    • NFS klijent implementira "željan" način pisanja (writes=eager), kada je omogućeno, operacije pisanja u datoteku se odmah prenose na server, zaobilazeći keš memoriju stranica. Ovaj režim vam omogućava da smanjite potrošnju memorije, pruža trenutni prijem informacija o kraju slobodnog prostora u sistemu datoteka, au nekim situacijama omogućava postizanje veće performanse.
    • Nove opcije montiranja su dodane u CIFS (SMB): acregmax za kontrolu keširanja datoteka i acdirmax za kontrolu keširanja metapodataka direktorija.
    • U XFS-u je omogućen režim provjere kvota s više niti, ubrzano je izvršenje fsync i pripremljen je growfs kod za implementaciju funkcije smanjenja veličine sistema datoteka.
  • Memorijski i sistemski servisi
    • Dodan je DTMP (Dynamic Thermal Power Management) podsistem koji vam omogućava da dinamički regulišete potrošnju energije različitih uređaja na osnovu postavljenih opštih temperaturnih ograničenja.
    • Implementirana je mogućnost izgradnje kernela pomoću Clang kompajlera uz uključivanje optimizacija u fazi povezivanja (LTO, Link Time Optimization). LTO optimizacije se razlikuju uzimajući u obzir stanje svih fajlova uključenih u proces izgradnje, dok tradicionalni načini optimizacije optimizuju svaki fajl posebno i ne uzimaju u obzir uslove za pozivanje funkcija definisanih u drugim datotekama. Na primjer, uz LTO, inline implementacija je moguća za funkcije iz drugih datoteka, neiskorišteni kod nije uključen u izvršnu datoteku, provjera tipa i opća optimizacija se provode na razini projekta kao cjeline. LTO podrška je trenutno ograničena na x86 i ARM64 arhitekture.
    • Moguće je odabrati režime prevencije (PREEMPT) u planeru zadataka u fazi pokretanja (preempt=none/dobrovoljno/full) ili tokom rada kroz debugfs (/debug/sched_debug), ako je postavka PREEMPT_DYNAMIC specificirana prilikom izgradnje kernela. Ranije je režim ekstruzije mogao biti postavljen samo na nivou parametara sklopa. Promjena omogućava distribucijama da isporučuju jezgre sa omogućenim PREEMPT načinom, koji obezbjeđuje minimalno kašnjenje za desktop računare po cijenu male kazne propusnosti, i ako je potrebno, vraćanje na PREEMPT_VOLUNTARY (srednji način za desktop računare) ili PREEMPT_NONE (omogućava maksimalnu propusnost za servere) .
    • Podrška za atomske operacije BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG i BPF_CMPXCHG je dodana u BPF podsistem.
    • BPF programi imaju mogućnost pristupa podacima na steku koristeći pokazivače sa promjenjivim pomacima. Na primjer, ako ste ranije mogli koristiti samo konstantni indeks elementa za pristup nizu na steku, sada možete koristiti onaj koji se mijenja. Kontrolu pristupa samo unutar postojećih granica vrši BPF verifikator. Ova funkcija je dostupna samo privilegovanim programima zbog zabrinutosti oko iskorištavanja ranjivosti spekulativnog izvršavanja koda.
    • Dodata je mogućnost pričvršćivanja BPF programa na gole tačke praćenja koje nisu povezane sa događajima praćenja vidljivim u korisničkom prostoru (ABI očuvanje nije zagarantovano za takve tačke praćenja).
    • Implementirana je podrška za CXL 2.0 (Compute Express Link) sabirnicu, koja se koristi za organiziranje interakcije velike brzine između CPU-a i memorijskih uređaja (omogućava korištenje vanjskih memorijskih uređaja kao dijela RAM-a ili trajne memorije, kao da je ova memorija bili povezani preko standardnog memorijskog kontrolera u CPU).
    • Dodan nvmem drajver za dohvaćanje podataka iz memorijskih područja rezerviranih za firmver koji nisu direktno dostupni Linuxu (na primjer, EEPROM memorija koja je fizički dostupna samo firmveru ili podaci koji su dostupni samo tokom rane faze pokretanja).
    • Uklonjena je podrška za “oprofile” sistem profiliranja, koji nije bio u širokoj upotrebi i zamijenjen je modernijim perf mehanizmom.
    • Io_uring asinhroni I/O sučelje pruža integraciju sa cgrupama koje kontroliraju korištenje memorije.
    • RISC-V arhitektura podržava NUMA sisteme, kao i mehanizme kprobes i uprobes.
    • Dodata mogućnost korištenja kcmp() sistemskog poziva bez obzira na funkcionalnost snimaka stanja procesa (kontrolna tačka/vraćanje).
    • Makroi EXPORT_UNUSED_SYMBOL() i EXPORT_SYMBOL_GPL_FUTURE() koji se godinama ne koriste u praksi su uklonjeni.
  • Virtuelizacija i sigurnost
    • Dodan zaštitni mehanizam KFence (Kernel Electric Fence), koji hvata greške pri radu sa memorijom, kao što su prekoračenje bafera i pristup nakon oslobađanja memorije. Za razliku od KASAN mehanizma za otklanjanje grešaka, KFence podsistem se odlikuje velikom brzinom rada i niskim opterećenjem, što vam omogućava da uhvatite memorijske greške koje se pojavljuju samo na radnim sistemima ili tokom dugotrajnog rada.
    • Dodata podrška za ACRN hipervizor, napisana s ciljem spremnosti za zadatke u realnom vremenu i prikladnosti za upotrebu u kritičnim sistemima. ACRN obezbeđuje minimalne troškove, garantuje nisko kašnjenje i adekvatan odziv pri interakciji sa opremom. Podržava virtuelizaciju CPU resursa, I/O, mrežni podsistem, grafičke i zvučne operacije. ACRN se može koristiti za pokretanje više izolovanih virtuelnih mašina u elektronskim kontrolnim jedinicama, instrument tablama, automobilskim informacionim sistemima, potrošačkim IoT uređajima i drugoj ugrađenoj tehnologiji. ACRN podržava dva tipa gostujućih sistema - privilegovane servisne VM-ove, koji se koriste za upravljanje sistemskim resursima (CPU, memorija, I/O, itd.), i prilagođene korisničke VM-ove, koji mogu pokretati Linux, Android i Windows distribucije.
    • U IMA (Integrity Measurement Architecture) podsistemu, koji održava hash bazu podataka za provjeru integriteta datoteka i povezanih metapodataka, sada postaje moguće provjeriti integritet podataka samog kernela, na primjer, pratiti promjene u SELinux pravilima .
    • KVM hipervizoru je dodana mogućnost presretanja Xen hiperpoziva i prosljeđivanja emulatoru koji radi u korisničkom prostoru.
    • Dodata mogućnost korištenja Linuxa kao korijenskog okruženja za Hyper-V hipervizor. Root okruženje ima direktan pristup hardveru i koristi se za pokretanje gostujućih sistema (analogno Dom0 u Xen-u). Do sada je Hyper-V (Microsoft Hypervisor) podržavao Linux samo u gostujućim okruženjima, ali se sam hipervizor kontrolirao iz Windows okruženja.
    • Dodata podrška za inline enkripciju za eMMC kartice, što vam omogućava da koristite mehanizme šifriranja ugrađene u kontroler pogona koji transparentno šifriraju i dešifriraju I/O.
    • Podrška za RIPE-MD 128/256/320 i Tiger 128/160/192 hasheve, koji se ne koriste u jezgru, kao i Salsa20 stream šifru, koju je zamijenio algoritam ChaCha20, uklonjena je iz kripto podsistem. Algoritam blake2 je ažuriran da implementira blake2s.
  • Mrežni podsistem
    • Dodata je mogućnost premještanja NAPI obrađivača anketiranja za mrežne uređaje u zasebnu nit kernela, što omogućava poboljšane performanse za neke vrste opterećenja. Ranije se anketiranje obavljalo u kontekstu softirq-a i nije bilo pokriveno planerom zadataka, što je otežavalo izvođenje finih optimizacija za postizanje maksimalnih performansi. Izvršenje u posebnoj niti kernela omogućava da se rukovalac prozivanja posmatra iz korisničkog prostora, prikači na pojedinačna jezgra CPU-a i uzme u obzir prilikom planiranja prebacivanja zadataka. Da bi se omogućio novi način rada u sysfs-u, predlaže se parametar /sys/class/net//threaded.
    • Integracija u jezgro MPTCP (MultiPath TCP), proširenje TCP protokola za organizovanje rada TCP veze sa isporukom paketa istovremeno duž nekoliko ruta kroz različite mrežne interfejse povezane sa različitim IP adresama. Novo izdanje dodaje mogućnost dodjele prioriteta određenim nitima, što omogućava, na primjer, organiziranje rada rezervnih niti koje se uključuju samo ako postoje problemi s primarnom niti.
    • IGMPv3 dodaje podršku za EHT (Explicit Host Tracking) mehanizam.
    • Netfilterov mehanizam za filtriranje paketa pruža mogućnost posjedovanja određenih tabela kako bi se dobila ekskluzivna kontrola (na primjer, pozadinski proces zaštitnog zida može preuzeti vlasništvo nad određenim tablicama, sprječavajući bilo koga drugog da se miješa u njih).
  • Oprema
    • Očistili smo zastarjele i neodržavane ARM platforme. Uklonjen je kod za platforme efm32, picoxcell, prima2, tango, u300, zx i c6x, kao i njihovi povezani drajveri.
    • Amdgpu drajver pruža mogućnost overkloka (OverDrive) kartica baziranih na Sienna Cichlid GPU-u (Navi 22, Radeon RX 6xxx). Dodata podrška za FP16 format piksela za DCE (display controller engine) od 8. do 11. generacije. Za GPU Navy Flounder (Navi 21) i APU Van Gogh, implementirana je mogućnost resetovanja GPU-a.
    • i915 drajver za Intel grafičke kartice implementira parametar i915.mitigations da onemogući izolaciju i mehanizme zaštite u korist poboljšanih performansi. Za čipove koji počinju od Tiger Lakea, uključena je podrška za VRR (Variable Rate Refresh) mehanizam, koji vam omogućava da prilagodljivo mijenjate brzinu osvježavanja monitora kako biste osigurali glatkoću i bez praznina tokom igara. Podrška za Intel Clear Color tehnologiju je uključena za poboljšanu tačnost boje. Dodata podrška za DP-HDMI 2.1. Implementirana je mogućnost kontrole pozadinskog osvjetljenja eDP panela. Za GPU-ove Gen9 sa podrškom za LSPCON (Level Shifter and Protocol Converter), podrška za HDR je omogućena.
    • Nouveau drajver dodaje početnu podršku za NVIDIA GPU zasnovane na GA100 (Ampere) arhitekturi.
    • Msm drajver dodaje podršku za Adreno 508, 509 i 512 GPU-ove koji se koriste u SDM (Snapdragon) 630, 636 i 660 čipovima.
    • Dodata podrška za Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s i Pioneer DJM-750 zvučne kartice. Dodata podrška za Intel Alder Lake PCH-P audio podsistem. Implementirana je podrška za softversku simulaciju povezivanja i odspajanja audio konektora za rukovaoce otklanjanjem grešaka u korisničkom prostoru.
    • Dodata podrška za Nintendo 64 igraće konzole proizvedene od 1996. do 2003. (prethodni pokušaji portiranja Linuxa na Nintendo 64 nisu dovršeni i klasifikovani su kao Vaporware). Motivacija za stvaranje novog porta za zastarjelu platformu, koja nije puštena gotovo dvadeset godina, je želja da se stimulira razvoj emulatora i pojednostavi portiranje igara.
    • Dodan drajver za Sony PlayStation 5 DualSense kontroler igre.
    • Dodata podrška za ARM ploče, uređaje i platforme: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, Nano
    • Dodata podrška za Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070 pametne telefone.
    • Dodan bcm-vk drajver za Broadcom VK akceleratorske ploče (na primjer, Valkyrie i Viper PCIe ploče), koji se može koristiti za preuzimanje operacija obrade zvuka, videa i slike, kao i operacija koje se odnose na šifriranje, na poseban uređaj.
    • Dodata podrška za platformu Lenovo IdeaPad sa mogućnošću kontrole stalnog punjenja i pozadinskog osvetljenja tastature. Takođe je obezbeđena podrška za ACPI profil ThinkPad platforme sa mogućnošću kontrole režima potrošnje energije. Dodan drajver za Lenovo ThinkPad X1 Tablet Gen 2 HID podsistem.
    • Dodan drajver ov5647 sa podrškom za modul kamere za Raspberry Pi.
    • Dodata podrška za RISC-V SoC FU740 i HiFive Unleashed ploče. Dodan je i novi drajver za Kendryte K210 čip.

izvor: opennet.ru

Dodajte komentar