Pärast kahte kuud arendusteline Linus Torvalds esitles tugevdamise südamik Linux 7.0. Tähtsamat muudatused hõlmavad: AI-assistentide kasutamise reegleid, Rusti tõlkimist peamisteks tuumafunktsioonideks, vahetuse jõudluse tõstmist, PREEMPT_LAZY režiimi vaikimisi sisselülitamist, io_uring operatsioonide jaoks filtrite toetust, uus Nullfs failisüsteem, fserror infrastruktuur, XFS jälgimisvahendid, Btrfs-s remapimise toetus, NFS 4.1 vaikimisi versiooni sisselülitamine, post-kvantumkrüptoalgoritmi ML-DSA integreerimine, AccECN aktiveerimine võrgu alamsüsteemis, algeline WiFi 8 tugi.
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.
Uue versiooni on tehtud 15624 parandust 2477 arendajalt, patši suurus on 56 MB (muudatused puudutasid 18053 faili, lisatud on 704060 koodirida, eemaldatud 278132 rida). Eelmises väljaandes oli 15657 parandust 2237 arendajalt, patši suurus oli 52 MB. Ligikaudu 51% kõikidest 7.0 muudatustest on seotud seadme draiveritega, umbes 11% muudatustest puudutab riistvara arhitektuuriga spetsiifilise koodi värskendamist, 14% on seotud võrgu kihtidega, 5% failisüsteemidega ja 3% tuuma sisekeskkondadega.
Peamised uuendused tuumas 7.0 (kernelnewbies.org, lwn.net, OpenNET):
- Disski alamsüsteem, sisend/väljund ja failisüsteemid
- On rakendatud fserror infrastruktuur ja lisatud API, et saada teavet sisendi/väljundi vigade ja metaandmete kahjustuste kohta failidega töötamisel. Ettepaneku infrastruktuur ühtlustab failisüsteemides vigade teabe edastamise kasutajaruumi läbi fsnotify mehhanismi.
- XFS lisatud uue võimalused failisüsteemi oleku jälgimiseks kasutajaruumist. Eelnevalt pakuti välja ioctl-operatsioon XFS_IOC_HEALTH_MONITOR, mis tagastab failide descriptor'i, mille kaudu saab hankida teavet rikke kohta, mis on seotud metaandmete kahjustamisega või sisendi/väljundi vigade esinemisega, samuti jälgida failisüsteemi olekute muutusi, nagu lahtiühendamine ja lõpetamine. Lisaks on pakutud systemd kaudu hallatav taustaprotsess xfs_healer, mis töötleb failisüsteemi olekuteateid kasutajaruumist ja vajadusel käivitab automaatselt taastamisprotseduurid.
- Failisüsteemi Btrfs on lisatud katsetamine «ümberseadmise puu» (ümberseadmise puu), mis võib tulevikus toimida sisendi- ja väljundioperatsioonide vahelaana. Uue funktsionaalsuse mõte on see, et andmete liigutamisel salvestusmedias, selle asemel et uuendada kõiki andmetega seotud struktuure, hoitakse lisastruktuuris „remap tree“ nii vanad kui ka uued andmeaadressid, mille järel andmete kutsumise ajal asendatakse aadressid. Uus lähenemine esitleb end kui usaldusväärsem ja paindlikum ning lihtsustab edasist Btrfs-i funktsionaalsuse laiendamist.
- Btrfs-s on rakendatud toetamine otse sisendi/väljundi jaoks olukordades, kus ploki suurus ületab süsteemi mälulehe suuruse.
- Koosseis lisatud uus failisüsteem Nullfs, mida saab kasutada algse failisüsteemi peidikuna. Failisüsteem Nullfs on alati tühi, ei sisalda andmeid ja ei toeta muudatusi. Nullfs-i eesmärk on kasutada algse failisüsteemina, et lihtsustada süsteemi käivitamise protsessi — Nullfs-i peale monteeritakse seejärel teised failisüsteemid ja kasutatakse süsteemikutsumist pivot_root() juurfailisüsteemi vahetamiseks, selle asemel et puhastada initramfs-i sisu ja kasutada sellega seotud juurfailisüsteemi.
- Tehtud failide muutmise aja uuendamine mittetõkestavas režiimis. Varasemalt tagastas file_update_time_flags() kutsumine IOCB_NOWAIT lipuga vea -EAGAIN, mis ei võimaldanud kasutada otse kirjutamise operatsioone mittetõkestavas režiimis.
- failisüsteemides eraldi lubatavate valikute hulgas tõlgitud teavitavate lukustuste tugi (lease). Vaikimisi ei aktiveerita sellist mehhanismi nüüd süsteemide probleemide tõttu, mis algselt ei olnud selle rakendamiseks ette nähtud. Näiteks ei toeta 9p ja cephfs failisüsteemid seda.
- EROFS (Extendable Read-Only File System) failisüsteemis, mis on mõeldud kasutamiseks ainult lugemisega jaotistes, kasutatakse vaikekokkuv compressioonina LZMA algoritmi. Valikuliselt on saadaval DEFLATE ja Zstandard algoritmid, mis ei ole enam eksperimendina tähistatud. Rakendatud on lehevahemiku (page-cache) kooskasutamine identsete failide jaoks eraldi EROFS failisüsteemides.
- Eemaldatud laptop_mode režiim, mis säästab energiat, edastades ja ühendades kõvaketta salvestusoperatsioone, et pikendada ketta unerežiimi ja vähendada äratuste arvu. Režiim on muutunud mittetäielikuks, kuna kaasaegsed mobiilseadmed on kõvakettad asendanud tahkete mäluseadmetega.
- F2FS failisüsteem on üle viidud suurte mälulehtede foliantide (suurte lehtede) kasutamisele.
- Taaskäivitati ntfs3 draiveri arendamine, mida arendab Paragon Software. Lisatud on toetust failide töötlemiseks iomap baasil, rakendatud võimalused llseek SEEK_DATA/SEEK_HOLE, lisatud on delalloc režiim plokkide viivitamiseks. Vahepeal, arendajate tuuma postitusloendis, anti veebruaris heakskiit uue NTFS rakenduse — ntfsplus, mis on välja töötatud ntfs3 asendamiseks, lisamine ühe tulevase tuuma versiooni koosseisu.
- Vaikimisi kompileerimisel lisatud NFS protokolli versioon 4.1 (CONFIG_NFS_V4_1). Tagatud NFS kaudu ekspordi lukustamine spetsialiseeritud pseudo-FS-de, nagu pidfs ja nsfs. NFSD-s on rakendatud on katsetamisvõimalus POSIX ACL kasutamiseks ja on lisatud toetatud on dünaamiline lõimede hulga (thread-pool) muutmine koormuse järgi.
- Mälu ja süsteemiteenused
-
Tunnustatud ametlikud reeglid AI-assistentide kasutamiseks ja lisamiseks tuumasse automaatsete sisu genereerimise. Generaatori koodi edastamisel tuleb märgistada see märke abil, mis näitab kasutatud AI-assistenti sildina Assisted-by. AI-assistentidel on keelatud lisada silti Signed-off-by – patch'i edastanud inimene loetakse selle autoriks, vastutab üleantud muudatuse eest ja garanteerib selle kvaliteedi. Arendajatele on antud ülesanne teha käsitsi ülevaate AI kaudu saadud koodist ja kontrollida tulemuse vastavust litsentsinõuetele.
-
-
Lõpetatud integratsioon tuuma mehhanismi "Swap Table" on lõpetatud, võimaldades tõsta vahetuse jõudlust. Kiirus saavutatakse vähendades vahetuse vahemälu konkurentsi, efektiivsema vahemälu otsimise ja killustatuse vähenemise kaudu. Swap Table'i backend on aktiveeritud vahetuse vahemälu salvestamiseks, asendades XArray backend'i ning võimaldas redis-benchmark testis BGSAVE korral suurendada töödeldud päringute arvu 22%.
-
Lisatud Clang 22-s ilmunud laienduse toetus Käthread'i turvalisuse analüüs, mis võimaldab kompileerimise ajal tuvastada võimalikke võidusõidutingimusi ja vigu, mis on põhjustatud valedest lukustustest. Laiendus pakub mitmeid atribuute, nagu GUARDED_BY(…), REQUIRES(…), RELEASE(…) ja ACQUIRE(…), mis võimaldavad märgistada lukustustega kaetud funktsioone ja eristada lukustuste ulatusi (määrata konteksti). Kompileerimise ajal kontrollitakse sünkroonimismehhanismide, nagu mutexid, korrektset kasutamist, põhinedes seotud konteksti aktiivsuse või mitteaktiivsuse hindamisele.
-
Süsteemi kõne open_tree lisatud OPEN_TREE_NAMESPACE lipp võimaldab isolatsioonikonteinerite seadistamist lihtsustada ja konteinerite käivitamist kiirendada süsteemides, kus on palju montaažipunkte. Sarnaselt OPEN_TREE_CLONE'ile kopeerib uus lipp ainult määratud montaažipuud (mount tree), kuid tagastab kohalikule failideskriptorile tagasi uue montaažipunktide nimede ruumis failideskriptor, kus kopeeritud puu paigutatakse reaalse juurte failisüsteemi koopia peale. OPEN_TREE_NAMESPACE lipp on nõutav, et eristada unshare(CLONE_NEWNS) ja pivot_root() operaatsioonide eraldi täitmist, mida kasutatakse konteinerite loomisel.
-
Süsteemi väljundisse rseq lisatud ajastuskvantide (time slice) laiendamise mehhanism, mis võimaldab saada lisaprotsessorite aega kriitiliste sektsioonide katkematu täitmise jaoks. Idee seisneb selles, et vältida kriitilise sektsiooni katkestamist ülesande planeerija poolt, millel on kehtestatud lukustus, mis viib kontrolli edastamiseni teistele lõimedele, mis kasutavad ressurssi, millel lukustus jääb kehtima. Aja kvandi laiendamine toimub ilma täiendavate kuludeta, aga ka ilma rangete garantii, mida pakub täielik prioriteetide reguleerimine.
-
arm64, loongarch, powerpc, riscv, s390 ja x86 arhitektuuridele on ülesande eemaldamise režiim (preemption) planeerijas vaikimisi muudetud PREEMPT_NONE-lt PREEMPT_LAZY-ks. Võimalike režiimide arv vähenenud kella neljast kuni kahteni – PREEMPT_FULL ja PREEMPT_LAZY (PREEMPT_NONE ja PREEMPT_VOLUNTARY režiimid on jäänud alles arhitektuuridele, mis ei toeta PREEMPT_FULL ja PREEMPT_LAZY). Režiim PREEMPT_LAZY rakendab täieliku väljaulatuvuse mudelit (PREEMPT_FULL) reaalajas ülesannete jaoks (RR/FIFO/DEADLINE), kuid edasilükkab tavaliste ülesannete (SCHED_NORMAL) väljaulatuvust tikandi piirini. Tehtud viivitus vähendab lukustuse hoidjate väljaulatuvuse juhtumeid, mis võimaldab jõudlust lähemale viia vabatahtlikku väljaulatuvuse mudelit kasutavatele konfiguratsioonidele (voluntary preemption), st PREEMPT_LAZY säilitab täieliku väljaulatuvuse võimalused reaalajas ülesannete osas, kuid minimeerib jõudluse languse tavaliste ülesannete puhul.
PREEMPT_LAZY aktiveerimine toimis ka tõsise regressiooniga, vähendades PostgreSQL jõudlust ARM64 süsteemides kaks korda. Jõudluse languse kõrvaldamiseks peavad PostgreSQL arendajad ettepanek rakendama valikut PR_RSEQ_SLICE_EXTENSION, et vähendada lukustuse hoidja väljaulatumise tõenäosust.
-
Jätkub muudatuste üleviimine harust Rust-for-Linux, misetusega Rust'i keele kasutamine teise keele kui draiverite ja tuumamoodulite arendamiseks (Rust'i tugi ei ole vaikimisi aktiivne ja ei too kaasa Rust'i lisamist kohustuslike ehituse sõltuvuste hulka tuumas). Tänu eelnevalt integreeritud teegile «syn (crates.io)», mis lihtsustab keeruliste makrode kirjutamist, on õnnestunud vähendada Rust'i koodi suurust tuumas, lihtsustades olemasolevate protseduuriliste makrode määratlemist. Tuuma, makrode ja pin-init'i teekide võimalusi on laiendatud.
-
Asünkroonse sisendi/väljundi süsteemis io_uring on lisatud valik mitte-ringikujuliste järjekordade (non-circular submission queue) jaoks, mis on tõhusamalt vahemällu salvestatavad olukordades, kus päringu täitmine lõpeb enne süsteemi kutsumise tagastamist.
-
eBPF alam-süsteemis BTF mehhanismis (BPF Type Format), mis pakub teavet tüüpide kontrollimiseks BPF pseudokoodis, et leida silumisinfo kasutatakse binaarne otsing, mis parandas BPF-programmide laadimise tõhusust. eBPF-s on lisatud toetatakse vaikimisi argumente ühes kutses kfunc (tuumafunktsioonid, mis on BPF-programmides kasutamiseks saadaval), mis on määratletud KF_IMPLICIT_ARGS lipuga.
-
Eemaldatud kood algse RAM-disk'i (initrd) toetamiseks, mis põhineb linuxrc, on juba pikka aega aegunud. Ülejäänud initrd teostused plaanitakse eemaldada 2027. aastaks. Initrd asemel tuleks kasutada initramfs-i (erinevus seisneb selles, et initrd paigutab algse laadimise keskkonna ketta pildile, samas kui initramfs - failisüsteemi).
-
Plokiseade zram, mida kasutatakse mälus vahetusfaili kompaktseks salvestamiseks, muudetud mälulehtede töötlemise loogika, kui andmeid liigutatakse valikuliselt alalisesse salvestisse juhul, kui saadaval mälu on täis. Varem dekodeeriti mälulehed enne salvestamist füüsilisele salvestusse, nüüd salvestatakse need nii, nagu nad on, kompressitud kujul, mis vähendab protsessori koormust ja säästab energiat töötades akutoitel.
-
Tööriista timerlat, mis on mõeldud ülesannete ajastamise viivituste mõõtmiseks, on lisatud valik —bpf-action BPF-programmide käivitamiseks, kui määratud künnis on ületatud.
-
Ftrace'i jälgimisse on lisatud seade bitmask-list, et esitada bitimaskid loetaval kujul (bitide nimekirjana, mitte kuhexakoodina). Tracefs-ile on lisatud auditeerimise võimalused filterite ja triggerite. Lisatud perf sched stats käsk, et koguda ja kuvada statistikat ülesannete ajastamise tegevuse kohta.
-
Lisatud LOGO_LINUX_MONO_FILE, LOGO_LINUX_VGA16_FILE ja LOGO_LINUX_CLUT224_FILE kogumisvalikud, et määrata logo pildifail, mida näidatakse tuumalaadimise ajal Tuxi vaikimisi logo asemel.
-
- Virtualiseerimine ja turvalisus
- asünkroonse sisendi/väljundi süsteem io_uring on rakendatud võimalus kinnitada BPF-programme filtritega, mis kontrollivad, mida võivad konkreetsed SQE (Submission Queue Entry) toimingud teha (sarnased süsteemi kutsumistele io_uringis). Lisatud võimalus on sarnane süsteemsete kutsumiste filtritega. Filtrid saab siduda konkreetsete ülesannetega ja need pärandatakse teiste protsesside loomisel pärast fork() kutsumist. Kui aktiivsed filtrid on olemas, võivad lisatud filtrid ainult paigaldada täiendavaid piiranguid, kuid mitte keelduda olemasolevatest. Teostatud võimalus võimaldab blokeerida meetodeid süsteemi kutsumiste filtreerimise ümbermängimiseks sandbox-keskkondades, mis põhinevad süsteemi kutsumise asemel sarnaste toimingute täitmisel, mida pakuvad io_uring.
- SELinuxis on lisatud võimalus haldada juurdepääsu BPF-tokenitele, mis võimaldavad mitteprivileegitud protsesside võimalus teostada teatud privileege BPF-is, näiteks laadida BPF-programme tuuma ja luua map-struktuure.
- Lisatud digitaalse allkirjastamise algoritmi tugi ML-DSA (CRYSTALS-Dilithium), mis põhineb võrgureeglite teoorial ja on kvantarvutitele vastupidav. Soodustatud ML-DSA kasutamise võimalus tuuma moodulite autentimiseks.
- Eemaldatud SHA-1 algoritmiga digitaalsete allkirjade loomise võimalus tuuma moodulite jaoks (alus allkirjastatud moodulite laadimise toetamiseks on säilinud).
- NETFILTER_PKT auditi kirje lisatud väljad sport ja dport, et kontrollida võrguportide numbreid, mitte ainult IP-aadresse.
- RISC-V arhitektuuriga süsteemide jaoks on rakendatud Zicfiss ja Zicfilp laienduste tugi, mis pakuvad riistvaralist tuge CFI (Control Flow Integrity) rakendamiseks, takistades seadme normaalset jooksvat järjestust huvide muutmise tõttu.
- KVM hüperviisorisse on rakendatud võimalus edastada külalisüsteemide kaudu teavet protsessorite ERAPS-i (Enhanced Return Address Predictor Security) laienduse toe kohta, mis võimaldab vältida teatud CPU oleku taastamise operatsioone külalisüsteemist hostile juhtimise tagasiandmisel. Lisaks, on lisatud külalisüsteemidele seadmete sidumise tugi jõudluse jälgimiseks (PMU, Performance Monitoring Unit), mis võimaldab suurendada profigeerimise täpsust võrreldes emuleeritud PMU-de kasutamisega.
- Hyper-V hüpervisorile mõeldud draiver on lisatud debugfs liidese tugi hüpervisori tööstatistika vaatamiseks.
- Võrgu alamsüsteem
- Vaikimisi on lubatud AccECN laiendus (Accurate Explicit Congestion Notification), mis rakendab täiustatud versiooni laiendusest ECN (wikipedia.org), võimaldades hostidel liialduste korral IP-pakette märgistada, selle asemel, et neid ära visata, mis võimaldab tuvastada algstaadiumi ummistusest sidekanalites pakettide kadumiseta. ECN-i algne laiendus seab piirangu, mis lubab ühe koormuse signaali esitamise ühe TCP (RTT, Round-Trip Time, päringu saatmine ja vastuse saamine) edastamise tsükli jooksul. AccECN eemaldab selle piirangu ja võimaldab saajal edastada saatjale rohkem kui ühe ummistuse märgise TCP-paketi pealkirjas. Koormuse juhtimise algoritmid saavad saadud teavet kasutada, et täpsemalt reageerida ummistustele ja vältida teravat pakettide saatmise intensiivsuse vähendamist, kui ilmnevad kerge ummistuse märgid.
- Võrgujärjekordade haldamise algoritmi rakendamisel Kook on lisatud võime töödelda mitmeid järjekordi, et jaotada koormust mitme CPU tuuma vahel. CAKE algoritmi kasutatakse pakettide vahebufferimise negatiivsete mõjude vähendamiseks piiril olevas võrguinfrastruktuuris, et saavutada maksimaalne läbilaskevõime ja minimaalne latentsus isegi aeglatel sideliinidel.
- Soketid VSOCK, mida kasutatakse virtuaalmasinate vaheliseks suhtlemiseks, on lisatud võrguruumide (network namespace) toe.
- Lisatud algne versioon tulevasest standardist WiFi 8 (802.11bn, kõrgema usaldusväärsuse WiFi).
- Lisatud optimeeringud, mis on suurendanud sissetulevate UDP-paketide töötlemise efektiivsust 12% ulatuses, testides 100-gigabitises võrgus.
- Seadmed
- AMD GPU draiveris on rakendatud toetamine IP-blokid, mida kasutatakse uutes AMD GPU-des, nagu 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.
- Nouveau draiveris on paranenud sageduse juhtimine Tegra 186+ süsteemides.
- i915 draiveris on lisatud on algne tugi Xe3p_LPD ekraani IP-blokile, mida kasutatakse Intel Nova Lake-P protsessorites.
- Jätkub töötamine Intel Xe arhitektuuri GPU-de DRM-draiveri (Direct Rendering Manager) kallal, mida kasutatakse Intel Arc graafikakaartides ja integreeritud graafikas alates Tiger Lake protsessoritest. Lisatud režiim Multi Queue. Lisatud komponendid, mis on vajalikud GPU hangumise diagnostikaks Mesas. Lisatud tugi MERT-i mehhanismile, et hallata GPU mälule juurdepääsu.
- Jätkub NVIDIA GPU-de Nova draiveri komponentide integreerimine, mis on varustatud GSP-firmware'idega, mida kasutatakse alates NVIDIA GeForce RTX 2000 seeriast, millel on Turing mikroarhitektuur. Draiver on kirjutatud Rust keeles. Uues versioonis on valmistatud ette toetamaks Turing mikroarhitektuuri GPU-de kasutuselevõttu ja tehtud erinevaid sisemisi muudatusi.
- Lisatud tugi mitme kanaliga SPI (Serial Peripheral Interface) kontrolleritele ja perifeersetele seadmetele, mis võimaldavad andmete edastamist mitmes paralleelses voos.
- Lisatud draiver kombineeritud Type-C ühendustele, mida kasutatakse Apple Silicon kiipidega seadmetes ja mis ühendavad USB3, DP-AltMode ja Thunderbolt/USB4 liideseid.
- Lisatud toetus Tegra238, Minisforum V3 SE, iBasso DC04U, Intel Nova Lake, Nova Lake S ja Focusrite Forte helialuste jaoks.
- Lisatud tugi ARM-plaatidele, SoC-idele 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 Ladina-Ameerika tasuta tarkvara fond vormis variant täiesti vaba tuum 7.0 – Linux-libre 7.0-gnu, puhastatud elementidest, mis sisaldavad mittevabasid komponente või koodilõike, mille kasutusala on tootja poolt piiratud. Versioonis 7.0 on eemaldatud iwlwifi draiveriba blobid. Uuendatud puhastuskoodi draiverites amdgpu, adreno, TI PRUeth, air_en8811h, ath12k, TI VPE, rtw8852b, rt1320, rt5575 SPI, tas2783, Intel catpt. Tehtud blob-nimede puhastus dts-failides (devicetree) ARM-kiipide jaoks.
Allikas: linux.org.ru
