Izdanje kernela Linux 6.3

Nakon dva mjeseca razvoja, Linus Torvalds je predstavio izdanje Linux kernela 6.3. Neke od najznačajnijih promjena uključuju: čišćenje naslijeđenih ARM platformi i grafičkih drajvera, kontinuiranu integraciju podrške za jezik Rust, uslužni program hwnoise, podršku za crveno-crne strukture stabla u BPF-u, BIG TCP način rada za IPv4, ugrađeni Dhrystone benchmark, mogućnost da bi se onemogućilo izvršavanje u memfd-u, podržava kreiranje HID drajvera koristeći BPF, napravljene su promjene u Btrfs-u kako bi se smanjila fragmentacija blok grupa.

Nova verzija uključuje 15637 popravki od 2055 programera; veličina zakrpe - 76 MB (promjene su uticale na 14296 datoteka, dodano je 1023183 linija koda, 883103 linije su obrisane). Poređenja radi, prethodna verzija je ponudila 16843 popravka od 2178 programera; veličina zakrpe je 62 MB. Oko 39% svih promjena uvedenih u kernel 6.3 odnosi se na drajvere uređaja, otprilike 15% promjena se odnosi na ažuriranje koda specifičnog za hardverske arhitekture, 10% se odnosi na mrežni stog, 5% se odnosi na sistem datoteka i 3% se odnosi na interne podsisteme kernela.

