Pēc diviem mēnešiem attīstības Linuss Torvalds prezentēja izlaida kodolu Linux 7.0. Starp ievērojamākajām izmaiņām ir: AI palīgu piemērošanas noteikumi, Rust pāreja uz galvenajiem kodola iespējām, palielināta lapotnes veiktspēja, PREEMPT_LAZY režīma iekļaušana pa noklusējumu, atbalsts filtriem io_uring operācijām, jauna Nullfs failišķu sistēma, fserror infrastruktūra, XFS uzraudzības rīki, Btrfs pārmapping atbalsts, NFS 4.1 versijas iekļaušana pa noklusējumu, postkvantu kriptogrāfijas algoritma ML-DSA integrācija, AccECN aktivizēšana tīkla apakšsistēmā un sākotnējais WiFi 8 atbalsts.
Numurs 7.0 piešķirts, jo 6.x versijā bija uzkrājušies pietiekami daudz izlaidumu, lai mainītu versijas numura pirmo skaitli (laikā 6.0 izlaiduma sekoja 5.19). Numuru maiņa tiek veikta estētisku iemeslu dēļ un ir formāls solis, kas novērš diskomfortu no lielā izlaidumu skaita sērijā.
Jaunajā versijā iekļauti 15624 labojumi no 2477 izstrādātājiem, laidiena lielums – 56 MB (izmaiņas skārušas 18053 failus, pievienotas 704060 rindiņas koda, izdzēstas 278132 rindiņas). Iepriekšējā laidienā bija 15657 labojumi no 2237 izstrādātājiem, laidiena lielums – 52 MB. Aptuveni 51% no visām izmaiņām 7.0 saistītas ar ierīču draiveriem, aptuveni 11% izmaiņu ir saistītas ar arhitektūras specifisku koda atjaunināšanu, 14% saistītas ar tīkla steku, 5% – ar failišķu sistēmām un 3% ar iekšējām kodola apakšsistēmām.
Galvenās inovācijas kodolā 7.0 (kernelnewbies.org, lwn.net, OpenNET):
- Disku apakšsistēma, I/O un failu sistēmas
- Ieviesta fserror infrastruktūra un iegūts API, lai iegūtu informāciju par ievades/izvades kļūdām un metadatu bojājumiem, strādājot ar failiem. Ierosinātā infrastruktūra vienoti nodrošina informācijas par kļūdām nodošanu failu sistēmās uz lietotāja telpu, izmantojot fsnotify mehānismu.
- XFS ir pievienotas jaunas iespējas uzraudzīt failišķu sistēmu stāvokli no lietotāja telpas. Ierosināta ioctl darbība XFS_IOC_HEALTH_MONITOR, kas atgriež failu descriptoru, caur kuru var iegūt informāciju par kļūdām, kas saistītas ar metadatu bojāšanu vai ievades/izvades kļūdām, kā arī sekot līdzi failišķu sistēmu stāvokļu maiņām, piemēram, demontēšanai un izslēgšanai. Papildus piedāvāts sistematizēts fons process xfs_healer, kas apstrādā informāciju par failišķu sistēmu stāvokli no lietotāja telpas un nepieciešamības gadījumā automātiski to palaidīs. atjaunošanas procedūras.
- Btrfs failu sistēmā ir pievienota eksperimentālā atbalsta struktūra "pārveidošanas koks" (remap tree), kas nākotnē var tikt izmantota kā starpējā slāņa funkcija ieejas-izejas operāciju veikšanā. Pievienotās iespējas būtība ir tāda, ka pēc datu pārvietošanas uz krātuves, nevis visām ar šiem datiem saistītajām struktūrām atjauninot, tiek saglabātas vecās un jaunās datu adreses papildu struktūrā "remap tree", pēc tam piekļūstot datiem adreses tiek aizstātas. Jaunais piegājiens tiek raksturots kā uzticīgāks un elastīgāks, kā arī vienkāršo Btrfs funkcionalitātes turpmāko paplašināšanu.
- Btrfs ir ieviesta tiešā ievades/izejas atbalsts situācijās, kad blokķēdes izmērs pārsniedz sistēmas atmiņas lapas izmēru.
- Iznākuma sastāvā iekļauts jauna Nullfs failu sistēma, ko var izmantot kā nodošanas failu sistēmu (placeholder) saknes failu sistēmai. Nullfs failu sistēma vienmēr ir tukša, nesatur datus un atbalsta izmaiņas. Nullfs mērķis ir izmantot to kā sākuma failu sistēmu, lai atvieglotu sistēmas palaišanas procesu - uz Nullfs pēc tam tiek uzmontētas citas failu sistēmas un tiek izmantots sistēmas izsaukums pivot_root(), lai nomainītu saknes failu sistēmu, nevis notīrītu initramfs saturu un izmestu to saistīto saknes failu sistēmu.
- Ievieš failu modifikācijas laika informācijas atjaunināšana neblokējošajā režīmā. Iepriekš izsaukums file_update_time_flags() ar IOCB_NOWAIT karogu atgrieza kļūdu -EAGAIN, kas liedza izmantot tiešās rakstīšanas operācijas neblokējošajā režīmā.
- failu sistēmās atsevišķi iespējamo opciju grupā tulkots atbalsts informējošām bloķēšanām (lease). Pēc noklusējuma šāda mehānisma tagad nav iespējota problēmu dēļ ar failu sistēmām, kas sākotnēji nav paredzētas tā pielietošanai. Piemēram, to neatbalsta 9p un cephfs failu sistēmas.
- EROFS (Extendable Read-Only File System) failu sistēmā, kas paredzēta izmantošanai tikai lasāmos nodalījumos, pēc noklusējuma tiek izmantota LZMA saspiešanas algoritms. Opcijās ir pieejami DEFLATE un Zstandard algoritmi, kuri vairs nav marķēti kā eksperimentāli. Ieviešot identisku failu koplietošanas ierakstus lapu kešā (page-cache) atsevišķās EROFS failu sistēmās.
- Izņemts laptop_mode režīms, kas ietaupa enerģijas patēriņu, atlikdams un apvienojot rakstīšanas operācijas uz cietā diska, lai pagarinātu diska miega stāvokļa laiku un samazinātu pamodināšanas reižu skaitu. Šis režīms ir zaudējis aktualitāti, jo mūsdienu mobilajās ierīcēs cietie diski ir aizvietoti ar SSD.
- Fayla sistēma F2FS pārgājusi uz lielu atmiņas lapas folijus (large folios).
- Atjaunota darba pie ntfs3 draivera, ko attīsta Paragon Software. Tika pievienota atbalsts failu operācijām, pamatojoties uz iomap, ieviestas llseek SEEK_DATA/SEEK_HOLE opcijas, pievienots delalloc režīms bloķu atliktai rezervācijai. Tajā pašā laikā, izstrādātāju kodolā jūlijā tika apstiprināts iekļauts jaunas NTFS realizācijas iekļaušana nākamajās kodola versijās — ntfsplus, izstrādāta ntfs3 aizvietošanai.
- Pa noklusējumu, veidojot iekļauts NFS protokola versija 4.1 (CONFIG_NFS_V4_1). Nodrošināta eksporta bloķēšana caur NFS specializētām pseido-FS, kā pidfs un nsfs. NFSD ir ieviesta eksperimentālā iespēja izmantot POSIX ACL un pievienots atbalsts dinamiskiem pavedienu pušu izmaiņām atkarībā no slodzes.
- Atmiņa un sistēmas pakalpojumi
-
Tika apstiprināti oficiālie noteikumi AI asistentu izmantošanai un iekļaušanai kodolā automātiski ģenerēta satura. Pārsūtot ģenerēto kodu, ir jānorāda izmantotais AI asistents, izmantojot Assisted-by tagu. AI asistenti nedrīkst pievienot Signed-off-by tagu – personai, kas nodeva plāksteri, ir jāuzskata sevi par tā autoru, jāpatur atbildība par iesniegto izmaiņu un jāpārliecinās par tās kvalitāti. Izstrādātājiem ir jāveic manuāla saņemto AI ģenerētā koda pārbaude un jāpārbauda rezultātu atbilstība licencēšanas prasībām.
-
Atbalsts Rust tulkots no eksperimentālām pamatiezīmēm kodolā.
-
Pabeigta mehānisma «Swap Table» integrācija kodolā, kas ļauj paaugstināt apmaiņas veiktspēju. Paātrinājums tiek panākts, samazinot konkurenci pie piekļuves apmaiņas kešatmiņai, efektīvāk meklējot kešatmiņā un samazinot fragmentāciju. Swap Table pamatā esošais aizmugures darbs tiek izmantots apmaiņas kešatmiņai, nevis XArray aizmugures darbs, un ļāva pēc redis-benchmark testēšanas BGSAVE pieaugt apstrādāto pieprasījumu skaitam par 22%.
-
Tika pievienots atbalsts Clang 22 jaunajai paplašinājuma Thread Safety Analysis, kas ļauj kompilācijas laikā identificēt potenciālās sacensību stāvokļus un kļūdas, kas radītas nepareizi izvirzītu bloķēšanu dēļ. Paplašinājums piedāvā sēriju atribūtu, piemēram, GUARDED_BY(…), REQUIRES(…), RELEASE(…) un ACQUIRE(…), kas ļauj atzīmēt bloķētās funkcijas un nodalīt bloķēšanas jomas (definēt kontekstu). Kompilācijas posmā tiek veikta sinhronizācijas primitīvu, piemēram, mutexu, pareizības pārbaude, pamatojoties uz novērtējumu par aktivitāti vai neaktivitāti, kas saistīta ar to kontekstu.
-
Sistēmas izsaukumam open_tree iegūts flags OPEN_TREE_NAMESPACE, lai atvieglotu izolētu konteineru iestatīšanu un paātrinātu konteineru palaišanu sistēmās ar lielu montēšanas punktu skaitu. Līdzīgi kā OPEN_TREE_CLONE, jaunais flags kopē tikai norādīto montēšanas punktu koku (mount tree), bet vietējā faila deskriptora vietā atgriež faila deskriptoru jaunā montēšanas punktu nosaukuma telpā, kurā kopētais koks tiek uzmontēts virs reālās saknes failu sistēmas kopijas. Flags OPEN_TREE_NAMESPACE ir pieprasīts, lai izvairītos no atsevišķām darbībām un izpildēm un pivot_root(), kas tiek izmantotas konteineru veidošanā.
-
Sistēmas izsaukumam rseq iegūts laika slēgumu (time slice) paplašināšanas mehānisms, kas ļauj iegūt papildu procesora laiku nepārtrauktai kritiskās sekcijas izpildei. Ideja ir izvairīties no uzdevumu plānotāja pārtraukuma kritiskajā sekcijā ar izvirzītu bloķēšanu, kas noved pie kontroli citiem pavedieniem, kas izmanto resursus, uz kuriem bloķēšana paliek izvirzīta. Laika slēguma pagarinājums notiek bez papildu izmaksām, bet arī bez stingrām garantijām, kas tiek sniegtas pilnvērtīgas prioritāšu regulēšanas gadījumā.
-
Arhitektūrām arm64, loongarch, powerpc, riscv, s390 un x86 uzdevumu pārtraukšanas režīms (preemption) plānotājā noklusējumā mainīta no PREEMPT_NONE uz PREEMPT_LAZY. Iespējamo režīmu skaits samazināts no no no (PREEMPT_FULL un PREEMPT_LAZY režīmi; PREEMPT_NONE un PREEMPT_VOLUNTARY režīmi ir atstāti tikai arhitektūrām, kas neatbalsta PREEMPT_FULL un PREEMPT_LAZY). PREEMPT_LAZY režīms piemēro pilnīgas izstumšanas modeli (PREEMPT_FULL) reāllaika uzdevumiem (RR/FIFO/DEADLINE), taču aizkavē parasto uzdevumu (SCHED_NORMAL) izstumšanu līdz takta robežai. Ievērojama aizkavēšanās samazina bloķēšanas turētāju izstumšanas gadījumus, ļaujot tuvināt veiktspēju konfigurācijām, kas izmanto brīvprātīgās izstumšanas modeli (voluntary preemption); t.i., PREEMPT_LAZY ļauj saglabāt pilnīgas izstumšanas iespējas reāllaika uzdevumiem, bet minimizē veiktspējas kritumu parastiem uzdevumiem.
Ieslēgt PREEMPT_LAZY izraisīja izraisīja nopietnu regresiju, kas samazināja PostgreSQL veiktspēju divreiz ARM64 sistēmās. Lai novērstu veiktspējas kritumu, PostgreSQL izstrādātājiem piedāvāts ir jāaktivizē PR_RSEQ_SLICE_EXTENSION opcija, lai samazinātu bloķēšanas turētāja izstumšanas varbūtību.
-
Turpināts izmaiņu pārsūtīšana no zaru Rust-for-Linux, kas saistītas ar Rust valodas izmantošanu kā otro valodu draiveru un kodola moduļu izstrādē (Rust atbalsts nav iespējots pēc noklusējuma un neizraisa Rust iekļaušanu obligātajās kodola būvniecības atkarībās). Pateicoties iepriekš integrētajai bibliotēkai „syn (crates.io)”, kas atvieglo sarežģītu makro rakstīšanu, ir izdevies samazināt Rust koda apjomu kodolā, vienkāršojot jau esošo procedūru makro definīcijas. Ir paplašinātas bibliotēku kernel, macros un pin-init iespējas.
-
Asinhronā ievade/izvade io_uring sistēmā pievienots ir opcija neatkarīgu iesniegšanas rindu (non-circular submission queue) izmantošanai, kas efektīvāk tiek kešota, ja pieprasījuma izpilde beidzas pirms atgriešanās no sistēmas izsaukuma.
-
eBPF apakšsistēmā BTF (BPF Type Format) mehānismā, kas sniedz informāciju par tipu pārbaudi BPF pseudokodā, lai meklētu atkļūdošanas informāciju tiek izmantots bināro meklēšanu, kas uzlaboja BPF programmu ielādes efektivitāti. eBPF pievienots atbalsta netiešos argumentus izsaukumos kfunc (kodola funkcijas, kas pieejamas BPF programmās), ko ir definējušas KF_IMPLICIT_ARGS.
-
Izņemts kods, kas atbalsta sākotnējo RAM disku (initrd) uz linuxrc, sen vairs nav atbalstīts. Pārējās initrd realizācijas plāno izņemt 2027. gadā. Vietā initrd jādara lietā initramfs (atšķirība ir tāda, ka initrd ievieto sākotnējo inicializācijas vidi diska attēlā, bet initramfs – failu sistēmā).
-
blokierīcē zram, kas tiek izmantots saspiešanas atmiņas sadaļā, mainīta izpildes loģika, veicot saspiešanas lapu pārvaldību, piemērojot opciju pārvietot datus uz pastāvīgu atmiņu, kad pieejamā operatīvā atmiņa ir aizpildīta. Agrāk atmiņas lapas tika atspiestas pirms pierakstīšanas uz fiziskā nesēja, bet tagad tās tiek saglabātas tādas, kādas tās ir, saspiežot, tādējādi samazinot procesora noslodzi un ietaupot enerģiju, ja tiek izmantota autonomā darbība.
-
Uz utilītu timerlat, kas paredzēta, lai izmērītu aizkaves uzdevumu plānotāja darbības laikā, pievienots opcijā —bpf-action, lai palaistu BPF programmas, ja tiek pārsniegts noteiktais slieksnis.
-
Ftrace izsekošanas sistēmā pievienota bitmask-list iestatījumu iespēja, lai izvadītu bitu maskas saprotamā formā (bitu saraksta formā, nevis sešpadsmitdaļu skaitļa formā). Tracefs ir pievienotas iespējas audita filtriem un izsistēmām. Pievienota komanda perf sched stats, lai vāktu un attēlotu statistiku par uzdevumu plānotāja darbību.
-
Pievienoti kompilācijas opcijas LOGO_LINUX_MONO_FILE, LOGO_LINUX_VGA16_FILE un LOGO_LINUX_CLUT224_FILE, lai noteiktu attēla failu ar logotipu, ko rādīs, kad tiek ielādēts kodols, vietā noklusējuma logotipa ar pingu Tux.
-
- Virtualizācija un drošība
- asinkronās ievades/izvades sistēmā io_uring ir ieviesta iespēja pievienot BPF programmas ar filtriem, kas kontrolē, ko konkrēti SQE (iesniegšanas rindas ieraksti) var darīt (līdzīgi sistēmas izsaukumiem io_uring). Pievienotā iespēja ir līdzīga sistēmas izsaukumu filtriem. Filtri var tikt piesaistīti noteiktiem uzdevumiem un tiek mantoti, radot citus procesus pēc fork() izsaukšanas. Ja aktīvie filtri ir klāt, pievienotie filtri var pievienot tikai papildu ierobežojumus, bet neatspēkot esošos. Ieviešana ļaus bloķēt metodes apiet sistēmas izsaukumu filtrēšanu smilšu kastes vidēs, balstoties uz to, ka vietā sistēmas izsaukumiem tiek izpildītas līdzīgas darbības, ko nodrošina io_uring.
- SELinux pievienots pārvaldīt piekļuvi BPF tokeniem, kas ļauj neprivileģētiem procesiem izpildīt dažas privileģētas operācijas ar BPF, piemēram, augšupielādēt BPF programmas kodolā un izveidot map-struktūras.
- Pievienota atbalsts digitālo parakstu veidošanas algoritmam ML-DSA (CRYSTALS-Dilithium), kas balstīts uz režģu teoriju un ir izturīgs pret uzbrukumiem kvantu datoros. Piedāvāta iespēja izmantot ML-DSA kodola moduļu autentifikācijai.
- Azurēta iespēja izmantot digitālo parakstu veidošanas shēmas ar SHA-1 algoritmu kodola moduļu parakstīšanai (atbalsts parakstītu moduļu augšupielādei paliek).
- AUDITA ierakstā NETFILTER_PKT ir pievienotas sport un dport lauki tīkla portu numuru pārbaudei, ne tikai IP adresēm.
- RISC-V arhitektūrai ir ieviesta atbalsts paplašinājumiem Zicfiss un Zicfilp, kas nodrošina aparatūras iespējas CFI (Control Flow Integrity) aizsardzības izmantošanai, kas novērš normāla instrukciju izpildes secības pārkāpumus, izmantojot exploitus, kas maina atmiņā saglabātās funkciju rādītājus.
- KVM hipervizorā ir ieviesta iespēja nodot viesosistēmām informāciju par procesora ERAPS (Enhanced Return Address Predictor Security) paplašinājuma atbalstu, kas ļauj izvairīties no dažām CPU stāvokļa atiestatīšanas operācijām, atgriežot kontroli viesistēmai. Turklāt, pievienots atbalsts viesosistēmām piešķirtam aparatūrai veiktspējas uzraudzībai (PMU, Performance Monitoring Unit), kas ļauj palielināt profilēšanas precizitāti salīdzinājumā ar emulētajām PMU.
- Hyper-V hipervizora draiverī pievienots atbalsts debugfs saskarnei, lai apskatītu hipervizora darbības statistik.
- Tīkla subsistēma
- Iekļauts pēc noklusējuma AccECN paplašinājums (Accurate Explicit Congestion Notification), kas realizē uzlabotu versiju paplašinājumam ECN (wikipedia.org), ļaujot hostiem gadījumā, ja ir pārslodze, marķēt IP paketes, nevis tās noraidīt, kas ļauj noteikt sākotnējā sastrēguma posma rašanos sakaru kanālos bez paketes zuduma. Sākotnējais ECN paplašinājums ir ierobežojums, kas ļauj nosūtīt tikai vienu sastrēguma signālu viena TCP (RTT, Round-Trip Time, pieprasījuma nosūtīšanas un atbildes saņemšanas) cikla laikā. AccECN noņem šo ierobežojumu un ļauj saņēmējam nosūtīt nosūtītājam vairāk nekā vienu sastrēguma marķējumu TCP paketes galvenē. Pārslodzes vadības algoritmi var izmantot saņemto informāciju, lai precīzāk reaģētu uz pārslodzēm un neriskētu strauji samazināt paketes nosūtīšanas intensitāti, kad rodas niecīga pārslodze.
- Tīklu rindas pārvaldīšanas algoritma īstenošana Cake pievienots iespēju apstrādāt vairākas rindas, lai sadalītu slodzi uz vairākiem CPU kodoliem. CAKE algoritms tiek izmantots, lai mazinātu starpbuforu ietekmi uz paketes uzglabāšanu robežierīcēs un ir vērsts uz maksimāli iespējamo caurlaidspēju un minimālo kavējumu līmeni, pat lēnos sakaru kanālos.
- Iekš soketiem VSOCK, kas tiek izmantoti saziņai ar virtuālajām mašīnām, pievienots atbalstu tīkla nosaukumu telpām (network namespace).
- Pievienota sākotnējā nākamā standarta WiFi 8 (802.11bn, Ultra High Reliability WiFi).
- Pievienoti optimizācijas, kas ļāva paaugstināt ienākošo UDP paketes apstrādes efektivitāti par 12% veicot stresa testus 100-gigabit tīklā.
- Aprīkojums
- AMDGPU draiverī ir ieviesta atbalsts IP bloki, kas tiek izmantoti jaunajos AMD GPU, piemēram, 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 un JPEG 5.3.
- Nouveau draiverī uzlabota frekvences vadība Tegra 186+ sistēmās.
- I915 draiverī pievienots sākotnējā atbalsta Xe3p_LPD displeja IP bloks, ko izmanto Intel Nova Lake-P procesoros.
- Turpināta darbs pie drm-draivera (Direct Rendering Manager) Xe GPU, kas balstās uz Intel Xe arhitektūras, kas tiek izmantota Intel Arc ģimenes videokartēs un integrētajā grafikā, sākot no Tiger Lake procesoriem. Pievienots režīms Multi Queue. Pievienoti komponentes, kas nepieciešamas GPU apturēšanu diagnostikai Mesa. Pievienota atbalsts MERT mehānisma ieviešanai, lai pārvaldītu piekļuvi GPU atmiņai.
- Turpināta NVIDIA GPU Nova draivera komponentu integrācija, kas aprīkoti ar GSP programmaparatūrām, kas tiek izmantotas kopš NVIDIA GeForce RTX 2000 sērijas, balstoties uz Turing mikroarhitektūru. Draiveris ir rakstīts Rust valodā. Jaunajā versijā ir veikta sagatavošanās atbalsta nodrošināšanai GPU, kas balstīti uz Turing mikroarhitektūru, kā arī ieviesti dažādi iekšējie uzlabojumi.
- Pievienota Atbalsts vairāku kanālu SPI (Serial Peripheral Interface) kontrolleriem un perifērijas ierīcēm, kas ļauj pārsūtīt datus vairākos paralēlos datos.
- Pievienots Draiveris kombinētiem Type-C savienotājiem, ko izmanto Apple Silicon čipus saturošās ierīcēs, un kas apvieno USB3, DP-AltMode un Thunderbolt/USB4 saskarnes.
- Pievienots atbalsts Tegra238, Minisforum V3 SE, iBasso DC04U, Intel Nova Lake, Nova Lake S un Focusrite Forte skaņas subsistēmām.
- Pievienots atbalsts ARM platformām, SoC un ierīcēm: 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.
- Pievienots atbalsts viedtālruņiem un planšetdatoriem: Fairphone Gen 6 (SoC Qualcomm Milos/Snapdragon 7s Gen 3), Pixel 3/3 xl, Microsoft Surface Pro 11.
Tajā pašā laikā Latīņamerikas Brīvā programmatūras fonds izveidoja variantu Pilnīgi brīva kodols 7.0 – Linux-libre 7.0-gnu, kas attīrīts no programmaparatūras un draiveru elementiem, kas satur neslitrīgus komponentus vai koda fragmentus, kuru pielietojums ir ierobežots ražotāja. Versijā 7.0 ir veikta iwlwifi draivera blošu attīrīšana. Atjaunināts attīrīšanas kods amdgpu, adreno, TI PRUeth, air_en8811h, ath12k, TI VPE, rtw8852b, rt1320, rt5575 SPI, tas2783, Intel catpt draiveros. Veikta blošu nosaukumu attīrīšana dts failos (device tree) ARM čipiem.
Avots: linux.org.ru
