Izdanje jezgre Linuxa 6.3

Nakon dva mjeseca razvoja, Linus Torvalds je objavio Linux 6.3 kernel. Među najznačajnijim promjenama: čišćenje zastarjelih ARM platformi i grafičkih upravljačkih programa, kontinuirana integracija podrške za Rust jezik, uslužni program hwnoise, podrška za crveno-crne strukture stabla u BPF-u, BIG TCP način rada za IPv4, ugrađeni Dhrystone benchmark, mogućnost onemogućavanja izvršenje u memfd-u, podrška za stvaranje HID drajvera pomoću BPF-a, promjene su napravljene u Btrfs-u kako bi se smanjila fragmentacija blok grupe.

Nova verzija prihvatila je 15637 popravaka od 2055 programera; veličina zakrpe - 76 MB (promjene su zahvatile 14296 datoteka, dodano 1023183 redaka koda, izbrisano 883103 redaka). Usporedbe radi, u prethodnoj verziji 16843 programera predložilo je 2178 popravka; veličina zakrpe - 62 MB. Oko 39% svih promjena uvedenih u jezgru 6.3 odnosi se na upravljačke programe uređaja, oko 15% promjena odnosi se na ažuriranje koda specifičnog za hardverske arhitekture, 10% se odnosi na mrežni stog, 5% na sustav datoteka i 3 % na unutarnje podsustave jezgre.

