Pärast kahte kuud arendust tutvustas Linus Torvalds Linuxi tuuma versioon 5.19. Olulisemate muudatuste hulka kuuluvad: LoongArch arhitektuuri tugi, BIG TCP patšide integreerimine, fscache 'on-demand' režiim, a.out formaadi toe eemaldamine, ZSTD kasutamise võimalus püsivara tihendamiseks, liides mälestuse väljasurumise haldamiseks kasutaja ruumist, suurenenud usaldusväärsus ja tõhusus pseudojuhuslike arvude generaatori jaoks, ning Intel IFS (In-Field Scan), AMD SEV-SNP (Secure Nested Paging), Intel TDX (Trusted Domain Extensions) ja ARM SME (Scalable Matrix Extension) laienduste tugi.
Teates märkis Linus, et järgmine tuuma versioon saab tõenäoliselt numbriks 6.0, kuna 5.x haru on kogunud piisavalt väljaandeid, et versiooni numbri esimest numbrit muuta. Numbrite muutmine toimub esteetilistel kaalutlustel ja on formaalne samm, mis kõrvaldab ebamugavust, mis tuleneb suurte väljaannete hulgast sarjas.
Samuti mainis Linus, et kasutas väljalaske koostamiseks Apple'i ARM64 arhitektuuril põhinevat sülearvutit (Apple Silicon) koos Asahi Linuxi jaotusega. See ei ole Linuse põhitöö arvuti, kuid ta kasutas seda platvormi, et testida selle sobivust tuuma kallal töötamiseks ja olla kindel, et saab väljas olles tuuma versioone koostada, olles käepärast kerge sülearvuti. Aastate eest oli Linusel kogemusi Apple'i seadmete kasutamisega arendamiseks — kunagi kasutas ta ppc970 protsessoriga arvutit ja Macbook Air sülearvutit.
Uude versiooni on lisatud 16401 parandust 2190 arendajalt (eelmises versioonis oli 16206 parandust 2127 arendajalt), plaastri suurus on 90 MB (muudatused puudutasid 13847 faili, lisatud on 1149456 rida koodi, kustutatud 349177 rida). Umbes 39% kõigist 5.19 väljaandes esitatud muudatustest on seotud seadme draiveritega, umbes 21% muudatustest on seotud riistvaraarhitektuurile spetsiifilise koodi värskendamisega, 11% on seotud võrgupilviga, 4% — failisüsteemidega ja 3% tuuma sisealamsüsteemidega.
Peamised uuendused tuumas 5.19:
- Disski alamsüsteem, sisend/väljund ja failisüsteemid
- EROFS (Enhanced Read-Only File System) failisüsteem, mis on mõeldud kasutamiseks ainult lugemise režiimis olevatel partitsioonidel, on muudetud kasutama fscache alam-süsteemi, mis tagab andmete vahemälastamise. Muudatus on võimaldanud märkimisväärselt parandada süsteemide jõudlust, kus palju konteinerite käivitatakse EROFS-i pildilt.
- Fscache alam-süsteemi on lisatud nõudmise kaupa lugemise režiim („on-demand“), mis on aktiveeritud EROFS-i optimeerimiseks. Uus režiim võimaldab korraldada vahemälastamist lugemisel failisüsteemi piltidest, mis asuvad kohalikus süsteemis. Erinevalt algselt saadaval olnud režiimist, mis keskendub andmete vahemälastamisele kohalike failisüsteemide kaudu, delegeerib „on-demand“ režiim andmete hankimise ja vahemällu kirjutamise funktsioonid eraldi taustaprotsessile, mis töötab kasutaja ruumis.
- XFS-iga on lisatud võimalus salvestada miljardeid laiendatud atribuute i-node'is. Ühe faili jaoks on ekstentide maksimaalne arv suurendatud 4 miljardilt 247-ni. Käivitatud on režiim, mis võimaldab mitme faili laiendatud atribuudi aatomaarset uuendamist.
- Failisüsteemis Btrfs on optimeeritud töötamine lukustustega, mis on võimaldanud saavutada umbes 7% suurema jõudluse otse kirjutamisel nowait režiimis. NOCOW (ilma copy-on-write') režiimi tegevuste jõudlus on suurenenud ligikaudu 3%. Lehe vahemälu koormus on vähenenud käsu 'send' töötamisel. Alahelvede minimaalne suurus on vähenenud 64K-lt 4K-le (võib kasutada lehti, mille suurus on väiksem kui tuuma lehtede suurus). Üleminek on tehtud baaspuidust (radix tree) algoritmilt XArrays-le.
- NFS-serverisse on lisatud uus režiim, mis pikendab blokeeringu staatust, kui klient, kes enam päringutele ei vasta, on lõpetanud. Uus režiim võimaldab blokeeringu vabastamist edasi lükata kuni 24 tunniks, kui teine klient ei soovi vastandlikku blokeeringut. Tavalistes tingimustes vabastatakse blokeering 90 sekundi pärast, kui klient enam ei vasta.
- Sündmuste jälgimise alamsüsteemis on fanotify-s saadaval lipp FAN_MARK_EVICTABLE, millega saab välja lülitada siht-i-node'i fikseerimise vahemälus, näiteks alampinkide ignoreerimiseks ilma nende osade vahemällesse kinnitamata.
- FAT32 failisüsteemi draiverisse on lisatud tugi failide loomise aja andmete saamiseks süsteemikutsest statx, mis rakendab efektiivsemat ja funktsionaalsemat versiooni stat() funktsioonist, tagastades laiendatud teabe faili kohta.
- ExFAT draiverisse on sisse viidud märkimisväärsed optimeerimised, mis võimaldavad sektorigruppide samaaegset puhastamist "dirsync" režiimis, selle asemel et puhastada sektoreid ükshaaval. Optimeerimise tõttu vähenenud plokkide päringute arvu tõttu on SD-kaardil arvukate kataloogide loomise jõudlus suurenenud rohkem kui 73-85% sõltuvalt klastrite suurusest.
- Tuumarakendusse on lisatud esimene parandav värskendus ntfs3 draiverile. Alates ntfs3 lisamisest tuumasse 5.15 möödunud aasta oktoobris pole draiverit värskendatud ning kontakt arendajatega on kadunud, kuid nüüd on arendajad taas muutuste avaldamisega edasi liikunud. Pakutud plaastrites on kõrvaldatud vead, mis põhjustavad mälu leket ja äkkseisakuid, lahendatud xfstestide täitmise probleemid, puhastatud on kasutamata kood ja parandatud trükivigu.
- OverlayFS-is on rakendatud võimalus seotud failisüsteemide kasutajate identifikaatorite kaardistamiseks, mis võimaldab seondada teatud kasutaja failid teisel jaotisel olevate failidega, mis on praeguses süsteemis teiste kasutajate all.
- Mälu ja süsteemiteenused
- Lisatud esialgne tugi LoongArch käsu kogumi arhitektuurile, mida kasutatakse Loongson 3 5000 protsessorites ja mis rakendab uut RISC ISA-d, mis on sarnane MIPS-ile ja RISC-V-le. LoongArch arhitektuur on saadaval kolmes variandis: kärbitud 32-bitine (LA32R), tavaline 32-bitine (LA32S) ja 64-bitine (LA64).
- Eemaldatud kood a.out täidisablefailiformaadi toe jaoks, mis on saanud aegunuks versioonis 5.1. Formaat a.out pole pikka aega olnud kasutusel Linuxi süsteemides ning a.out failide genereerimine ei ole vaikimisi Linuxi konfiguratsioonides kaasaegsete tööriistadega toetatud. A.out failide laadija võib olla täielikult rakendatud kasutajaruumi.
- Lõpetatud x86 arhitektuuri jaoks spetsiifiliste käivitusvalikute tugi: nosep, nosmap, nosmep, noexec ja noclflush).
- Lõpetatud toetamine aegunud CPU arhitektuurile h8300 (Renesas H8/300), mis on pikka aega olnud ilma hooldamiseta.
- Laienenud võimalused, mis on seotud jagatud lukustuste («split lock») tuvastamise reageerimisega, mis tekivad, kui juurdepääs ebaviidud andmetele mälus toimub selle tõttu, et aatomaarse käsu täitmisel andmed ületavad kaks CPU vahemälu rida. Sellised lukustused põhjustavad märkimisväärset jõudluse langust. Kui varem tuvastas süsteem vaikimisi tuuma, andes hoiatusi lukustuse põhjustanud protsessist, siis nüüd lisaks aeglustatakse probleemset protsessi, et säilitada ülejäänud süsteemi jõudlust.
- Lisatud tugi Intel'i protsessorites rakendatud IFS (In-Field Scan) mehhanismile, mis võimaldab käivitada madala taseme diagnostikakatseid CPU-de jaoks, suudab tuvastada probleeme, mida tavapärased ECC (vigade parandamise koodide) või paaritusbitide põhised vahendid ei suuda tuvastada. Teostatavad testid on struktureeritud laaditava püsivara kujul, mis sarnaneb mikrokoode uuendustega. Testimise tulemused on kergesti kättesaadavad sysfs kaudu.
- Lisatud on võime integreerida bootconfigi fail tuumasse, mis võimaldab lisaks käsurea valikutele määrata tuuma tööparameetreid seadistusfailiga. Integreerimine toimub koostamisvaliku abil ‘CONFIG_BOOT_CONFIG_EMBED_FILE=»/PATH/TO/BOOTCONFIG/FILE»‘. Varasemalt määrati bootconfig initrd pildiga. Integreerimine tuumas võimaldab bootconfigi kasutada konfiguratsioonides ilma initrd-ta.
- Tehtud on võimalikuks laadida Zstandard algoritmiga surutud püsivara. sysfs-sse on lisatud juhtfailide kogum /sys/class/firmware/*, mis võimaldab algatada püsivara laadimist kasutajaruumist.
- Asünkroosse I/O io_uring liideses on pakutud uus lipp IORING_RECVSEND_POLL_FIRST, mille activeerimisel suunatakse võrguoperatsioon kõigepealt töötlemiseks polling'ut kasutades. See võib säästa ressursse olukordades, kus teatud viivitus on lubatud operatsiooni töötlemiseks. Io_uringisse on ka lisatud sokli() süsteemikutsumise tugi, uued lipud failidesse jaotamise haldamise lihtsustamiseks, lisatud on 'multi-shot' režiim accept() kutsel, mis võimaldab korraga vastu võtta mitu ühendust, ning lisatud on NVMe käskude otse seadmesse edastamise operatsioonid.
- Xtensa arhitektuuri jaoks on tagatud KCSAN (Kernel Concurrency Sanitizer) silumine, mis on mõeldud dünaamiliseks rivaalitsemisolekute tuvastamiseks tuumas. Samuti on lisatud toetav une režiim ja koopiateprotsessorite tugi.
- m68k (Motorola 68000) arhitektuuri jaoks on realiseeritud virtuaalne masin (platvormi simulaator), mis põhineb Android Goldfish emulatoril.
- AArch64 arhitektuuri jaoks on realiseeritud Armv9-A SME (Scalable Matrix Extension) laienduste tugi.
- eBPF alamsüsteemis on lubatud tüüpide näidikute salvestamine kaardistruktuurides ning lisatud on dünaamiliste näidikute tugi.
- Uus ennetav mälu väljavõtmise mehhanism, mis toetab kasutaja ruumist juhtimist faili memory.reclaim abil, on välja pakutud. Ning numbrite kirjutamine antud faili toob kaasa vastava arvu baitide väljavõtmise katse cgroup'i komplektist.
- Mälu kasutuse täpsust on suurendatud andmete kokkusurutud olekus vahefaili all, kasutades zswap mehhanismi.
- RISC-V arhitektuurile on tagatud 32-bitiste täideviidavate failide käitamise tugi 64-bitistes süsteemides, lisatud on režiim, mis seob piiravat attribuuti mälulehekülgedele (näiteks, et keelata vahemälu kasutamine), ning on ellu kutsutud funktsioon kexec_file_load().
- 32-bitiste Armv4T ja Armv5 süsteemide toe rakendus on kohandatud kasutamiseks universaalsetes mitme platvormi tuumade kogudes, mis sobivad erinevatele ARM-süsteemidele.
- Virtualiseerimine ja turvalisus
- EFI alamsüsteemis on võimalik salajase teabe konfidentsiaalne edastamine külg süsteemidele, ilma et see host-süsteemi paljastuks. Andmeid antakse läbi katalooge security/coco securityfs.
- Lockdowni kaitserežiimis, mis piirab root-kasutaja juurdepääsu kernelile ja blokeerib UEFI Secure Boot'i ümbersõiduteed, on kõrvaldatud võimalus, mis võimaldas kaitset vältida kernelideebuggeri manipulatsioonide kaudu.
- On aktiveeritud plaastrid, mis on suunatud pseudo-juhuslike arvu generaatori usaldusväärsuse ja jõudluse parandamisele.
- Clang 15 kasutamisel on rakendatud tuumikstruktuuride randomiseerimise mehhanismi tugi.
- Landlocki mehhanismi, mis võimaldab piirata rühmade protsesside suhtlemist väliskeskkonnaga, on lisatud reeglite tugi failide ümbernimetamise toimingute kontrollimiseks.
- IMA (Integrity Measurement Architecture) alamsüsteem, mis on mõeldud operatsioonisüsteemi komponentide kontrollimiseks digitaalse allkirja ja hajutatud aluste poolt, on konfigureeritud kasutama fs-verity moodulit failide verifitseerimiseks.
- Muudetud eBPF-alamhulga juurdepääsu keelamise loogikat — varem keelati kõik bpf() süsteemi kõnega seotud käsklused, kuid alates versioonist 5.19 on lubatud käsklused, mis ei loo objekte. Sellise käitumise korral on BPF-programmi laadimiseks vajalik privileegitud protsess, kuid seejärel saavad mitteprivilegeeritud protsessid selle programmiga suhelda.
- Lisatud AMD SEV-SNP (Secure Nested Paging) laienduse tugi, mis tagab turvalise töötamise pesa mälu lehtede sisendisse ja kaitseb «undeSErVed» ja «SEVerity» rünnakute eest AMD EPYC protsessoritel, mis võimaldavad mööda minna AMD SEV (Secure Encrypted Virtualization) kaitse mehhanismist.
- Lisatud Intel TDX (Trusted Domain Extensions) mehhanismi tugi, mis võimaldab blokkeerida katseid kolmanda osapoole juurdepääsu krüpteeritud mälule. virtuaalmasinad.
- Virtio-blk draiverisse, mida kasutatakse plokkseadmeste emuleerimiseks, on lisatud polling-põhise sisendi/väljundi tugi, mis testide põhjal on vähendanud latentsust ligikaudu 10%.
- Võrgu alamsüsteem
- Rikkas BIG TCP patšide sarja võimaldab suurendada TCP-paketi maksimaalset suurust kuni 4 GB, et optimeerida andmekeskuste kiirete sisevõrkude toimivust. Selle pakkemise suuruse suurendamine 16-bitise pealkirja välja kaudu saavutatakse „jumbo” pakkide rakendamise kaudu, mille IP-pealkirja suurus on seatud 0 ja tegelik suurus edastatakse eraldi 32-bitises väljas eraldi kinnitatud pealkirjas. Tulemuslikkuse testimisel võimaldas 185 KB suuruse pakendi määramine suurendada läbilaskevõimet 50% ja oluliselt vähendada andmete edastamise latentsust.
- Töö pakettide mahajätmise põhjuste jälgimise vahendite integreerimise kallal on jätkunud, et võrgu stäkki lisada koodid (reason). Põhjuse kood edastatakse mälu vabastamisel, mis on seotud paketiga, ja võimaldab arvestada selliste olukordadega nagu paketi mahajätmine, mille põhjuseks on väljad pealkirjas, rp_filter'i spooking'u tuvastamine, vale kontrollsummad, mälu puudus, IPSec XFRM reeglite aktiveerimine, vale TCP järjestuse number jne.
- Lisatud tugi MPTCP (MultiPath TCP) ühenduste tagasivõtmiseks tavalise TCP kasutamiseks olukordades, kus teatud MPTCP funktsioonid ei saa olla aktiivsed. MPTCP on TCP protokolli laiendus, et korraldada TCP-ühendust, mis edastab pakette samaaegselt mitme marsruudi kaudu erinevate võrguliideste kaudu, mis on seotud erinevate IP-aadressidega. Lisatud API MPTCP voogude haldamiseks kasutaja ruumis.
- Seadmed
- Amdgpu draiveriga seostatud rohkem kui 420 000 koodi rida on lisatud, millest umbes 400 000 rida koosneb automaatselt genereeritud päised, mis sisaldavad andmeid AMD GPU ASIC registrite jaoks, ja veel 22,5 tuhat rida pakuvad esialgset toe rakendust AMD SoC21-le. AMD GPU draiveri kogusumma on ületanud 4 miljonit koodi rida. Lisaks SoC21 toetab AMD draiver SMU 13.x (Süsteemi Haldusüksus), on uuendatud USB-C ja GPUVM tuge ning on valmistatud ette järgnevate RDNA3 (RX 7000) ja CDNA (AMD Instinct) platvormide toe toetamiseks.
- Intel i915 draiveris on laiendatud energiatõhususe haldamise võimalusi. Lisatud on Intel DG2 (Arc Alchemist) GPU identifikaatorid, mida kasutatakse sülearvutites, tagatud on Intel Raptor Lake-P (RPL-P) platvormi esialgne tugi, lisatud on teavet Arctic Sound-M graafikakaartide kohta, realiseeritud on arvutusmootorite ABI, DG2 kaartide jaoks on lisatud Tile4 formaadi tugi ning Haswell mikroarhitektuuril põhinevates süsteemides on rakendatud DisplayPort HDR tuge.
- Nouveau juhendis on ülemineku kasutusele võetud drm_gem_plane_helper_prepare_fb töötleja, mõnede struktuuride ja muutujate puhul on rakendatud staatilist mälu jaotust. Mis puutub ettevõtte NVIDIA avaldatud avatud lähtekoodiga kerneli moodulite kasutamisse Nouveau-s, siis töö on hetkel koondunud vigade tuvastamisele ja kõrvaldamisele. Edaspidi plaanitakse avaldatud püsivara kasutada draiveri jõudluse parandamiseks.
- Lisatud on NVMe kontrolleri draiver, mida kasutatakse Apple'i M1 kiibil põhinevates arvutites.
Latiino-Ameerika Tasuta Tarkvara Fond on samal ajal välja töötanud täiesti tasuta kernel'i versiooni 5.19 — Linux-libre 5.19-gnu, mis on puhastatud tootjate poolt piiratud kasutusala ja omavaheliste osade, sealhulgas mittetäielike tootetugide või draiverite kahjustamata. Uues väljaandes on puhastatud draiverid pureLiFi X/XL/XC ja TI AMx3 Wkup-M3 IPC jaoks. Draiverite ja alamsüsteemide, sealhulgas Silicon Labs WFX, AMD amdgpu, Qualcomm WCNSS Peripheral Image Loader, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, pu3-imgu draiverite blobide puhastamise kood on uuendatud. Qualcomm AArch64 seadmepuu failide töötlemine on rakendatud. Lisatud on uus komponentide nimetamise skeem Sound Open Firmwarei jaoks. ATM Ambassador'i draiveri puhastamine, mis on kernel'ist eemaldatud, on lõpetatud. HDCP ja Mellanox Core blobide puhastamise juhtimine on viidud eraldi kconfig'i märkmetesse.
Allikas: opennet.ru