Ključne inovacije u kernelu 6.3:

  • Memorijski i sistemski servisi
    • Izvršeno je značajno čišćenje koda povezanog sa starim i nekorišćenim ARM pločama, što je omogućilo smanjenje veličine izvornog koda kernela za 150 hiljada linija. Više od 40 starih ARM platformi je uklonjeno.
    • Implementirana je mogućnost kreiranja drajvera za ulazne uređaje sa HID (Human Interface Device) interfejsom, implementiranim u obliku BPF programa.
    • Nastavljen je prenos dodatne funkcionalnosti iz grane Rust-for-Linux u vezi sa upotrebom Rust jezika kao drugog jezika za razvoj drajvera i modula kernela. Podrška za Rust nije omogućena prema zadanim postavkama i ne dovodi do toga da Rust bude uključen kao obavezna ovisnost o izgradnji kernela. Funkcionalnost ponuđena u prethodnim izdanjima je proširena da podrži tipove Arc (implementacija pokazivača sa brojem referenci), ScopeGuard (čišćenje kada se izađe iz opsega) i ForeignOwnable (omogućava kretanje pokazivača između C i Rust koda). Modul 'posuđivanja' (tip 'Krava' i osobina 'ToOwned') je uklonjen iz paketa 'alloc'. Napominje se da je stanje podrške za Rust u kernelu već blizu početka prihvatanja prvih modula napisanih u Rustu u kernel.
    • Linux u korisničkom režimu (pokreće kernel kao korisnički proces) na x86-64 sistemima implementira podršku za kod napisan u Rust jeziku. Dodata podrška za izgradnju Linux-a u korisničkom režimu koristeći clang sa omogućenom optimizacijom vremena veze (LTO).
    • Dodan hwnoise uslužni program za praćenje kašnjenja uzrokovanih hardverom. Odstupanja u vremenu izvršavanja operacija (jitter) se utvrđuju kada je obrada prekida onemogućena, a prelaze jednu mikrosekundu na 10 minuta proračuna.
    • Dodan je kernel modul koji implementira Dhrystone benchmark, koji se može koristiti za procjenu performansi procesora u konfiguracijama bez komponenti korisničkog prostora (na primjer, u fazi portiranja za nove SoC-ove koji implementiraju samo učitavanje kernela).
    • Dodan parametar komandne linije kernela “cgroup.memory=nobpf”, koji onemogućuje obračun potrošnje memorije za BPF programe, što može biti korisno za sisteme sa izolovanim kontejnerima.
    • 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 novog tipa mapiranja.
    • Mehanizam sekvenci koje se mogu ponovo pokrenuti (rseq, restartabilne sekvence) je dodao mogućnost prenosa identifikatora paralelnog izvršavanja (ID paralelnosti mape memorije) procesima, identifikovanim sa CPU brojem. Rseq pruža sredstvo za brzo atomsko izvršavanje operacija, koje se, ako ih prekine druga nit, čiste i pokušavaju ponovo.
    • ARM procesori podržavaju SME 2 (Scalable Matrix Extension) instrukcije.
    • Za arhitekture s390x i RISC-V RV64 implementirana je podrška za mehanizam “BPF trampoline”, koji omogućava minimiziranje troškova prilikom prijenosa poziva između kernela i BPF programa.
    • Na sistemima sa procesorima baziranim na RISC-V arhitekturi, implementirana je upotreba “ZBB” instrukcija kako bi se ubrzale operacije niza.
    • Za sisteme bazirane 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 kernela (KASLR), promjene u smještaju memorije jezgra (premještanje ), hardverskih tačaka implementiran je mehanizam stop i kprobe.
    • DAMOS (Operacijske sheme zasnovane na praćenju pristupa podacima) mehanizam, koji vam omogućava da oslobodite memoriju na osnovu učestalosti pristupa memoriji, podržava filtere za isključivanje određenih memorijskih područja iz obrade u DAMOS-u.
    • Nolibc minimalna standardna C biblioteka pruža podršku za arhitekturu s390 i skup instrukcija Arm Thumb1 (pored podrške za ARM, AArch64, i386, x86_64, RISC-V i MIPS).
    • Objtool je optimizovan da ubrza sastavljanje kernela i smanji vršnu potrošnju memorije tokom sastavljanja (prilikom izgradnje kernela u “allyesconfig” modu, sada nema problema sa prinudnim prekidom procesa na sistemima sa 32 GB RAM-a).
    • Podrška za sklapanje kernela od strane Intel ICC kompajlera je ukinuta, koja je dugo bila nefunkcionalna i niko nije izrazio želju da to popravi.
  • Diskovni podsistem, I/O i sistemi datoteka
    • tmpfs implementira podršku za mapiranje korisničkih ID-ova montiranih sistema datoteka, koji se koriste za uparivanje datoteka određenog korisnika na montiranoj stranoj particiji sa drugim korisnikom na trenutnom sistemu.
    • U Btrfs-u, da bi se smanjila fragmentacija grupa blokova, ekstenti se dijele po veličini prilikom dodjele blokova, tj. bilo koja grupa blokova je sada ograničena na male (do 128 KB), srednje (do 8 MB) i velike opsege. Implementacija raid56 je refaktorirana. Kod za provjeru kontrolnih suma je prerađen. Napravljene su optimizacije performansi kako bi se ubrzala operacija slanja do 10 puta keširanjem utime za direktorije i izvršavanjem naredbi samo kada je to potrebno. Operacije Fiemap sada su tri puta brže preskakanjem provjera povratnih veza za dijeljene podatke (snimke). Operacije s metapodacima su ubrzane za 10% optimizacijom pretraživanja ključeva u strukturama b-stabla.
    • Performanse ext4 datotečnog sistema su poboljšane omogućavanjem više procesa da istovremeno izvode direktne I/O operacije na unaprijed dodijeljenim blokovima koristeći dijeljena inode zaključavanja umjesto ekskluzivnih zaključavanja.
    • U f2fs-u se radilo na poboljšanju čitljivosti koda. Riješena važna pitanja vezana za atomsko upisivanje i novu keš memoriju opsega.
    • EROFS (Enhanced Read-Only File System) datotečni sistem, dizajniran za upotrebu u particijama samo za čitanje, implementira mogućnost vezivanja operacija dekompresije komprimovanog sadržaja datoteke za CPU kako bi se smanjilo kašnjenje prilikom pristupa podacima.
    • BFQ I/O planer je dodao podršku za napredne rotirajuće disk drajvove, kao što su oni koji koriste višestruke odvojeno kontrolisane jedinice (Multi Actuators).
    • Podrška za enkripciju podataka pomoću AES-SHA2 algoritma dodata je implementaciji NFS klijenta i servera.
    • Podsistemu FUSE (Filesystems In User Space) podsistemu je dodana podrška za mehanizam proširenja upita, što omogućava postavljanje dodatnih informacija u upit. Na osnovu ove funkcije, moguće je dodati identifikatore grupe u FS zahtjev, koji su neophodni da bi se uzela u obzir prava pristupa prilikom kreiranja objekata u FS-u (create, mkdir, symlink, mknod).
  • Virtuelizacija i sigurnost
    • KVM hipervizor za x86 sisteme je dodao podršku za Hyper-V proširene hiperpozive i omogućio njihovo prosleđivanje rukovaocu koji radi u okruženju domaćina u korisničkom prostoru. Promjena je omogućila implementaciju podrške za ugniježđeno pokretanje hipervizora Hyper-V.
    • KVM olakšava ograničavanje pristupa gosta PMU (Performance Monitor Unit) događajima koji se odnose na mjerenje performansi.
    • Mehanizam memfd, koji vam omogućava da identifikujete memorijsku oblast kroz deskriptor datoteke koji se prenosi između procesa, dodao je mogućnost kreiranja područja u kojima je zabranjeno izvršavanje koda (neizvršni memfd) i nemoguće je postaviti prava izvršenja u budućnosti .
    • Dodana je nova prctl operacija PR_SET_MDWE koja blokira pokušaje omogućavanja prava pristupa memoriji koja istovremeno dozvoljavaju pisanje i izvršavanje.
    • Dodata je i omogućena zaštita od napada klase Spectre prema zadanim postavkama, na osnovu automatskog IBRS (Enhanced Indirect Branch Restricted Speculation) moda predloženog u AMD Zen 4 procesorima, koji omogućava adaptivno dozvoljavanje i onemogućavanje spekulativnog izvršavanja instrukcija tokom obrade prekida, sistemskih poziva i prebacivanja konteksta. Predložena zaštita rezultira manjim troškovima u odnosu na Retpoline zaštitu.
    • Ispravljena je ranjivost koja omogućava zaobilaženje zaštite od napada Spectre v2 kada se koristi simultana višenitna tehnologija (SMT ili Hyper-Threading) i uzrokovana onemogućavanjem STIBP (Single Thread Indirect Branch Predictors) mehanizma pri odabiru IBRS načina zaštite.
    • Za sisteme bazirane na ARM64 arhitekturi, dodat je novi cilj sklopa „virtconfig“, kada se izabere, aktivira se samo minimalni skup komponenti kernela potrebnih za pokretanje sistema virtuelizacije.
    • Za arhitekturu m68k dodata je podrška za filtriranje sistemskih poziva pomoću mehanizma seccomp.
    • Dodata podrška za CRB TPM2 (Command Response Buffer) uređaje ugrađene u AMD Ryzen procesore, bazirane na Microsoft Pluton tehnologiji.
  • Mrežni podsistem
    • Dodan je netlink interfejs za konfigurisanje podsloja PLCA (Physical Layer Collision Avoidance), definisanog u specifikaciji IEEE 802.3cg-2019 i koji se koristi u 802.3cg (10Base-T1S) Ethernet mrežama optimizovanim za povezivanje uređaja Interneta stvari i industrijskih sistema. Upotreba PLCA poboljšava performanse u Ethernet mrežama sa zajedničkim medijima.
    • Podrška za API „bežične ekstenzije“ za upravljanje WiFi 7 (802.11be) bežičnim interfejsima je ukinuta jer ovaj API ne pokriva sva potrebna podešavanja. Prilikom pokušaja korištenja API-ja "bežične ekstenzije", koji je i dalje podržan kao emulirani sloj, upozorenje će se sada prikazati za većinu najnovijih uređaja.
    • Pripremljena je detaljna dokumentacija o netlink API-ju (za jezgre programere i za programere aplikacija korisničkog prostora). Uslužni program ynl-gen-c je implementiran za generiranje C koda na osnovu YAML specifikacija Netlink protokola.
    • Podrška za opciju IP_LOCAL_PORT_RANGE dodata je mrežnim utičnicama kako bi se pojednostavila konfiguracija odlaznih veza putem translatora adresa bez korištenja SNAT-a. Kada koristite jednu IP adresu na više hostova, IP_LOCAL_PORT_RANGE omogućava korištenje različitog raspona odlaznih mrežnih portova na svakom hostu i prosljeđivanje paketa na osnovu brojeva portova na gatewayu.
    • Za MPTCP (MultiPath TCP), implementirana je mogućnost obrade mješovitih tokova korištenjem IPv4 i IPv6 protokola. MPTCP je proširenje TCP protokola za organizovanje rada TCP veze sa isporukom paketa istovremeno duž nekoliko ruta kroz različita mrežna sučelja povezana sa različitim IP adresama.
    • Za IPv4, moguće je koristiti BIG TCP ekstenziju, koja vam omogućava da povećate maksimalnu veličinu TCP paketa na 4 GB kako biste optimizirali rad brzih internih mreža centara podataka. Slično povećanje veličine paketa sa 16-bitnom veličinom polja zaglavlja postiže se implementacijom "jumbo" paketa, čija je veličina u IP zaglavlju postavljena na 0, a stvarna veličina se prenosi u zasebnom 32-bitnom polje u posebnom 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 saobraćaja kroz CPU jezgre na nivou rukovaoca prekida.
    • Podrška za discipline obrade redova za ograničavanje CBQ (red na bazi klase), ATM (ATM virtuelna kola), dsmark (oznaka diferencirane usluge), tcindex (indeks kontrole prometa) i RSVP (protokol rezervacije resursa) je ukinuta. Ove discipline su dugo bile napuštene i niko nije bio voljan da nastavi njihovu podršku.
  • Oprema
    • Uklonjeni svi grafički drajveri zasnovani na DRI1: i810 (starije integrisane Intel 8xx 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 putem (VIA IGP), koji su zastarjeli 2016. i nisu podržani u Mesi od 2012. godine.
    • Uklonjeni stari drajveri framebuffer-a (fbdev) omap1, s3c2410, tmiofb i w100fb.
    • DRM drajver je dodat za VPU (Versatile Processing Unit) jedinice integrisane u Intel Meteor Lake CPU (14. generacija), dizajnirane da ubrzaju operacije vezane za kompjuterski vid i mašinsko učenje. Drajver je implementiran pomoću podsistema “accel” koji ima za cilj pružanje podrške za računske akceleratore, koji se mogu isporučiti ili u obliku pojedinačnih ASIC-ova ili kao IP blokovi unutar SoC-a i GPU-a.
    • i915 (Intel) drajver proširuje podršku za diskretne Intel Arc (DG2/Alchemist) grafičke kartice, pruža preliminarnu podršku za Meteor Lake GPU i uključuje podršku za Intel Xe HP 4tile GPU.
    • Amdgpu drajver dodaje podršku za tehnologiju AdaptiveSync i mogućnost korišćenja režima Secure Display sa više ekrana. Ažurirana podrška za DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x i DP 2.1.
    • Msm drajver (Qualcomm Adreno GPU) je dodao podršku za SM8350, SM8450 SM8550, SDM845 i SC8280XP platforme.
    • Nouveau drajver više ne podržava stare ioctl pozive.
    • Eksperimentalna podrška za NPU VerSilicon (VeriSilicon Neural Network Processor) dodata je etnaviv drajveru.
    • Pata_parport drajver je implementiran za IDE diskove povezane preko paralelnog porta. Dodati drajver nam je omogućio da uklonimo stari PARIDE drajver iz kernela i modernizujemo ATA podsistem. Ograničenje novog drajvera je nemogućnost istovremenog povezivanja štampača i diska preko paralelnog porta.
    • Dodan ath12k drajver za bežične kartice na Qualcomm čipovima koji podržavaju Wi-Fi 7. Dodata podrška za bežične kartice na RealTek RTL8188EU čipovima.
    • Dodata podrška za 46 ploča sa procesorima baziranim 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 i također uređaji bazirani na SoC-u Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 i SDM632, Rockchips RK3128 TV box, RV1126 Vision, RK3588, RK3568, RK3566, RKRK3588 (KRK3328) 3 /AM642 /AM654).

U isto vrijeme, Latinoamerička fondacija za slobodni softver formirala je verziju potpuno besplatnog kernela 6.3 - Linux-libre 6.3-gnu, očišćenu od elemenata firmvera i drajvera koji sadrže neslobodne komponente ili dijelove koda, čiji je opseg ograničeno od strane proizvođača. U izdanju 6.3, blobovi su očišćeni u novim drajverima ath12k, aw88395 i peb2466, kao iu novim datotekama stabla uređaja za qcom uređaje zasnovane na arhitekturi AArch64. Ažuriran kod za čišćenje mrlja u drajverima i podsistemima amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110, kao i u drajverima za DVB kartice sa softverskim dekodiranjem i u prethodno kompajliranim BPF datotekama. Čišćenje mga, r128, tm6000, cpia2 i r8188eu drajvera je zaustavljeno pošto su uklonjeni iz kernela. Poboljšano čišćenje mrlja i915 drajvera.

izvor: opennet.ru

Dodajte komentar