Linuxi tuuma 7.0 väljaanne

Pärast kahte kuud arendust esitles Linus Torvalds Linuxi tuuma 7.0 väljaannet. Märkimisväärsemate muudatuste seas on: AI-assistentide kasutamise reeglid, Rusti tõlkimine tuuma põhifunktsioonide hulka, swap’i jõudluse parandamine, PREEMPT_LAZY režiimi sisselülitamine vaikimisi, io_uring operatsioonidele filtreerimise tugi, uus Nullfs failisüsteem, fserror infrastruktuur, XFS monitooringuvahendid, remapimise tugi Btrfs-is, NFS 4.1 versiooni vaikimisi sisselülitamine, post-kvantkrüptoalgoritm ML-DSA integreerimine, AccECN aktivoimine võrgu alamsüsteemis ning algne tugi WiFi 8-le.

Versioon 7.0 on antud, kuna 6.x haru on piisavalt väljaandeid kogunud, et muuta versiooninumber esimest arvu (eelmisel ajal ilmus versioon 6.0 pärast 5.19). Numbrimuutus toimub esteetilistel põhjustel ja see on formaalne samm, mis eemaldab ebamugavustunde, mis tuleneb suure arvu väljaannete kogunemisest seerias.

Uude versioon on kantud 15624 parandust 2477 arendajalt, plaastri suurus on 56 MB (muudatused mõjutavad 18053 faili, lisatud on 704060 rida koodi, eemaldatud 278132 rida). Eelmises väljaandes oli 15657 parandust 2237 arendajalt, plaastri suurus oli 52 MB. Umbes 51% kõigist 7.0 väljaandes esitatud muudatustest on seotud seadmedraiveritega, umbes 11% muudatustest on seotud riistvaraarhitektuurile spetsiifilise koodi värskendamisega, 14% on seotud võrgupinu, 5% failisüsteemide ja 3% sisemiste tuuma alamsüsteemidega.

