Izdanje jezgre Linuxa 6.1

Nakon dva mjeseca razvoja, Linus Torvalds predstavio je izdanje Linux kernela 6.1. Među najznačajnijim promjenama: podrška za razvoj upravljačkih programa i modula u jeziku Rust, modernizacija mehanizma za određivanje korištenih memorijskih stranica, poseban upravitelj memorije za BPF programe, sustav za dijagnosticiranje memorijskih problema KMSAN, KCFI (Kernelk Control -Flow Integrity) zaštitni mehanizam, uvođenje stabla strukture Maple.

Nova verzija uključuje 15115 popravaka od 2139 programera, veličina zakrpe je 51 MB, što je otprilike 2 puta manje od veličine zakrpa iz kernela 6.0 i 5.19. Promjene su zahvatile 13165 datoteka, dodano je 716247 redaka koda, a izbrisano je 304560 redaka. Oko 45% svih promjena uvedenih u 6.1 odnosi se na upravljačke programe uređaja, približno 14% promjena odnosi se na ažuriranje koda specifičnog za hardverske arhitekture, 14% se odnosi na mrežni stog, 3% se odnosi na datotečne sustave, a 3% povezani su s unutarnjim podsustavima jezgre.

Ključne inovacije u kernelu 6.1:

  • Memorija i usluge sustava
    • Dodana je mogućnost korištenja Rusta kao drugog jezika za razvoj upravljačkih programa i modula kernela. Glavni razlog podrške za Rust je olakšati pisanje sigurnih i visokokvalitetnih upravljačkih programa za uređaje smanjujući vjerojatnost pravljenja pogrešaka pri radu s memorijom. Podrška za Rust onemogućena je prema zadanim postavkama i ne rezultira uključivanjem Rusta kao obavezne ovisnosti o izgradnji jezgre. Kernel je do sada usvojio minimalnu, ogoljenu verziju zakrpa, koja je smanjena sa 40 na 13 tisuća redaka koda i pruža samo nužni minimum, dovoljan za izgradnju jednostavnog modula kernela napisanog u jeziku Rust. U budućnosti se planira postupno povećavati postojeću funkcionalnost, prenoseći ostale promjene iz grane Rust-for-Linux. Paralelno se razvijaju projekti za korištenje predložene infrastrukture za razvoj drajvera za NVMe diskove, 9p mrežni protokol i Apple M1 GPU na jeziku Rust.
    • Za sustave temeljene na arhitekturama AArch64, RISC-V i LoongArch s EFI-jem implementirana je mogućnost izravnog učitavanja komprimiranih slika kernela. Dodani rukovatelji za učitavanje, pokretanje i istovar slika kernela, pozvani izravno iz EFI zboot. Također su dodani rukovatelji za instaliranje i brisanje protokola iz baze podataka EFI protokola. Prethodno je raspakiranje vršio zaseban bootloader, ali sada to može učiniti rukovatelj u samoj jezgri - slika jezgre formirana je kao EFI aplikacija.
    • Sastav uključuje dio zakrpa s implementacijom modela upravljanja memorijom na više razina, koji vam omogućuje odvajanje banaka memorije s različitim karakteristikama performansi. Na primjer, najčešće korištene stranice mogu biti pohranjene u najbržoj memoriji, dok se najrjeđe korištene stranice mogu pohraniti u relativno sporoj memoriji. Kernel 6.1 uvodi mehanizam za određivanje gdje se jako korištene stranice nalaze u sporoj memoriji kako bi se mogle unaprijediti u brzu memoriju, a također uvodi opći koncept memorijskih slojeva i njihove relativne performanse.
    • Uključuje mehanizam MGLRU (Multi-Generational LRU), koji zamjenjuje staru implementaciju LRU (Lest Recently Used) koja se temelji na dva reda čekanja s višestupanjskom strukturom koja bolje određuje koje su memorijske stranice zapravo u upotrebi, a koje se mogu izbaciti u swap particiju.
    • Dodana podrška za podatkovnu strukturu "javorovo stablo" koju su predložili Oracleovi inženjeri, a koja je pozicionirana kao učinkovitija zamjena za strukturu "crveno-crnog stabla". Maple tree je varijanta B-stabla koja podržava indeksiranje raspona i dizajnirana je za učinkovito korištenje predmemorije modernih procesora. Neki podsustavi za upravljanje memorijom već su prebačeni na maple tree, što se pozitivno odrazilo na njihovu izvedbu. U budućnosti se javorovo stablo može koristiti za implementaciju zaključavanja raspona.
    • Mogućnost stvaranja "destruktivnih" BPF programa posebno dizajniranih za pokretanje hitnog isključivanja putem poziva crash_kexec() dodana je BPF podsustavu. Takvi BPF programi mogu biti potrebni u svrhe otklanjanja pogrešaka kako bi pokrenuli stvaranje ispisa pada u određenom trenutku. Za pristup destruktivnim operacijama prilikom učitavanja BPF programa, morate navesti oznaku BPF_F_DESTRUCTIVE, aktivirati sysctl kernel.destructive_bpf_enabled i imati CAP_SYS_BOOT prava.
    • Za BPF programe, moguće je nabrojati elemente cgroup-a, kao i nabrojati resurse (datoteke, vma, procese itd.) određene niti ili zadatka. Implementirana je nova vrsta karte za stvaranje korisničkih međuspremnika prstena.
    • Dodan poseban poziv za dodjelu memorije u BPF programima (memory allocator), koji pruža sigurniju dodjelu memorije u BPF kontekstu od standardnog kmalloc().
    • Prvi dio promjena je integriran, pružajući mogućnost kreiranja upravljačkih programa za ulazne uređaje s HID (Human Interface Device) sučeljem, implementiranim u obliku BPF programa.
    • Kernel je potpuno uklonio kod za podršku formatu izvršne datoteke a.out, koji je zastario u izdanju 5.1 i onemogućen je za glavne arhitekture od verzija 5.18 i 5.19. Format a.out odavno je zastario na Linux sustavima, a generiranje a.out datoteka nije podržano modernim alatima u zadanim konfiguracijama Linuxa. Učitavač za a.out datoteke može se u potpunosti implementirati u korisnički prostor.
    • Za sustave koji se temelje na arhitekturi skupa instrukcija LoongArch koja se koristi u procesorima Loongson 3 5000 i implementira novi RISC ISA, sličan MIPS-u i RISC-V, implementirana je podrška za događaje mjerenja performansi (perf događaji), kexec, kdump i BPF JIT kompilaciju .
    • Asinkrono I/O sučelje io_uring nudi novi način rada, IORING_SETUP_DEFER_TASKRUN, koji omogućuje privremenu odgodu rada vezanog uz međuspremnik prstena dok se ne napravi zahtjev aplikacije, što se može koristiti za skupni rad i izbjegavanje problema s kašnjenjem zbog preempcije. aplikacije na Pogrešno vrijeme.
    • Procesi u korisničkom prostoru dobivaju mogućnost pokretanja pretvorbe raspona normalnih memorijskih stranica u skup velikih memorijskih stranica (Transparent Huge-Pages).
    • Dodana implementacija uređaja /dev/userfaultfd, koji omogućuje pristup funkcionalnosti sistemskog poziva userfaultfd() korištenjem prava pristupa u FS-u. Funkcionalnost userfaultfd omogućuje vam stvaranje rukovatelja za pristup stranicama nedodijeljene memorije (greške stranice) u korisničkom prostoru.
    • Zahtjevi za verziju uslužnog programa GNU Make su povećani - sada je potrebna barem verzija 3.82 za izgradnju kernela.
  • Diskovni podsustav, I/O i datotečni sustavi
    • U Btrfs datotečnom sustavu napravljene su značajne optimizacije performansi; između ostalog, performanse poziva FIEMAP ioctl povećane su za redove veličine. Dodana podrška za asinkrono upisivanje u međuspremnik za aplikacije koje koriste io_uring. Dodana je podrška za datoteke zaštićene fs-verity operacijom "pošalji".
    • Datotečni sustav ext4 dodao je optimizacije performansi koje se odnose na održavanje dnevnika i rad samo za čitanje.
    • Datotečni sustav EROFS (Enhanced Read-Only File System), dizajniran za korištenje na particijama dostupnim u načinu samo za čitanje, implementira mogućnost dijeljenja podataka dupliciranih u različitim datotečnim sustavima.
    • Dodan je sistemski poziv statx() za prikaz informacija o tome može li se izravni I/O primijeniti na datoteku.
    • U podsustav FUSE (Filesystems in User Space) dodana je podrška za stvaranje privremenih datoteka s oznakom O_TMPFILE.
  • Virtualizacija i sigurnost
    • Implementacija CFI (Control Flow Integrity) zaštitnog mehanizma je zamijenjena, dodajući provjere prije svakog neizravnog poziva za otkrivanje nekih oblika nedefiniranog ponašanja koji bi potencijalno mogli dovesti do kršenja normalnog redoslijeda izvršavanja (kontrolnog toka) kao rezultat korištenje exploita koji mijenjaju pokazivače na funkcije pohranjene u memoriji. Standardna implementacija CFI-ja iz projekta LLVM zamijenjena je opcijom koja se također temelji na korištenju Clanga, ali posebno prilagođena zaštiti podsustava niske razine i jezgri operacijskog sustava. U LLVM-u, nova implementacija bit će ponuđena u izdanju Clang 16 i bit će omogućena s opcijom "-fsanitize=kcfi". Ključna razlika s novom implementacijom je u tome što nije vezana za optimizaciju vremena povezivanja (LTO) i ne rezultira zamjenom pokazivača na funkcije vezama u tablici skokova.
    • Za LSM module (Linux Security Module), moguće je stvoriti rukovatelje koji presreću operacije za stvaranje prostora imena.
    • Dostupni su alati za provjeru PKCS#7 digitalnih potpisa u BPF programima.
    • Mogućnost otvaranja u neblokirajućem načinu rada (O_NONBLOCK), koja je nenamjerno uklonjena u kernelu 5.6, vraćena je u /dev/random.
    • Na sustavima s x86 arhitekturom dodano je upozorenje u slučaju mapiranja memorijskih stranica od strane podsustava jezgre koji istovremeno dopuštaju izvršavanje i pisanje. U budućnosti se razmatra mogućnost potpune zabrane takvog mapiranja memorije.
    • Dodan KMSAN (Kernel Memory Sanitizer) mehanizam za otklanjanje pogrešaka za otkrivanje neinicijalizirane upotrebe memorije u jezgri, kao i neinicijaliziranog curenja memorije između korisničkog prostora i uređaja.
    • Učinjena su poboljšanja u kripto-sigurnom CRNG generatoru pseudoslučajnih brojeva koji se koristi u getrandom pozivu. Promjene je pripremio Jason A. Donenfeld, autor VPN WireGuarda, a usmjerene su na poboljšanje sigurnosti pseudo-nasumične ekstrakcije cijelih brojeva.
  • Mrežni podsustav
    • TCP stog pruža mogućnost (onemogućeno prema zadanim postavkama) da se zasebno koriste hash tablice utičnica za svaki prostor imena, što poboljšava performanse na sustavima s velikim brojem prostora imena.
    • Uklonjen kod za podršku naslijeđenog DECnet protokola. API stupovi korisničkog prostora ostaju na mjestu kako bi se omogućilo kompajliranje aplikacija koje koriste DECnet, ali te se aplikacije neće moći spojiti na mrežu.
    • Protokol netlink je dokumentiran.
  • Оборудование
    • Upravljački program amdgpu dodao je podršku za DSC (Display Stream Compression) prosljeđivanje za kompresiju podataka bez gubitaka prilikom razmjene informacija sa zaslonima koji podržavaju vrlo visoke rezolucije. Nastavlja se rad na pružanju podrške za platforme AMD RDNA3 (RX 7000) i CDNA (Instinct). Dodana podrška za DCN 3.2, SMU 13.x, NBIO 7.7, GC 11.x, PSP 13.x, SDMA 6.x i GMC 11.x IP komponente. Upravljački program amdkfd (za diskretne AMD GPU-ove kao što je Polaris) pruža podršku za GFX 11.0.3.
    • Upravljački program i915 (Intel) uključuje podršku za Meteor Lake GPU. Meteor Lake i noviji GPU podržavaju DP 2.0 (DisplayPort) sučelje. Dodani identifikatori za video kartice temeljene na mikroarhitekturi Alder Lake S.
    • Dodana podrška za audio podsustave implementirane u Apple Silicon, Intel SkyLake i Intel KabyLake procesore. CS35L41 HDA audio upravljački program podržava način mirovanja. Dodana podrška za ASoC (ALSA sustav na čipu) za integrirane audio čipove Apple Silicon, AMD Rembrant DSP-ove, AMD Pink Sardine ACP 6.2, Everest ES8326, Intel Sky Lake i Kaby Lake, Mediatek MT8186, NXP i.MX8ULP DSP-ove, Qualcomm SC8280XP, SM8250, SM8450 i Texas Instruments SRC4392
    • Dodana podrška za LCD panele Samsung LTL101AL01, B120XAN01.0, R140NWF5 RH, Densitron DMT028VGHMCMI-1A TFT, AUO B133UAN02.1, IVO M133NW4J-R3, Innolux N120ACA-EA1, AUO B116XAK01.6, BOE NT116W H M-N21, INX N116BCA- EA2 , INX N116BCN-EA1, Multi-Inno tehnologija MI0800FT-9.
    • Dodana podrška za AHCI SATA kontrolere koji se koriste u Baikal-T1 SoC.
    • Dodana podrška za Bluetooth čipove MediaTek MT7921, Intel Magnetor (CNVi, integrirano povezivanje), Realtek RTL8852C, RTW8852AE i RTL8761BUV (Edimax BT-8500).
    • Upravljački program ath11k za Qualcomm bežične module dodao je podršku za spektralno skeniranje u rasponu od 160 MHz, implementirao višenitni NAPI i poboljšao podršku za Qualcomm WCN6750 Wi-Fi čipove.
    • Dodani upravljački programi za PinePhone tipkovnicu, InterTouch dodirne podloge (ThinkPad P1 G3), X-Box Adaptive Controller, PhoenixRC Flight Controller, VRC-2 Car Controller, DualSense Edge Controller, IBM Operation Panel, XBOX One Elite daljinske upravljače, tablete XP-PEN Deco Pro S i Intuos Pro Small (PTH-460).
    • Dodan upravljački program za Aspeed HACE (Hash and Crypto Engine) kriptografske akceleratore.
    • Dodana podrška za integrirane Thunderbolt/USB4 Intel Meteor Lake kontrolere.
    • Dodana podrška za pametne telefone Sony Xperia 1 IV, Samsung Galaxy E5, E7 i Grand Max, Pine64 Pinephone Pro.
    • Dodana podrška za ARM SoC i ploče: AMD DaytonaX, Mediatek MT8186, Rockchips RK3399 i RK3566, TI AM62A, NXP i.MX8DXL, Renesas R-Car H3Ne-1.7G, Qualcomm IPQ8064-v2.0, IPQ8062, IPQ8065, Kontron SL/ BL i.MX8MM OSM-S, MT8195 (Acer Tomato), Radxa ROCK 4C+, NanoPi R4S Enterprise Edition, JetHome JetHub D1p. Ažurirani upravljački programi za SoC Samsung, Mediatek, Renesas, Tegra, Qualcomm, Broadcom i NXP.

Istodobno, Latinoamerička zaklada za slobodni softver formirala je verziju potpuno besplatne jezgre 6.1 - Linux-libre 6.1-gnu, očišćenu od elemenata firmvera i upravljačkih programa koji sadrže neslobodne komponente ili dijelove koda, čiji je opseg ograničeno od strane proizvođača. Novo izdanje čisti novi upravljački program rtw8852b i DTS datoteke za različite Qualcomm i MediaTek SoC-ove s procesorima koji se temelje na AArch64 arhitekturi. Ažurirani kod za čišćenje mrlja u upravljačkim programima i podsustavima amdgpu, i915, brcmfmac, r8188eu, rtw8852c, Intel ACPI. Čišćenje zastarjelih upravljačkih programa tm6000 TV kartice, cpia2 v4l, sp8870, av7110 je ispravljeno.

Izvor: opennet.ru

Dodajte komentar