Ključne inovacije u kernelu 6.3:

  • Memorija i usluge sustava
    • Provedeno je značajno čišćenje koda povezanog sa starim i nekorištenim ARM pločama, što je smanjilo veličinu izvora kernela za 150 tisuća redaka. Uklonjeno preko 40 starih ARM platformi.
    • Implementirana je mogućnost kreiranja upravljačkih programa za ulazne uređaje s HID (Human Interface Device) sučeljem implementiranim u obliku BPF programa.
    • Nastavak prijenosa dodatne funkcionalnosti iz grane Rust-for-Linux koja se odnosi na korištenje Rusta kao drugog jezika za razvoj upravljačkih programa i modula jezgre. Podrška za Rust nije omogućena prema zadanim postavkama i ne rezultira uključivanjem Rusta kao obvezne ovisnosti o izgradnji jezgre. Funkcionalnost ponuđena u prethodnim izdanjima proširena je podrškom za tipove Arc (implementacija pokazivača s brojem referenci), ScopeGuard (čisti kada se izvrši izvan opsega) i ForeignOwnable (omogućuje kretanje pokazivača između C i Rust koda) . Uklonjen modul 'posuditi' iz paketa 'alloc' (upišite 'Krava' i značajka 'ToOwned'). Napominje se da je stanje podrške za Rust u kernelu već blizu prihvaćanja prvih modula napisanih u Rustu u kernelu.
    • Linux u korisničkom načinu (pokretanje kernela kao korisničkog procesa) na x86-64 sustavima podržava kod napisan u Rustu. Dodana podrška za izgradnju Linuxa u korisničkom načinu rada koristeći klang s omogućenom optimizacijom vremena povezivanja (LTO).
    • Dodan uslužni program hwnoise za praćenje kašnjenja uzrokovanih ponašanjem hardvera. Odstupanja u vremenu izvršenja operacija (jitter) utvrđuju se kada je obrada prekida onemogućena, prelazeći jednu mikrosekundu u 10 minuta izračuna.
    • Modul jezgre je dodan s implementacijom referentne vrijednosti Dhrystone koja se može koristiti za procjenu performansi CPU-a u konfiguracijama bez komponenti korisničkog prostora (na primjer, u fazi prijenosa za nove SoC-ove koji implementiraju samo učitavanje jezgre).
    • Dodana opcija naredbenog retka jezgre "cgroup.memory=nobpf" za onemogućavanje obračuna potrošnje memorije za BPF programe, što može biti korisno za sustave s izoliranim spremnicima.
    • Za BPF programe predlaže se implementacija strukture podataka crveno-crnog stabla koja koristi kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) umjesto dodavanja nove vrste mapiranja.
    • U mehanizmu sekvenci koje je moguće ponovno pokrenuti (rseq, sekvence koje se mogu ponovno pokrenuti) dodana je mogućnost prosljeđivanja paralelnih identifikatora izvršenja (ID paralelnosti mape memorije) identificiranih s CPU brojem procesima. Rseq pruža sredstva za brzo atomsko izvršavanje operacija koje se, ako ih prekine druga nit, čiste i pokušavaju ponovno.
    • ARM procesori podržavaju SME 2 (Scalable Matrix Extension) upute.
    • Za arhitekture s390x i RISC-V RV64 implementirana je podrška za mehanizam "BPF trampoline", koji omogućuje minimiziranje opterećenja prilikom prijenosa poziva između kernela i BPF programa.
    • Na sustavima s procesorima baziranim na RISC-V arhitekturi implementirana je upotreba "ZBB" instrukcija za ubrzavanje operacija nizova.
    • Za sustave koji se temelje na arhitekturi skupa instrukcija LoongArch (koristi se u procesorima Loongson 3 5000 i implementira novi RISC ISA sličan MIPS-u i RISC-V), podrška za randomizaciju adresnog prostora jezgre (KASLR), premještanje jezgre u memoriju (premještanje ), mehanizam zaustavljanja hardverskih točaka i kprobe.
    • DAMOS (operacijske sheme temeljene na nadzoru pristupa podacima) mehanizam, koji vam omogućuje oslobađanje memorije na temelju učestalosti pristupa memoriji, podržava filtre za isključivanje određenih područja memorije iz obrade u DAMOS-u.
    • Minimalna standardna C biblioteka Nolibc implementira podršku za arhitekturu s390 i skup instrukcija Arm Thumb1 (uz podršku za ARM, AArch64, i386, x86_64, RISC-V i MIPS).
    • Objtool je optimiziran da ubrza izgradnju kernela i smanji vršnu potrošnju memorije tijekom izgradnje (pri izgradnji kernela u "allyesconfig" modu, nema problema s prisilnim prekidom procesa na sustavima s 32 GB RAM-a).
    • Ukinuta je podrška za sastavljanje kernela od strane Intel ICC kompajlera, koji već dugo ne radi i nitko nije izrazio želju da ga popravi.
  • Diskovni podsustav, I/O i datotečni sustavi
    • tmpfs podržava mapiranje ID-a korisnika montiranog datotečnog sustava, koje se koristi za mapiranje datoteka određenog korisnika na montiranoj stranoj particiji na drugog korisnika na trenutnom sustavu.
    • U Btrfs-u, kako bi se smanjila fragmentacija grupa blokova, ekstenti su podijeljeni prema veličini prilikom dodjele blokova, tj. svaka grupa blokova sada je ograničena na male (do 128 KB), srednje (do 8 MB) i velike opsege. Implementacija raid56 je refaktorirana. Redizajniran kod za provjeru kontrolnih zbrojeva. Napravljene su optimizacije performansi kako bi se operacija slanja ubrzala do 10 puta predmemoriranjem utime-a za direktorije i izvršavanjem naredbi samo po potrebi. 10x brže operacije fiemap-a preskakanjem provjere povratnih veza za dijeljene podatke (snimke). Operacije s metapodacima ubrzane su za XNUMX% optimiziranjem pretraživanja ključeva u strukturama b-stabla.
    • Poboljšana izvedba ext4 FS-a dopuštajući višestrukim procesima da istovremeno izvode izravne I/O operacije za unaprijed dodijeljene blokove korištenjem zajedničkih inode zaključavanja umjesto ekskluzivnih zaključavanja.
    • U f2fs-u se radilo na poboljšanju čitljivosti koda. Riješeni su važni problemi vezani uz atomsko pisanje i novu predmemoriju opsega.
    • EROFS (Poboljšani datotečni sustav samo za čitanje), dizajniran za korištenje na particijama samo za čitanje, implementira mogućnost vezanja operacija dekompresije komprimirane datoteke na CPU kako bi se smanjila kašnjenja pristupa podacima.
    • BFQ I/O planer dodao je podršku za napredne diskovne pogone koji se okreću, poput onih koji koriste višestruke odvojeno kontrolirane pogone (Multi Actuator).
    • Podrška za enkripciju podataka pomoću AES-SHA2 algoritma dodana je implementaciji NFS klijenta i poslužitelja.
    • Podsustav FUSE (Datotečni sustavi u korisničkom prostoru) dodao je podršku za mehanizam proširenja upita, koji vam omogućuje da stavite dodatne informacije u upit. Na temelju ove značajke implementirano je dodavanje grupnih identifikatora zahtjevu FS-a koji su neophodni za uzimanje u obzir prava pristupa prilikom kreiranja objekata u FS-u (create, mkdir, symlink, mknod).
  • Virtualizacija i sigurnost
    • KVM hipervizor za x86 sustave dodaje podršku za proširene Hyper-V hiperpozive i omogućuje im prosljeđivanje rukovatelju koji radi u host okruženju korisničkog prostora. Promjena je omogućila implementaciju podrške za ugniježđeno pokretanje hipervizora Hyper-V.
    • KVM olakšava ograničavanje pristupa sustava za goste PMU (Performance Monitor Unit) događajima koji se odnose na mjerenje performansi.
    • Mehanizmu memfd, koji vam omogućuje identificiranje memorijskog područja kroz deskriptor datoteke koji se prenosi između procesa, dodana je mogućnost stvaranja područja u kojima je zabranjeno izvršavanje koda (neizvršni memfd) i nemoguće je postaviti prava izvršenja u budućnost.
    • Dodana je nova prctl operacija PR_SET_MDWE za blokiranje pokušaja uključivanja prava pristupa memoriji koja dopuštaju i pisanje i izvršavanje u isto vrijeme.
    • Zaštita od napada klase Spectre dodana je i omogućena prema zadanim postavkama, na temelju automatskog načina rada IBRS (Enhanced Indirect Branch Restricted Speculation) predloženog u procesorima AMD Zen 4, koji vam omogućuje da adaptivno omogućite i onemogućite izvršavanje spekulativnih instrukcija tijekom prekida, sustava pozive i promjene konteksta. Predložena zaštita rezultira manjim opterećenjem u usporedbi s Retpoline zaštitom.
    • Rješava ranjivost koja bi mogla zaobići zaštitu od napada Spectre v2 pri korištenju tehnologije istodobne višenitnosti (SMT ili Hyper-Threading) i uzrokovanu onemogućavanjem STIBP-a (Single Thread Indirect Branch Predictors) pri odabiru IBRS načina zaštite.
    • Za sustave temeljene na ARM64, dodan je novi "virtconfig" cilj izgradnje, koji, kada je odabran, aktivira samo minimalni skup komponenti kernela potrebnih za pokretanje u virtualizacijskim sustavima.
    • Dodana podrška za filtriranje poziva sustava korištenjem seccomp mehanizma za m68k arhitekturu.
    • Dodana podrška za ugrađene CRB TPM2 (Command Response Buffer) uređaje procesora AMD Ryzen temeljene na Microsoft Pluton tehnologiji.
  • Mrežni podsustav
    • Dodano je netlink sučelje za konfiguraciju podsloja PLCA (Physical Layer Collision Avoidance), definiranog u specifikaciji IEEE 802.3cg-2019 i korištenog u 802.3cg (10Base-T1S) Ethernet mrežama optimiziranim za povezivanje IoT uređaja i industrijskih sustava. Korištenje PLCA poboljšava performanse na dijeljenim medijskim Ethernet mrežama.
    • Podrška za API "wireless extensions" za upravljanje bežičnim sučeljima WiFi 7 (802.11be) je ukinuta jer ovaj API ne pokriva sve potrebne postavke. Prilikom pokušaja korištenja API-ja "bežičnih proširenja", koji je i dalje podržan kao emulirani sloj, sada će se prikazati upozorenje za većinu trenutačnih uređaja.
    • Pripremljena je detaljna dokumentacija o netlink API-ju (za programere kernela i za programere korisničkih aplikacija). Uslužni program ynl-gen-c implementiran je za generiranje C-koda na temelju YAML specifikacija Netlink protokola.
    • Podrška za opciju IP_LOCAL_PORT_RANGE dodana je mrežnim utičnicama kako bi se pojednostavila konfiguracija odlaznih veza putem prevoditelja adresa bez korištenja SNAT-a. Kada koristite istu IP adresu na više hostova, IP_LOCAL_PORT_RANGE dopušta svakom hostu korištenje vlastitog raspona odlaznih mrežnih portova, a na pristupniku prosljeđivanje paketa na temelju brojeva portova.
    • Za MPTCP (MultiPath TCP), implementirana je mogućnost rukovanja mješovitim tokovima koji koriste IPv4 i IPv6 protokole. MPTCP je proširenje TCP protokola za organiziranje rada TCP veze s istovremenom dostavom paketa duž nekoliko ruta kroz različita mrežna sučelja vezana za različite IP adrese.
    • Za IPv4 implementirana je mogućnost korištenja BIG TCP proširenja, što omogućuje povećanje maksimalne veličine TCP paketa do 4 GB za optimizaciju rada brzih internih mreža podatkovnih centara. Ovo povećanje veličine paketa sa 16-bitnim poljem zaglavlja postiže se implementacijom "jumbo" paketa koji imaju veličinu IP zaglavlja postavljenu na 0 i stvarnu veličinu koja se prenosi u zasebnom 32-bitnom polju u zasebnom priloženom zaglavlju.
    • Dodan je novi sysctl parametar default_rps_mask, preko kojeg možete postaviti zadanu RPS (Receive Packet Steering) konfiguraciju, koja je odgovorna za distribuciju obrade dolaznog prometa preko CPU jezgri na razini rukovatelja prekidima.
    • Ukinuta podrška za discipline čekanja za ograničavanje prometa CBQ (čekanje na temelju klase), ATM (virtualni krugovi ATM-a), dsmark (marker diferencirane usluge), tcindex (indeks kontrole prometa) i RSVP (protokol rezervacije resursa). Te su discipline dugo bile napuštene i nitko nije bio voljan nastaviti ih podržavati.
  • Оборудование
    • Uklonjeni su svi grafički upravljački programi temeljeni na DRI1: i810 (stare Intel 8xx integrirane grafičke kartice), mga (Matrox GPU), r128 (ATI Rage 128 GPU uključujući Rage Fury, XPERT 99 i XPERT 128 kartice), savage (S3 Savage GPU), sis ( Crusty SiS GPU), tdfx (3dfx Voodoo) i via (VIA IGP), koji su zastarjeli 2016. i nisu podržani u Mesi od 2012.
    • Uklonjeni su zastarjeli drajveri međuspremnika okvira (fbdev) omap1, s3c2410, tmiofb i w100fb.
    • Dodan je DRM upravljački program za VPU (Versatile Processing Unit) integriran u procesore Intel Meteor Lake (14. generacije), dizajniran za ubrzanje računalnog vida i operacija strojnog učenja. Upravljački program implementiran je pomoću podsustava "accel", usmjerenog na pružanje podrške za računalne akceleratore, koji se mogu isporučiti u obliku zasebnih ASIC-ova i kao IP blokovi unutar SoC-a i GPU-a.
    • I915 (Intel) upravljački program proširuje podršku za diskretne Intel Arc (DG2/Alchemist) grafičke kartice, pruža preliminarnu podršku za Meteor Lake GPU-ove i uključuje podršku za Intel Xe HP 4tile GPU-ove.
    • Upravljački program amdgpu dodaje podršku za tehnologiju AdaptiveSync i mogućnost korištenja sigurnog zaslona s više zaslona. Ažurirana podrška za DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x i DP 2.1.
    • Dodana podrška za SM8350, SM8450 SM8550, SDM845 i SC8280XP platforme u msm upravljački program (GPU Qualcomm Adreno).
    • Nouveau upravljački program je ukinuo podršku za stare ioctl pozive.
    • Eksperimentalna podrška za NPU VerSilicon (VeriSilicon Neural Network Processor) dodana je etnaviv drajveru.
    • Implementiran je upravljački program pata_parport za IDE pogone povezane preko paralelnog porta. Dodani upravljački program omogućio je uklanjanje starog PARIDE upravljačkog programa iz kernela i nadogradnju ATA podsustava. Ograničenje novog upravljačkog programa je nemogućnost istovremenog povezivanja pisača i diska putem paralelnog priključka.
    • Dodan ath12k upravljački program za bežične kartice temeljene na Qualcomm čipovima s podrškom za Wi-Fi 7. Dodana podrška za bežične kartice temeljene na RealTek RTL8188EU čipovima.
    • Dodana podrška za 46 ploča temeljenih na ARM64 arhitekturi, uključujući Samsung Galaxy tab A (2015), Samsung Galaxy S5, BananaPi R3, Debix Model A, EmbedFire LubanCat 1/2, Facebook Greatlakes, Orange Pi R1 Plus, Tesla FSD, kao i uređaje temeljen na SoC-u Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 i SDM632, Rockchips RK3128 TV kutija, RV1126 Vision, RK3588, RK3568, RK3566, RK3588 i RK3328, TI K3 (AM642/AM 654/AM68 / AM69).

U isto vrijeme, Latinoamerička zaklada za slobodni softver formirala je varijantu potpuno besplatne jezgre 6.3 - Linux-libre 6.3-gnu, očišćenu od firmvera i elemenata upravljačkog programa koji sadrže neslobodne komponente ili dijelove koda, čiji je opseg ograničen proizvođač. U izdanju 6.3, mrlje su očišćene u novim upravljačkim programima ath12k, aw88395 i peb2466, kao i u novim datotekama stabla uređaja za qcom uređaje temeljene na AArch64. Ažurirani kod za čišćenje mrljica u upravljačkim programima i podsustavima amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110, kao i u upravljačkim programima za DVB kartice sa softverskim dekodiranjem i u unaprijed kompajliranim BPF datotekama. Zaustavljeno čišćenje upravljačkih programa mga, r128, tm6000, cpia2 i r8188eu jer su uklonjeni iz kernela. Poboljšano čišćenje mrlja upravljačkog programa i915.

Izvor: opennet.ru

Dodajte komentar