Peamised uuendused tuumas 7.0 (1, 2, 3):

  • Disski alamsüsteem, sisend/väljund ja failisüsteemid
    • On tõhus infra struktuur fserror ja lisatud API, et saada teavet sisendi/väljundi vigade ja metaandmete kahjustuse kohta failidega töötamisel. Pakutud infrastruktuur ühtlustab failisüsteemides vigade edastamise teavet kasutajaruumi kaudu fsnotify mehhanismi.
    • XFS-ile on lisatud uusi võimalusi failisüsteemi seisundi jälgimiseks kasutajaruumist. Pakutud on ioctl-operatsioon XFS_IOC_HEALTH_MONITOR, mis tagastab faili deskripti, mille kaudu saab teavet, mis puudutab metaandmete kahjustuse või sisendi/väljundi vigadega seotud rikkeid, samuti jälgida failisüsteemi seisundite muutusi, nagu lahti monteerimine ja lõpetamine. Täiendavalt on pakutud systemd kaudu hallatav taustaprotsess xfs_healer, mis töötleb failisüsteemi seisundi sündmusi kasutajaruumist ja vajadusel automaatselt käivitab taastamisprotseduurid.
    • Btrfs failisüsteemi on lisatud katsetehnoloogia "ümberkaardimist patoloogia" (remap tree), mis tulevikus võib serveerida vahekihina sisend-väljund operatsioonide teostamisel. Uue funktsionaalsuse põhimõte seisneb selles, et andmete liigutamisel mälust säilitatakse vana ja uus andmeadresse "ümberkaardimist patoloogias" (remap tree), selle asemel et värskendada kõiki seonduvaid struktuure. Seeläbi, kui andmetele juurde päästakse, asendatakse aadressid. Uus lähenemine on esitatud kui usaldusväärsem ja paindlikum ning muudab Btrfs edasise funktsionaalsuse laienemise lihtsamaks.
    • Btrfs-s on rakendatud otse sisendi / väljundi toetust olukordades, kus ploki suurus ületab süsteemi mälulehe suuruse.
    • Uus failisüsteem «Nullfs» on lisatud, mida saab kasutada juur-FS-i kohandamisena. Nullfs on alati tühi, ei sisalda andmeid ja ei toeta muudatusi. Nullfs-i eesmärk on kasutada seda algse failisüsteemina süsteemi käivitamise protsessi lihtsustamiseks — teistele failisüsteemidele monteeritakse see Nullfs-i peale ning kasutatakse süsteemikõnet pivot_root() juur-FS-i vahetamiseks, selle asemel et algset initramfs sisu tühjendada ja kasutada seotud juur-FS-i.
    • Failide modifitseerimisaja teabe uuendamine on rakendatud mitteblokeerivas režiimis. Varem tagastas file_update_time_flags() kutse, kui IOCB_NOWAIT lipp oli seadistatud, vea «-EAGAIN», mis ei võimaldanud mitteblokeerivas režiimis otse kirjutamise operatsioone.
    • Failisüsteemides on eraldi võimaluste ridadesse lisatud teavitavate lukustuste (lease) toetus. Seda mehhanismi ei aktiveerita nüüd vaikimisi, kuna tekkis probleeme failisüsteemidega, mis ei olnud algselt ette nähtud selle rakendamiseks. Näiteks ei toeta seda FS 9p ja cephfs.
    • EROFS (Extendable Read-Only File System) failisüsteemis, mis on mõeldud kasutamiseks ainult lugemisrežiimis olevates partitsioonides, kasutatakse vaikimisi kompressiooniks LZMA algoritmi. Valikuna on saadaval algoritmid DEFLATE ja Zstandard, mis ei ole enam eksperimentaalsed. Rakendatud on kirje jagamine lehekülje vahemälus identsete failide jaoks erinevates EROFS failisüsteemides.
    • Kustutatud on laptop_mode režiim, mis säästis energiat, edasi lükates ja ühendades ketta kirjutamisoperatsioone, et pikendada ketta unerežiimis viibimise aega ja vähendada ärkamiste arvu. Režiim on muutunud ebaoluliseks, kuna kaasaegsetes mobiilsetes seadmetes on kõvakettad asendatud tahkislaudadega.
    • F2FS failisüsteem on üle viidud suuremate mälufoliantide (large folios) kasutamisele.
    • Paragon Software'i arendatud ntfs3 draiveri töö on taaselustatud. Lisatud tugi failitehingutele iomap põhjal, rakendatud valikud llseek SEEK_DATA/SEEK_HOLE, lisatud delalloc režiim blokeerimise edasi lükkamiseks. Sellega samal ajal kiideti veebruaris arendajate tuuma meililistis heaks uue NTFS teostuse — ntfsplus, mis on mõeldud ntfs3 asendamiseks, lisamine tulevikku kuuluvasse tuuma versiooni.
    • Kogumise käigus on vaikimisi sisse lülitatud NFS 4.1 protokolliversioon (CONFIG_NFS_V4_1). NFS-i kaudu ekspordi lukustamine spetsialiseeritud pseudofaile, nagu pidfs ja nsfs, on tagatud. NFSD-s on rakendatud eksperimentaalne võimalus kasutada POSIX ACL-i ning lisatud tugi dünaamiliseks lõimebasseini (thread-pool) muutmiseks koormuse põhjal.
  • Mälu ja süsteemiteenused
    • On kinnitatud ametlikud reeglid AI-assistentide kasutamiseks ja automaatselt genereeritud sisu tuumasse kaasamiseks. Genereeritud koodi edastamisel tuleb seda tähistada AI-assistendi nimetamisega tähises "Assisted-by." AI-assistentidel on keelatud lisada tähist "Signed-off-by" — inimene, kes edastab muudatuse, loetakse selle autoriks, vastutab edastatud muudatuse eest ja tagab selle kvaliteedi. Arendajatele on ette nähtud teha käsitsi läbivaatamine AI kaudu saadud koodile ning kontrollida tulemuse vastavust litsentsinõuetele.
    • Rust'i tugi on viidud katsefaasist põhifunktsioonide hulka. Rust'i tugi ei ole vaikimisi aktiivne ning ei muuda Rust'i kohustuslikuks ehitamise sõltuvuseks tuuma jaoks.
    • Konfigureerimine 'Swap Table' mehhanismi tuuma integreerimine on lõpule viidud, mis võimaldab kiirusetäitmise tõusu. Kiirusetõus saavutatakse tänu vahetuskeemide vahelise juurdepääsu konkurentsi vähenemisele, tõhusamale vahetuskeemi otsimisele ja killustatuse vähenemisele. Swap Table'i põhine tagakülg on kasutusel vahetamise vahemälu salvestamiseks, asendades XArray tagakülje, ning testides redis-benchmark koos BGSAVE'iga, suurendas see töödelda olevate päringute arvu 22%.
    • Clang 22-s sisse viidud Thread Safety Analysis laienduse tugi on lisatud, mis võimaldab kompileerimise ajal tuvastada võimalikke võistlusolukordi ja vigu, mis tulenevad vale lukustuste seadistamisest. Laiendus pakub mitmeid atribuute, nagu GUARDED_BY(…), REQUIRES(…), RELEASE(…) ja ACQUIRE(…), mis võimaldavad märkida lukustustega kaetud funktsioonid ja eristada lukustuste ulatust (määrata konteksti). Kompileerimise käigus kontrollitakse, kas sünkroniseerimise primitiivide, näiteks mutekside, rakendamine on korrektne, tuginedes seondatud konteksti aktiivsuse või passiivsuse hindamisele.
    • Süsteemikutsesse open_tree on lisatud lipp OPEN_TREE_NAMESPACE, et lihtsustada isoleeritud konteinerite seadistamist ja kiirendada konteinerite käivitamist suurte mount punktide arvudega süsteemides. Sarnaselt OPEN_TREE_CLONE'ile kopeerib uus lipp ainult määratud mount puu, kuid tagastab kohalikku failihaldurit asemel failihalduri uues mount nimede ruumis, kus kopeeritud puu monteeritakse reaalsete juur FS koopia peale. Lipp OPEN_TREE_NAMESPACE on vajalik unshare(CLONE_NEWNS) ja pivot_root() operatsioonide eraldi täitmisest loobumiseks, mida kasutatakse konteinerite loomisel.
    • Süsteemikõnes rseq on lisatud ajakvotite (time slice) laiendamise mehhanism, mis võimaldab saada täiendavat protsessorite aega, et katkematult täita kriitilist sektsiooni. Idee on vältida ülesande planeerija katkestamist kriitilises sektsioonis blokeeringu seadistamisega, mis viib kontrolli edastamiseni teistele lõimudele, mis kasutavad ressurssi, millel blokeering on endiselt seadistatud. Ajakvoti laiendamine toimub ilma täiendavate kuludeta, kuid ka ilma rangete garantii, mida pakub täieõiguslik prioriteetide reguleerimine.
    • Arm64, loongarch, powerpc, riscv, s390 ja x86 arhitektuuride puhul on ülesannetesse sekkumise (preemption) režiim planeerijas vaikimisi muudetud PREEMPT_NONE-lt PREEMPT_LAZY-le. Saadaval olevate režiimide arv on vähendatud neljalt kahele — PREEMPT_FULL ja PREEMPT_LAZY (PREEMPT_NONE ja PREEMPT_VOLUNTARY režiimid on jäetud alles ainult arhitektuuridele, mis ei toeta PREEMPT_FULL ja PREEMPT_LAZY-d). PREEMPT_LAZY režiim rakendab täieliku sekkumise (PREEMPT_FULL) mudelit reaalajas ülesannete (RR/FIFO/DEADLINE) puhul, kuid viib tavaliste ülesannete (SCHED_NORMAL) sekkumise edasi tikku piiri. Selline viivitus vähendab sekkumise juhtide blokeerijate juhtumeid, mis võimaldab läheneda jõudlusele, nagu oleks kasutusel vabatahtlik sekkumise mudel (voluntary preemption), st PREEMPT_LAZY säilitab täieliku sekkumise võimalused reaalajas ülesannete puhul, kuid minimeerib tavaliste ülesannete jõudluse langust.

      PREEMPT_LAZY aktiivseks muutmine on põhjustanud tõsise regressiooni, mis vähendab PostgreSQL jõudlust ARM64 süsteemides kahekordselt. Jõudluslanguse Leevendamiseks on PostgreSQL arendajatele soovitatud kasutada PR_RSEQ_SLICE_EXTENSION valikut, et vähendada blokeerija sekkumise tõenäosust.

    • Jätkub muudatuste edasiviimine Rust-for-Linux harust, mis on seotud Rust'i keele kasutamisega teise keelana draiverite ja tuumamoodulite arendamiseks. Tänu varem integreeritud „syn“ teegile, mis lihtsustab keeruliste makrode kirjutamist, õnnestus vähendada tuuma Rust-koodi mahtu olemasolevate protseduuriliste makrode määratlemise lihtsustamise kaudu. On laiendatud kernel, makrode ja pin-init raamatukogude võimalusi.
    • Asünkroonse sisendi/väljundi io_uring süsteemi on lisatud valik mitte-ringikujuliste järjekordade (non-circular submission queue) kasutamiseks, mis on tõhusamalt vahemällu salvestatud olukordades, kus päringu täitmine lõpeb enne süsteemikõne tagastamist.
    • eBPF alamsüsteemis BTF (BPF Tüüpformaat) mehhanismis, mis pakub teavet tüüpide kontrollimiseks BPF pseudokoodis, kasutatakse silmusotsingut tõrkeotsingu teabe leidmiseks, mis on suurendanud BPF-programmide laadimise efektiivsust. eBPF-s on lisatud toe vaikimisi argumentide kasutamine kfunc'i kutsumisel (tuuma funktsioonid, mis on BPF programmides kasutamiseks saadaval), mis on määratud KF_IMPLICIT_ARGS lipuga.
    • Linuxrc-põhise algse RAM-disk'i toetamise kood on eemaldatud, kuna see on juba ammu vananenud. Jäänud initrd rakendused plaanivad eemaldada 2027. aastal. Initrd asemel tuleb kasutada initramfs'i (erinevus seisneb selles, et initrd paigutab alglaadimisringi diskipildile, samas kui initramfs asub failisüsteemis).
    • Zram-plokiseadmest, mida kasutatakse mälus komprimeeritud vahetusruumi salvestamiseks, on muudetud tööloogikat komprimeeritud mälulehtede käsitlemisel, kui andmed viiakse valikuliselt püsivasse salvestusse, kui operatiivmälu on täis. Varasemalt dekomprimeeriti mälulehed enne füüsilisele kandjale kirjutamist, kuid nüüd salvestatakse need komprimeeritud kujul, mis vähendab CPU koormust ja säästab energiat vahepealses töös.
    • Ajastustestimise utiliiti timerlat on lisatud valik „—bpf-action”, mis võimaldab käivitada BPF-protseduure, kui määratud lävi ületatakse.
    • Ftrace'i jälgimissüsteemi on lisatud seade «bitmask-list», mis kuvab bitimaskid loetaval kujul (bitide loendina, mitte kuueteistkümnendlike numbritena). Tracefs'i on lisatud filtrite ja käivitajate auditeerimise võimalused. Lisatud on käsk «perf sched stats», et koguda ja kuvada ülesande planeerija statistikat.
    • Lisatud on LOGO_LINUX_MONO_FILE, LOGO_LINUX_VGA16_FILE ja LOGO_LINUX_CLUT224_FILE koostamisvalikud, et määrata pildi fail logo jaoks, mis kuvatakse kerneli käivitamisel Tux'i vaikimisi logo asemel.
  • Virtualiseerimine ja turvalisus
    • Asünkkilise sisendi ja väljundi süsteemis on io_uring'is rakendatud BPF-programmide kinnitamise võimalus, mis filtreerivad, mida saavad teha konkreetsed SQE (Submit Queue Entry) toimingud (sarnane süsteemig kutsungitega io_uring'is). Lisatud võimalus on sarnane süsteemikutsungite filtritele. Filtreid saab siduda konkreetsete ülesannetega ning need pärandatakse teiste protsesside loomisel pärast fork() väljakutset. Aktiivsete filtrite olemasolu korral võivad lisatud filtrid ainult kehtestada täiendavaid piiranguid, kuid mitte keelata olemasolevaid. Rakendatud võimalus võimaldab blokeerida süsteemikutsungite filtreerimise möödamineku meetodeid sandbox-keskkondades, mis põhinevad sarnaste toimingute täitmisel süsteemikutsungite asemel, mida io_uring pakub.
    • SELinux'is on lisatud võimalus hallata juurdepääsu BPF-tokenitele, mis võimaldavad privileege mitteomavatel protsessidel teostada teatud privileegitud toiminguid BPF-ga, näiteks laadida BPF-programme tuuma ja luua map-struktuure.
    • Lisatud on ML-DSA (CRYSTALS-Dilithium) digitaalallkirjade genereerimise algoritmi tugi, mis põhineb võrkude teoorial ja on kvantarvutite rünnakute suhtes vastupidav. ML-DSA-d saab nüüd kasutada tuuma moodulite autentimiseks.
    • Eemaldatud on SHA-1 algoritmiga digitaalallkirjade genereerimise skeemide tugi tuuma moodulite allkirjastamiseks (allkirjastatud moodulite laadimise tugi on säilinud).
    • Auditikandes NETFILTER_PKT on lisatud väljad 'sport' ja 'dport', et inspekteerida võrguportide numbreid, mitte ainult. IP-aadresse.
    • RISC-V arhitektuuriga süsteemidele on rakendatud Zicfiss ja Zicfilp laienduste tugi, mis pakuvad riistvaralisi võimalusi CFI (Control Flow Integrity) kaitse rakendamiseks, takistades juhiste normaalsete teostamismudelite rikkumist eksploiteerimise kaudu, mis muudab mälus salvestatud funktsioonide näitajaid.
    • Hüperviisorisse KVM Onustatud on võimalus edastada külgsüsteemidesse teavet protsessori ERAPS-i (Enhanced Return Address Predictor Security) toe kohta, mis võimaldab vältida mõningaid CPU oleku lähtestamise operatsioone, kui külgsüsteem naaseb hostile. Lisaks on lisatud tugi külgsüsteemide seadmete sidumisele jõudluse jälgimise (PMU, Performance Monitoring Unit) abil, mis võimaldab parandada profiliseerimise täpsust võrreldes emuleeritud PMU-de kasutamisega.
    • Hyper-V hüpervisiitori draiverisse on lisatud debugfs liidese tugi hüpervisiitori tööstatistika vaatamiseks.
  • Võrgu alamsüsteem
    • Vaikimisi on lubatud AccECN (Accurate Explicit Congestion Notification) laiendus, mis rakendab täiustatud ECN laienduse varianti, võimaldades hostidel ülekoormuse korral IP-pakette märgistada selle asemel, et need ära visata. See annab võimaluse tuvastada suhtluskanalites ummistuse esialgne staadium ilma pakettide kaota. Algne ECN laiendus on piiratud, lubades ainult ühte ülekande signaali ühe TCP edastus-tsükli (RTT, Round-Trip Time, päringu saatmine ja vastuse saamine) jooksul. AccECN eemaldab selle piirangu, võimaldades saajal edastada saatjale rohkem kui ühe ülekoormuse märgise TCP-paketi päises. Ülekande halduskoodi algoritmid saavad saadud teavet kasutada täpsemaks reageerimiseks ülekoormustele, ilma et nad peaksid järsult piirama pakettide saatmise intensiivsust, kui ilmnevad väikesed ülekoormused.
    • Cake'i võrguköidete juhtimise algoritmile on lisatud mitme järjekorra töötlemise võimalus, et jagada koormust mitme CPU tuuma vahel. CAKE algoritmi kasutatakse pakettide vahebufferimise negatiivse mõju vähendamiseks piiripunktide võrguseadmetes, keskendudes maksimaalse läbilaskevõime ja madalaima viivituse saavutamisele isegi aeglaste sidekanalite puhul.
    • Virtuaalmasinatega suhtlemiseks kasutatavates VSOCK-socketites on lisatud toetus võrgu nimespetsiifilisusele (network namespace).
    • Lisatud on algne teostus tulevase WiFi 8 (802.11bn, Ultra High Reliability WiFi) standardi jaoks.
    • Lisatud on optimeerimised, mis on võimaldanud suurendada sisenevate UDP-pakkide töötlemise efektiivsust 12% võrra 100-gigabitises võrgus stressitestimise käigus.
  • Seadmed
    • AMDGPU draiverisse on lisatud uute AMD GPU-de, näiteks SMUIO 15.x, PSP 15.x, IH 6.1.1/7.1, MMHUB 3.4/4.2, GC 11.5.4/12.1, SDMA 6.1.4/7.1/7.11.4 ja JPEG 5.3 kasutatavate IP-plokkide tugi.
    • Nouveau draiveris on paranenud sageduse juhtimine Tegra 186+ süsteemides.
    • i915 draiverisse on lisatud algne tugi Xe3p_LPD ekraani IP-plokile, mida kasutatakse Intel Nova Lake-P protsessorites.
    • Töö Intel Xe arhitektuuril põhineva GPU drm-draiveri (Direct Rendering Manager) kallal on jätkuvalt käimas, mida kasutatakse Intel Arc seeria graafikakaartides ja integreeritud graafikas alates Tiger Lake protsessoritest. Lisatud on Multi Queue režiim. Mesa-s on lisatud komponendid, mis on vajalikud GPU hangumise diagonaosimiseks. Lisatud on MERT mehhanismi tugi GPU mälu ligipääsu haldamiseks.
    • NVIDIA GPU-de jaoks, mis on varustatud GSP-firmavõimetega ja mis on kasutusele võetud alates NVIDIA GeForce RTX 2000 seeriast Turing mikroarhitektuuri baasil, jätkub Nova draiveri komponentide integreerimine. Draiver on kirjutatud Rust keeles. Uues versioonis on ettevalmistused Turing mikroarhitektuuri baasil olevate GPU-de toe rakendamiseks ja on tehtud mitmeid sisemisi muudatusi.
    • Lisatud on toetus SPI (Serial Peripheral Interface) mitikanaliliste liideste jaoks, mis võimaldab andmete edastamist mitme paralleelse vooguga.
    • Lisatud on draiver Apple Silicon kiipidel kasutatavate Type-C ühenduste jaoks, mis ühendavad USB3, DP-AltMode ja Thunderbolt/USB4 liidesed.
    • Lisatud on support Tegra238, Minisforum V3 SE, iBasso DC04U, Intel Nova Lake, Nova Lake S ja Focusrite Forte helisüsteemide jaoks.
    • Lisatud toetused ARM-plaatidele, SoC-le ja seadmetele: Arduino UnoQ, OrangePi 6 Plus, OrangePi CM5, Anbernic RG-DS, Realtek Kent, Qualcomm Kaanapali, Mediatek Ezurio, Facebook Anacapa, Microchip LAN9668, Khadas VIM1S, QNAP TS133, i.MX952, i.MX93, i.MX94, VHIP4 EvalBoard, TQ-Systems MBLS1028A, Agilex5, Radxa CM3J, Glymur,
    • Lisatud tugi nutitelefonidele ja tahvelarvutitele: Fairphone Gen 6 (SoC Qualcomm Milos/Snapdragon 7s Gen 3), Pixel 3/3 xl, Microsoft Surface Pro 11.

Samas lõi Ladina-Ameerika Tasuta Tarkvara Fond täiesti tasuta tuuma versiooni 7.0 — Linux-libre 7.0-gnu, mis on puhastatud tootjate poolt määratletud mittetäielikult avatud komponentide või koodilõikude, sealhulgas püsivara ja draiverite elementide jälgedest. Versioonis 7.0 toimus iwlwifi draiveribloomide puhastamine. Uuendatud on puhastuskoode amdgpu, adreno, TI PRUeth, air_en8811h, ath12k, TI VPE, rtw8852b, rt1320, rt5575 SPI, tas2783, Intel catpt draiverites. Toimus blob-nimede puhastamine ARM-kiipide dts-failides (seadmestik).

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster