Pärast kahte kuu arendust tutvustas Linus Torvalds Linuxi tuuma versiooni 5.19. Kõige tähelepanuväärsemate muudatuste seas on: LoongArch protsessori arhitektuuri tugi, BIG TCP patchide integreerimine, fscache'i nõudmisel töörežiim, a.out formaadi toe koodi eemaldamine, ZSTD rakendamise võimalus püsivara tihendamiseks, mälu eemaldamise haldamise liides kasutajaruumist, pseudojuhuslike numbrite generaatori töökindluse ja jõudluse tõstmine, 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 mainis Linus, et järgmisele Linuxi tuuma väljaandele antakse tõenäoliselt number 6.0, kuna 5.x harus on piisavalt palju väljaandeid, et muuta versiooninumbri esimest numbrit. Numbrimuudatus toimub esteetilistel põhjustel ja on formaalne samm, mis leevendab ebamugavust, mis tuleneb suure arvu väljalaskete kogunemisest seerias.
Linus mainis ka, et kasutas väljaande koostamiseks Apple'i ARM64 (Apple Silicon) arhitektuuril põhinevat sülearvutit Linuxi keskkonnas, mis põhineb Asahi Linuxi jaotusel. See ei ole Linuse peamine tööjaam, kuid ta kasutas seda platvormi, et testida selle sobivust tuumaga töötamiseks ja veenduda, et suudab tuuma väljaandeid koostada reisil, olles käeulatuses kerge sülearvuti. Enne seda, palju aastaid tagasi, oli Linusel kogemus Apple'i riistvara kasutamisega arendamiseks — kunagi kasutas ta ppc970 protsessoril põhinevat arvutit ja Macbook Air sülearvutit.
Uude versioonisse on vastu võetud 16401 parandust 2190 arendajalt (eelmisel väljaandel oli 16206 parandust 2127 arendajalt), patši suurus on 90 MB (muudatused puudutasid 13847 faili, lisati 1149456 koodirida, kustutati 349177 rida). Ligikaudu 39% kõigist, mis 5.19 muudatustes esitatud, on seotud seadme draiverite, umbes 21% muudatustest on seotud riistvaraarhitektuuride spetsiifiliste koodide värskendamisega, 11% on seotud võrgu kihiga, 4% — failisüsteemidega ja 3% tuuma sisemiste alamsüsteemidega.
Peamised uuendused tuumas 5.19:
- Diskisüsteem, sisend/väljund ja failisüsteemid
- EROFS (Enhanced Read-Only File System) failisüsteem, mis on mõeldud kasutamiseks ainult lugemisrežiimis olevates partitsioonides, on üle viidud fscache alamsüsteemi kasutamisele, et andmeid vahemällu salvestada. See muudatus on võimaldanud oluliselt tõsta süsteemide jõudlust, kus EROFS-põhisest pildist käivitatakse suur hulk konteinerite.
- Fscache alamsüsteemi on lisatud nõudmisel lugemise režiim, et optimeerida EROFS-i. Uus režiim lubab korraldada failisüsteemi piltide lugemise vahemällu salvestamist, mis asuvad kohalikus süsteemis. Erinevalt algselt saadaval olnud režiimist, mis keskendus andmete vahemällu salvestamisele kohaliku failisüsteemi kaudu, delegeerib nõudmisel režiim andmete hankimise ja nende vahemällu kirjutamise funktsioonid eraldi taustaprotsessile, mis töötab kasutajaruumis.
- XFS-is on tagatud miljardite laiendatud atribuutide salvestamise võimalus i-node-s. Ühe faili ekstentside maksimaalne arv on tõstetud 4 miljardilt 247-le. Tehtud on režiim, mis võimaldab korraga mitme laiendatud faili atribuudi atomaarset uuendamist.
- Btrfs failisüsteemis on optimeeritud lukustuste töötlemist, mis on võimaldanud saavutada umbes 7% jõudluse kasvu otse nüüd-reežis kirjutamise korral. NOCOW (copy-on-write'ita) režiimis on operatsioonide jõudlus tõusnud ligikaudu 3%. Send-komandi käivitamisel on vähendatud lehe vahemälu koormust. Aluslehe minimaalne suurus on vähenenud 64K-lt 4K-le (saab kasutada lehte vähendavaid alapindade suurusi, mis on väiksemad kui ytuumalehe suurus). Üleminek on toimunud baasseente (radix tree) kasutamiselt algoritmile XArrays.
- NFS-serverisse on lisatud lukustuse oleku pikendamise režiim, mille klient on välja tõmmanud ja mis ei vasta enam päringutele. Uus režiim lubab lukustuse eemaldamist viivitada kuni ühe päeva, kui teine klient ei taotle konkurentsivõimelist lukustust. Tavalistes tingimustes eemaldatakse lukustus 90 sekundi pärast pärast seda, kui klient on lõpetanud vastamise.
- Faneventide jälgimise alamsüsteemis on fanotifys rakendatud lipp FAN_MARK_EVICTABLE, millega saab välja lülitada siht-i-node'i kinnitamise vahemällu, näiteks harudeta osade vahemällu salvestamise ignoreerimiseks.
- FAT32 failisüsteemi draiverisse on lisatud tugi failide loomise aja teabe saamiseks süsteemikutsest statx, pakkudes tõhusamat ja funktsionaalsemat varianti stat(), mis tagastab failide kohta täiendavat teavet.
- exFAT draiverisse on tehtud olulisi optimeerimisi, mis aitavad samal ajal puhastada sektorite rühma "dirsync" režiimis, selle asemel et teha järjestikuseid sektorite puhastusi. Optimeerimise tulemusena on SD-kaardile paljude kataloogide loomise efektiivsus tõusnud enam kui 73-85%, olenevalt klastrite suurusest.
- Tuuma on lisatud esimene parandav uuendus ntfs3 draiverile. Alates ntfs3 lisamisest tuuma 5.15 oktoobris eelmisel aastal, ei ole draiverit uuendatud ja arendajatega on kaotus suhtlus, kuid nüüd on arendajad uuesti muutuste avaldamisega alustanud. Pakutud plaastrites on kõrvaldatud mälulekke ning krahhide tekitavad vead, lahendatud on xfstests’i täitmise probleemid, puhastatud on kasutamata kood ja parandatud trükivead.
- OverlayFS-ile on lisatud võimalus kaardistada kasutajate identifikaatorid montitud failisüsteemides, mida kasutatakse selleks, et seostada teatud kasutaja faile võõrasse sektsioonis mõne teise kasutajaga praeguses süsteemis.
- Mälu ja süsteemiteenused
- Lisatud on algtugi LoongArch käsuarsenali arhitektuurile, mida kasutatakse Loongson 3 5000 protsessorites ja mis realizeerib uut RISC ISA, mis sarnaneb MIPS-i ja RISC-V-ga. LoongArch arhitektuur on saadaval kolmes variandis: kärbitud 32-bitine (LA32R), tavaline 32-bitine (LA32S) ja 64-bitine (LA64).
- Kood a.out teostatavate failide formaadi toeks on eemaldatud, kuna see on tuumale muutunud aegunuks alates 5.1 versioonist. a.out formaati ei ole pikka aega kasutatud Linuxi süsteemides ning a.out failide generaatorit ei toetata kaasaegsetes tööriistades vaikeseadistustes Linuxi jaoks. a.out failide laadijat saab täielikult rakendada kasutajaruumi.
- Toetamine x86 arhitektuuriga seotud käivitusvalikute jaoks, nagu nosep, nosmap, nosmep, noexec ja noclflush, on lõpetatud.
- Toetamine aegunud CPU arhitektuuri h8300 (Renesas H8/300) on lõpetatud, mis on juba ammu olnud hoolduseta.
- Suurendatud on võimalusi, mis on seotud jagatud lukustuste («split lock») tuvastamisega, mis tekivad, kui omandatakse ebaühtlastesse andmetesse juurdepääs, kuna atomaarsete käskude täitmisel andmed ületavad kaht CPU vahemälu rida. Sellised lukustused põhjustavad märkimisväärset jõudluse langust. Kui varem andis südamik vaikimisi hoiatuse lukustust põhjustava protsessi kohta, siis nüüd aeglustatakse probleemsuhtega protsessi täiendavalt, et säilitada ülejäänud süsteemi jõudlus.
- Lisatud tugi Intel'i protsessorites ellu viidud IFS (In-Field Scan) mehhanismile, mis võimaldab käivitada madala taseme diagnostikateste CPU-le, mis suudavad tuvastada probleeme, mida ei tuvastata tavaliste ECC (Error Correction Code) või paaritusbitide põhiste vahendite abil. Tehtavad testid on kujundatud laaditava püsivara vormis, mis on sarnane mikrokoode värskendustega. Testimise tulemused on kättesaadavad läbi sysfs.
- Lisatud on võimalus lõimida bootconfig faili kernelisse, mis võimaldab lisaks käsurea valikutele määrata kernel’i töö parameetreid konfiguratsioonifaili kaudu. Lõimimine toimub koos koostamisvaliku ‘CONFIG_BOOT_CONFIG_EMBED_FILE=»/PATH/TO/BOOTCONFIG/FILE»‘ abil. Varem määrati bootconfig initrd pildiga. Kernelisse lõimimine võimaldab bootconfig'i kasutada konfiguratsioonides ilma initrd-ta.
- Tugiteenustena on rakendatud võimalus laadida püsivara, mis on tihendatud Zstandard algoritmi abil. Sysfs-s on lisatud juhtfailide komplekt /sys/class/firmware/*, mis võimaldab algatada püsivara laadimist kasutajaruumi.
- Asünkroosse sisendi/väljundi io_uring liideses on pakutud uus lipp IORING_RECVSEND_POLL_FIRST, mille seadistamisel saadetakse võrguoperatsioon esmalt töötlemiseks pollingu abil, mis võib säästa ressursse olukordades, kus operatsiooni töötlemine viivitusega on lubatud. io_uring-is on samuti lisatud socket() süsteemikutse tugi, pakutud uusi lippe failide descriptorite haldamise lihtsustamiseks, lisatud «multi-shot» režiim accept() kõnes mitme ühenduse samaaegseks vastuvõtmiseks, ja lisatud operatsioonid NVMe käsukäikude otse seadmesse suunamiseks.
- Xtensa arhitektuurile on lisatud KCSAN (Kernel Concurrency Sanitizer) silumisvahendi tugi, mis on mõeldud tuvastama tõrkeid tuumas. Samuti on lisatud toetust unerežiimile ja kaasprotsessoritele.
- m68k (Motorola 68000) arhitektuurile on rakendatud virtuiaalmasin (platvormi simulaator), mis põhineb Android Goldfish emulatoril.
- AArch64 arhitektuurile on rakendatud Armv9-A SME (Scalable Matrix Extension) laienduste tugi.
- eBPF alamsüsteemis on lubatud tüübistatud näidikute salvestamine kaardistruktuurides ning lisatud on dünaamiliste näidikute tugi.
- Kasutusele on võetud uus ennetav mälu väljaastumise mehhanism, mis toetab haldamist kasutaja ruumist faili memory.reclaim kaudu. Numbrite kirjutamine määratud faili toob kaasa vastava arvu baitide üritamise väljatõukamist cgroupiga seotud komplektist.
- Mälu kasutuse jälgimise täpsust on parendatud andmete tihendamise ajal vahetusfailis zswap mehhanismi abil.
- RISC-V arhitektuurile on rakendatud 32-bitiste käivitatavate failide käitamise tugi 64-bitistes süsteemides, lisatud on režiim, mis seondab piiravat omadust mälu lehtedega (nt. vahemälu keelamiseks) ning rakendatud on funktsioon kexec_file_load().
- 32-bitiste Armv4T ja Armv5 süsteemide toe rakendus on kohandatud ülikasutatavate mitme platvormi kernelite kogumite jaoks, mis sobivad erinevatele ARM-süsteemidele.
- Virtualiseerimine ja turvalisus
- EFI alamsüsteemis on võimalik konfidentsiaalse teabe edastamine külalisüsteemidele ilma selle avalikustamiseta host-süsteemile. Andmed esitatakse securityfs kaudu kataloogis security/coco.
- Lockdown kaitse režiimis, mis piirab root-kasutaja juurdepääsu tuumale ja blokeerib UEFI Secure Boot'i ümbersõidu teed, on kõrvaldatud lõhe, mis võimaldas kaitset ületada tuuma silumisvahendi manipulatsioonide kaudu.
- Tugipunktid, mille eesmärk on parandada pseudojuhuslike numbrite generaatori usaldusväärsust ja jõudlust, on sisse lülitatud.
- Clang 15 abil koos ehitamisel rakendatakse tuuma struktuuride randomiseerimise mehhanismi toetust.
- Landlock mehhanismi, mis võimaldab piirata rühma protsesside interaktsiooni väliskeskkonnaga, on antud reeglite tugi, mis võimaldab kontrollida failide ümbernimetamise toimingute täitmist.
- IMA (Integrity Measurement Architecture) alamsüsteem, mis on mõeldud operatsioonisüsteemi komponentide terviklikkuse kontrollimiseks digitaalsete allkirjade ja ridade abil, on muudetud kasutama fs-verity moodulit failide tõendamiseks.
- Muutunud on tegevuste loogika, kui on välja lülitatud piiranguta juurdepääs eBPF alamsüsteemile — varem lülitati välja kõik käsud, mis olid seotud bpf() süsteemikutsumisega, kuid alates versioonist 5.19 on jäänud juurdepääs käskudele, mis ei vii objektide loomise juurde. Sellise käitumise korral vajab BPF-programmi laadimine privileege, kuid seejärel saavad privilgeeritud protsessid selle programmiga suhelda.
- AMD SEV-SNP (Secure Nested Paging) laiendi tugi on lisatud, et tagada ohutu töö sissetoomata lehe tabelitega ja kaitsta rünnakute eest nagu „undeSErVed“ ja „SEVerity“ AMD EPYC protsessoritega, mis võivad ületada AMD SEV (Secure Encrypted Virtualization) kaitsemehhanismi.
- Intel TDX (Trusted Domain Extensions) mehhanismi tugi on lisatud, mis võimaldab blokeerida katsetad kolmandate isikute ligipääsu krüpteeritud mälule. virtuaalmasinate.
- Virtio-blk draiverisse, mida kasutatakse plokkseadmete emuleerimiseks, on lisatud toetuse I/O pollimise kasutamiseks, mis tõestatud testide kohaselt vähendas latentsust umbes 10%.
- Võrgusüsteem
- Tâhtüre on lisatud BIG TCP patšide seeria, mis võimaldab suurendada TCP-paketi maksimaalset suurust kuni 4GB, et optimeerida kõrge kiire punktidevahelist tööd. Selline paketi suurendamine 16-bitise väljakujunduse suuruse puhul saavutatakse „jumbo“ paketide rakendamise kaudu, mille IP-pealkirjas on suurus määratud 0-ks, samas kui tegelik suurus esitatakse eraldi 32-bitise väljakujunduse valdkonnas eraldi lisatud pealkirjas. Tulemustes tõi paketi suuruse määramine 185 KB kaasa läbilaskevõime suurenemise 50% ja märkimisväärse latentsuse vähendamise andmeedastuses.
- Tööd pakettide viskamise põhjuste jälgimise vahendite integreerimiseks võrgu ärakonnas on jätkatud (reason koodid). Põhjuse kood edastatakse mälu vabastamise ajal, mis on seotud paketiga, ja võimaldab arvesse võtta selliseid olukordi nagu pakettide viskamine valede väljade täitmise tõttu, spufimise tuvastamine rp_filteri poolt, vale kontrollsummade, mälupuudus, IPSec XFRM reeglite aktiveerumine, vale TCP järjestuse number jne.
- Lisatud on tugi MPTCP (MultiPath TCP) ühenduste tagasipöördumise jaoks normaalse TCP siiski olukordades, kus MPTCP teatud võimalusi ei ole võimalik kasutada. MPTCP on TCP protokolli laiendus, et korraldada TCP-ühenduse tööd pakettide edastamisega samaaegselt läbi mitmete marsruutide erinevate võrguliideste kaudu, mis on seotud erinevate IP-aadressidega. Lisatud on API MPTCP voogude juhtimiseks kasutajaruumi.
- Varustus
- Lisatud on üle 420 000 rida koodi, mis on seotud amdgpu draiveriga, millest umbes 400 000 rida on automaatselt genereeritud päised, mis sisaldavad andmeid ASIC registreid AMD GPU draiveris, ning veel 22,5 tuhat rida tagavad AMD SoC21 toe esialgse rakendamise. AMD GPU draiveri kogumaht on ületanud 4 miljonit rida koodi. Lisaks SoC21-le sisaldab AMD draiver toed SMU 13.x (System Management Unit), on uuendatud USB-C ja GPUVM tuge ning valmistatud ette järgnevate RDNA3 (RX 7000) ja CDNA (AMD Instinct) platvormide toe jaoks.
- Intel i915 draiveris on laienenud võimalused, mis on seotud energiatarbimise juhtimisega. 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 teave Arctic Sound-M graafikakaartide kohta, rakendatud on ABI arvutusmootorite jaoks, DG2 kaartide jaoks on lisatud Tile4 formaadi tugi ning Haswell mikroarhitektuuril põhinevates süsteemides on toeks DisplayPort HDR.
- Nouveau draiveris on ülemineku protsess drm_gem_plane_helper_prepare_fb kasutamisele, mõnede struktuuride ja muutuja jaoks on rakendatud staatiline mälu eraldamine. Mis puudutab Nouveau avatud allikaid, mille on avaldanud NVIDIA tuuma moodulites, siis praegune töö seisneb vigade tuvastamises ja kõrvaldamises. Edaspidi on plaanis avaldatud rakendusi kasutada draiveri jõudluse tõstmiseks.
- Lisatud on draiver NVMe kontrolleri jaoks, mida kasutatakse Apple M1 kiipidega arvutites.
Samas on Lõuna-Ameerika Vaba Tarkvara Fond loonud täielikult avatud 5.19 tuuma variandi — Linux-libre 5.19-gnu, mis on puhastatud tootja poolt piiratud kasutusala võimaldavaid sulgureid ja draivereid sisaldavatest mitteavaldavatest komponentidest või koodilõikudest. Uues väljaandes on puhastatud draivereid pureLiFi X/XL/XC ja TI AMx3 Wkup-M3 IPC jaoks. Uuendatud on puhastuskoode blobide jaoks draiverites ja alam-süsteemides nagu Silicon Labs WFX, AMD amdgpu, Qualcomm WCNSS Peripheral Image Loader, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, pu3-imgu draiverid. Tehtud on Qualcomm AArch64 devicetree-failide töötlemine. Lisatud on uus komponentide nimetamissema toetamine Sound Open Firmware. ATM Ambassador draiveri puhastamine, mis on tuumast eemaldatud, on lõpetatud. HDCP ja Mellanox Core blobide puhastamise haldamine on viidud eraldi kconfig siltidesse.
Allikas: opennet.ru
