Pēc diviem mēnešiem izstrādes Linuss Torvalds prezentēja Linux 7.0 kodola izlaišanu. Starp ievērojamākajām izmaiņām ir: AI asistentu izmantošanas noteikumi, Rust pievienošana kodola pamata funkcionalitātēm, lapu segumu veiktspējas uzlabošana, PREEMPT_LAZY režīma iekļaušana pēc noklusējuma, atbalsts filtriem io_uring operācijām, jauna Nullfs failu sistēma, fserror infrastruktūra, XFS uzraudzības rīki, atbalsts Btrfs pārmappingam, NFS 4.1 versijas iekļaušana pēc noklusējuma un postkvantu šifrēšanas algoritma ML-DSA integrācija, AccECN aktivizēšana tīkla subsistēmā un pirmais 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ā ir 15624 labojumi no 2477 izstrādātājiem, šķiedras izmērs — 56 MB (izmaiņas skāra 18053 failus, pievienotas 704060 koda rindkopas un dzēstas 278132 rindkopas). Iepriekšējā laidienā bija 15657 labojumi no 2237 izstrādātājiem, šķiedras izmērs — 52 MB. Apmēram 51% no visām 7.0 izmaiņām ir saistītas ar ierīču draiveriem, aptuveni 11% izmaiņu attiecās uz aparatūras arhitektūrām specifiska koda atjaunināšanu, 14% bija saistīti ar tīkla steku, 5% — ar failu sistēmām un 3% ar kodola iekšējām subsistēmām.
Galvenās jauninājumi kodolā 7.0 (1, 2, 3):
- Disku apakšsistēma, I/O un failu sistēmas
- Tika ieviesta fserror infrastruktūra un pievienots API, lai iegūtu informāciju par ievades/izvades kļūdām un metadatu bojājumiem darbam ar failiem. Ieteiktā infrastruktūra vienojoši sniedz kļūdu informāciju failu sistēmās lietotāja telpā, izmantojot fsnotify mehānismu.
- XFS ir pievienotas jaunas iespējas failu sistēmas stāvokļa uzraudzībai no lietotāja telpas. Ieteikta ioctl operācija XFS_IOC_HEALTH_MONITOR, kas atgriež failu deskriptoru, ar kuru var iegūt informāciju par kļūdām, kas saistītas ar metadatu bojājumiem vai ievades/izvades kļūdām, kā arī uzraudzīt failu sistēmas statusa izmaiņas, piemēram, atslēgšanu un izslēgšanu. Papildus ir piedāvāts systemd pārvaldīts fona process xfs_healer, kas apstrādā informāciju par failu sistēmas stāvokli no lietotāja telpas un, ja nepieciešams, automātiski uzsāk atjaunošanas procedūras.
- Btrfs failu sistēmā ir pievienota eksperimentāla atbalsta struktūra „remap tree”, kas nākotnē var tikt izmantota kā starpslānis ievades-izvades operācijās. Šīs iespējas būtība ir tāda, ka pēc datu pārvietošanas uz glabātāja, nevis atjaunojot visas ar šiem datiem saistītās struktūras, papildus struktūrā „remap tree” tiek saglabātas vecās un jaunās datu adreses, pēc tam piekļūstot datiem, adreses tiek aizstātas. Jaunā pieeja tiek pasniegta kā drošāka un elastīgāka, kā arī vienkāršojot turpmākās Btrfs funkcionalitātes paplašināšanu.
- Btrfs ir īstenots tiešais ievads/izvade situācijās, kad bloka izmērs pārsniedz sistēmas atmiņas lapas izmēru.
- Tajā ir iekļauta jauna failu sistēma „Nullfs”, ko var izmantot kā aizvietotāju saknes failu sistēmai. Nullfs failu sistēma vienmēr ir tukša, nesatur datus un neatbalsta izmaiņas. Nullfs mērķis ir izmantot to kā sākotnējo failu sistēmu, lai atvieglotu sistēmas ielādes procesu — virs Nullfs pēc tam tiek montētas citas failu sistēmas un tiek izmantota sistēmas izsaukums pivot_root() saknes failu sistēmas pārslēgšanai, nevis initramfs satura iztīrīšanai un ar to saistītas saknes failu sistēmas izmantošanai.
- Ir īstenota informācijas par failu modifikācijas laiku atjaunināšana nesakaru režīmā. Agrāk izsaukums file_update_time_flags() ar IOCB_NOWAIT atzīmi atgrieza kļūdu „-EAGAIN”, kas neļāva izmantot tiešās rakstīšanas operācijas nesakaru režīmā.
- Failu sistēmās ir pārgājusi atbalsta sistēma paziņojumu bloķēšanas (lease) aktīvi iekļautām opcijām. Noklusējumā šāds mehānisms tagad netiek aktivizēts problēmu dēļ ar failu sistēmām, kas sākotnēji nebija paredzētas tās pielietošanai. Piemēram, to neatbalsta 9p un cephfs failu sistēmas.
- EROFS (Paplašināmā tikai lasāma failu sistēma) failu sistēmā, kas paredzēta lietošanai tikai lasāmiem nodalījumiem, noklusējumā tiek izmantots LZMA algoritms kompresijai. Papildus ir pieejami DEFLATE un Zstandard algoritmi, kuri vairs nav apzīmēti kā eksperimentāli. Ir īstenota identisku failu koplietošana lapu kešā (page-cache) atsevišķām EROFS failu sistēmām.
- Ir atcelta laptop_mode funkcija, kas samazina enerģijas patēriņu, atlikdama un apvienojot rakstīšanas operācijas uz cietā diska, lai pagarinātu diska miega režīmu un samazinātu pamodināšanas reižu skaitu. Šis režīms ir zaudējis nozīmi, jo mūsdienu mobilajos izstrādājumos cietie diski ir aizvietoti ar solid-state diskdziņiem.
- F2FS failu sistēma ir pārslēgta uz lieliem atmiņas lapu folijām (large folios).
- Atjaunota darbs pie ntfs3 vadītāja, kuru attīsta Paragon Software. Pievienota atbalsts failu operācijām, kas balstītas uz iomap, ieviestas llseek SEEK_DATA/SEEK_HOLE opcijas, pievienots delalloc režīms atliktai blokāžu sadalei. Tikmēr, kodola izstrādātāju pasta sarakstā februārī tika apstiprināta jaunas NTFS realizācijas — ntfsplus, izstrādātas, lai aizstātu ntfs3, iekļaušana vienā no nākamajām kodola versijām.
- Noklusējuma kompilēšanas laikā iekļauta NFS protokola 4.1 versija (CONFIG_NFS_V4_1). Nodrošināta NFS eksportēšanas bloķēšana specializētām pseido-FS, kā pidfs un nsfs. NFSD ir ieviesta eksperementāla iespēja izmantot POSIX ACL un pievienots atbalsts plūsmas (thread-pool) dinamiskai maiņai atkarībā no slodzes.
- Atmiņa un sistēmas pakalpojumi
- Apstiprināti oficiālie noteikumi AI palīgu izmantošanai un automātiski ģenerēta satura iekļaušanai kodolā. Pārsūtot ģenerēto kodu, tas jāatzīmē, norādot izmantoto AI palīgu ar tagu «Assisted-by». AI palīgiem ir aizliegts pievienot tagu «Signed-off-by» — cilvēks, kurš nodod plāksteri, tiek uzskatīts par tā autoru un uzņemas atbildību par veiktajām izmaiņām un garantē to kvalitāti. Izstrādātājiem ir uzdots veikt manuālu iegūtā AI koda pārskatīšanu un pārliecināties par rezultāta atbilstību licenciālo prasību izpildei.
- Atbalsts Rust ir pārnests no eksperimentālām funkcijām uz galvenajām kodola iespējām. Rust atbalsts pēc noklusējuma nav aktivizēts un neizraisa Rust iekļaušanu obligātajās kompilācijas atkarībās kodolam.
- Ir ir notikusi integrācija „Swap Table” mehānismā, kas ļauj uzlabot lapu apmaiņas veiktspēju. Paātrinājums tiek panākts, samazinot konkurenci pie piekļuves lapu apmaiņas kešatmiņai, efektīvāk meklējot kešatmiņā un samazinot fragmentāciju. Swap Table bāzes aizmugure tiek izmantota lapu apmaiņas kešatmiņai, nevis XArray aizmugurei, un ļāva redis-benchmark testā ar BGSAVE palielināt apstrādāto pieprasījumu skaitu par 22%.
- Pievienota atbalsta Clang 22 versijā jaunajam ierastā Līniju drošības analīzes paplašinājumam, kas ļauj kompiliācijas laikā atklāt potenciālās sacensības un kļūdas, ko izraisa nepareiza bloķēšanu iestatīšana. Paplašinājums piedāvā virkni atribūtu, piemēram, GUARDED_BY(…), REQUIRES(…), RELEASE(…) un ACQUIRE(…), kas ļauj apzīmēt ar bloķēšanām pārklātās funkcijas un atdalīt bloķēšanas darbības jomas (definēt kontekstu). Kompiliācijas laikā tiek veikta sinhronizācijas primitivu, piemēram, mutexu, pareizības pārbaude, pamatojoties uz saistītā konteksta aktivitāti vai neaktivitāti.
- Sistēmas izsaukumam open_tree pievienots karogs OPEN_TREE_NAMESPACE, lai vienkāršotu izolētu konteineru iestatīšanu un paātrinātu konteineru palaišanu sistēmās ar lielu pieslēguma punktu skaitu. Līdzīgi kā OPEN_TREE_CLONE, jaunais karogs kopē tikai norādīto pieslēguma punktu struktūru (mount tree), bet tā vietā, lai atgrieztu lokālo failu identificētāju, atgriež faila identificētāju jaunā pieslēguma punktu nosaukumu telpā, kurā kopētā struktūra tiek montēta virs reālās saknes failu sistēmas kopijas. Karogs OPEN_TREE_NAMESPACE ir nepieciešams, lai atteiktos no atsevišķu darbību izpildes ar unshare(CLONE_NEWNS) un pivot_root(), kas tiek izmantotas konteineru izveidē.
- Sistēmas izsaukumam rseq pievienots laika daļas (time slice) paplašināšanas mehānisms, kas ļauj iegūt papildu procesora laiku nepārtrauktai kritisko sekciju izpildei. Ideja ir izvairīties no uzdevumu plānotāja pārtraukšanas kritiskajā sekcijā ar iestatītu bloķēšanu, kas noved pie kontroles nodošanas citiem pavedieniem, kas izmanto resursus, uz kuriem bloķēšana joprojām attiecas. Laika daļas paplašināšana notiek bez papildu izmaksām, bet arī bez stingrām garantijām, kuras nodrošina pilnīga prioritāšu regulēšana.
- Lai arm64, loongarch, powerpc, riscv, s390 un x86 arhitektūrām, uzdevumu nomainīšanas režīms (preemption) planotājā pēc noklusējuma ir mainīts no PREEMPT_NONE uz PREEMPT_LAZY. Iespējamo režīmu skaits ir samazināts no četriem līdz diviem — PREEMPT_FULL un PREEMPT_LAZY (režīmi PREEMPT_NONE un PREEMPT_VOLUNTARY atstāti tikai arhitektūrām, kas neatbalsta PREEMPT_FULL un PREEMPT_LAZY). Režīms PREEMPT_LAZY piemēro pilnīgas nomainīšanas modeli (PREEMPT_FULL) realtime uzdevumiem (RR/FIFO/DEADLINE), bet aizkavē normālo uzdevumu (SCHED_NORMAL) nomainīšanu līdz tikšanās robežai. Ieviešamā aizkavēšana samazina bloķēšanas turētāju nomainīšanas gadījumus, kas ļauj uzlabot veiktspēju salīdzinājumā ar konfigurācijām, kas izmanto brīvprātīgas nomainīšanas modeli (voluntary preemption), t.i., PREEMPT_LAZY ļauj saglabāt pilnīgas nomainīšanas iespējas attiecībā uz realtime uzdevumiem, bet minimizē veiktspējas kritumu parastajiem uzdevumiem.
PREEMPT_LAZY aktivizēšana izraisīja nopietnu regresiju, kas divreiz samazina PostgreSQL veiktspēju ARM64 sistēmās. Lai novērstu veiktspējas kritumu, PostgreSQL izstrādātājiem piedāvāts izmantot PR_RSEQ_SLICE_EXTENSION opciju, lai samazinātu nomainīšanas iespēju bloķēšanas turētājam.
- Turpinās izmaiņu pārbaušana no Rust-for-Linux zara, kas saistīta ar Rust valodas izmantošanu kā otro valodu draiveru un kodola moduļu izstrādē. Pateicoties iepriekš integrētajai bibliotekai "syn", kas atvieglo sarežģītu makro rakstīšanu, izdevies samazināt Rust koda apjomu kodolā, vienkāršojot esošo procedūru makro definīcijas. Paplašinātas kernel, macros un pin-init bibliotēku iespējas.
- Asinhronā ievades/izvades io_uring sistēmā pievienota opcija neaprites rindas (non-circular submission queue) izmantošanai, kas efektīvāk tiek kešota gadījumos, kad pieprasījuma izpilde beidzas ātrāk nekā atgriešanās no sistēmas izsaukuma.
- eBPF apakšsistēmā BTF (BPF Type Format) mehānismā, kas nodrošina informāciju tipu pārbaudēm BPF pseudokodā, tagad binārā meklēšana tiek izmantota, lai atrastu atvēršanas informāciju, kas uzlabo BPF programmu ielādes efektivitāti. eBPF pievienota atbalsts netiešiem argumentiem, izsaucot kfunc (kodola funkcijas, kas ir pieejamas BPF programmās), kas definēti ar KF_IMPLICIT_ARGS zīmi.
- Tika ir noņemts kods, kas atbalsta sākotnējo RAM disku (initrd), kas balstīts uz linuxrc un jau sen uzskatīts par novecojušu. Pārējās initrd realizācijas plānots izdzēst 2027. gadā. Tā vietā jāizmanto initramfs (atšķirība ir tā, ka initrd novieto sākotnējo ielādēšanas vidi diska attēlā, bet initramfs — failu sistēmā).
- Bloku ierīcē zram, ko izmanto saspiešanai atmiņas apmaiņas nodalījumā, ir mainīta loģika, kā tiek strādāts ar saspiežamām atmiņas lapām, kad opcijas ietvaros tiek pārvietoti dati uz pastāvīgu krātuvi, ja pieejamā operatīvā atmiņa ir aizpildīta. Iepriekš atmiņas lapas tika izsūknētas pirms rakstīšanas uz fiziskā datu nesēja, bet tagad tās tiek saglabātas tādā veidā, kādā ir saspiežamā formā, kas samazina slodzi uz CPU un ietaupa enerģiju, strādājot autonomi.
- Uz utilītu timerlat, kas paredzēta uzdevumu plānotāja darbības aiztures mērīšanai, ir pievienota opcija «—bpf-action» BPF programmu palaišanai, ja tiek pārsniegts noteiktais slieksnis.
- Ftrace izsekošanas sistēmā ir pievienota iestatījums «bitmask-list» lasāmā veidā izvadot bitu maskas (bitu saraksta formā, nevis sešpadsmitās skaitļošanas formā). Tracefs ir pievienotas iespējas auditorijai filtru un trigeru uzraudzībai. Ir pievienota komanda «perf sched stats» uzdevumu plānotāja darbības statistikas vākšanai un parādīšanai.
- Ir pievienotas kompilācijas opcijas LOGO_LINUX_MONO_FILE, LOGO_LINUX_VGA16_FILE un LOGO_LINUX_CLUT224_FILE, lai noteiktu attēlu failu ar logotipu, kas tiks rādīts, kad kodols tiks ielādēts, aizstājot noklusējuma logotipu ar pingvīnu Tux.
- Virtualizācija un drošība
- Asinhronās I/O sistēmā io_uring ir ieviesta iespēja pievienot BPF programmas ar filtriem, kas kontrolē, ko var veikt konkrētas SQE (Submission Queue Entry) operācijas (līdzīgi kā sistēmas izsaukumi io_uring). Pievienotā iespēja ir līdzīga sistēmas izsaukumu filtru funkcijai. Filtri var tikt piesaistīti konkrētiem uzdevumiem, un tie tiek mantoti, veidojot citus procesus pēc fork() izsaukuma. Ja aktīvie filtri ir pieejami, pievienojamie filtri var tikai noteikt papildu ierobežojumus, nevis atslēgt esošos. Ieviestā iespēja ļaus bloķēt sistēmas izsaukumu filtrēšanas apietošanu sandbox vidē, balstoties uz līdzīgu operāciju, kas tiek veikta, nevis sistēmas izsaukumus, nodrošinot io_uring.
- SELinux ir pievienota piekļuves kontroles iespēja BPF tokeniem, kas ļauj nepārvaldietajiem procesiem veikt dažas privileģētas darbības ar BPF, piemēram, ielādēt BPF programmas kodolā un izveidot map struktūras.
- Pievienota ML-DSA (CRYSTALS-Dilithium) digitālo parakstu veidošanas algoritma atbalsts, kas balstīts uz režģa teoriju un ir izturīgs pret kvantu datora uzbrukumiem. Nodrošināta iespēja izmantot ML-DSA kodola moduļu autentifikācijai.
- Noņemta iespēja izmantot digitālo parakstu veidošanas shēmas ar SHA-1 algoritmu kodola moduļu parakstīšanai (atbalsts parakstītu moduļu ielādēšanai saglabāts).
- NETFILTER_PKT audita ierakstā pievienoti lauki 'sport' un 'dport', lai pārbaudītu tīkla portu numurus, nevis tikai. IP adreses.
- RISC-V arhitektūras sistēmām ieviests Zicfiss un Zicfilp paplašinājumu atbalsts, kas nodrošina aparatūras iespējas CFI (Control Flow Integrity) aizsardzības aplikācijām, izslēdzot normāla instrukciju izpildes secību kontrolējošo plūsmu ekspluatācijas rezultātā.
- Hipervizorā KVM Ieviesta iespēja nodot viesu sistēmām informāciju par procesora ERAPS (Enhanced Return Address Predictor Security) paplašinājuma atbalstu, ļaujot izvairīties no dažām CPU stāvokļa atiestatīšanas operācijām, atgriežot kontroli mātsaimniecības sistēmai. Turklāt pievienots aprīkojuma piesaistes atbalsts viesu sistēmām veiktspējas uzraudzībai (PMU, Performance Monitoring Unit), kas ļauj paaugstināt profilēšanas precizitāti salīdzinājumā ar emulētiem PMU.
- Hyper-V hipervizora draiverī pievienots debugfs interfeisa atbalsts hipervizora darbības statistikas skatīšanai.
- Tīkla subsistēma
- Pēc noklusējuma ir aktivizēta paplašinājuma AccECN (Precīzā eksplicitā sastrēguma paziņojums) funkcionalitāte, kas īsteno uzlabotu ECN paplašinājuma variantu, ļaujot resursdatoriem, gadījumā ja ir noslodze, marķēt IP paketes, nevis tās noraidīt, tādējādi sniedzot iespēju noteikt sākotnējā sastrēguma posma rašanos sakaru kanālos bez paketes zuduma. Oriģinālajam ECN paplašinājumam ir ierobežojums, kas ļauj nosūtīt tikai vienu noslodzes signālu vienā TCP pieņemšanas un nosūtīšanas ciklā (RTT, Round-Trip Time, pieprasījuma nosūtīšana un atbildes saņemšana). AccECN noņem šo ierobežojumu un ļauj saņēmējam nosūtīt sūtītājam vairāk nekā vienu noslodzes etiķeti TCP paketes virsrakstā. Noslodzes kontroles algoritmi var izmantot saņemto informāciju, lai precīzāk reaģētu uz noslodzēm un nesamazinātu paketes nosūtīšanas intensitāti, ja rodas neliela noslode.
- Tīkla rindu pārvaldības algoritmā Cake ir iekļauta iespēja apstrādāt vairākas rindas, lai sadalītu slodzi uz vairākiem CPU kodoliem. Algoritms CAKE tiek izmantots, lai samazinātu starpbuferizācijas ietekmi uz paketināšanu pie robežiekārtām un mērķē uz maksimālas caurlaidspējas un minimālu aizkaves līmeni, pat lēnos sakaru kanālos.
- VSOCK saskarnēm, kas tiek izmantotas mijiedarbībā ar virtuālajām mašīnām, ir pievienota atbalsta tīklu nosacījumu (network namespace) izmantošanai.
- Tika pievienota sākotnējā WiFi 8 (802.11bn, Ultra High Reliability WiFi) standarta realizācija.
- Novērtējumi ir optimizēti, palielinot ienākošo UDP paketu apstrādes veiktspēju par 12% veicot stresa testus 100 gigabitu tīklā.
- Aprīkojums
- AMDGPU draiverī ir ieviests atbalsts IP blokiem, 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ī ir pievienots sākotnējais atbalsts displeja IP blokam Xe3p_LPD, kas tiek izmantots Intel Nova Lake-P mikroprocesoros.
- Turpinātas darbības pie drm draivera (Direct Rendering Manager) Xe GPU ar Intel Xe arhitektūru, kas tiek izmantota Intel Arc grafiskajās kartēs un integrētajā grafikā, sākot no Tiger Lake procesoriem. Pievienots Multi Queue režīms. Pievienoti komponenti, kas nepieciešami GPU sasalšanas diagnozei Mesa. Pievienota MERT mehānisma atbalsts GPU atmiņas piekļuves pārvaldīšanai.
- Turpināta Nova draivera komponentu integrācija NVIDIA GPU, kas aprīkoti ar GSP programmām, kuras tiek izmantotas kopš NVIDIA GeForce RTX 2000 sērijas, pamatojoties uz Turing mikroarhitektūru. Draiveris ir uzrakstīts valodā Rust. Jaunajā versijā ir sagatavota atbalstam GPU, kas pamatos Turing mikroarhitektūru, un veiktas dažādas iekšējās izmaiņas.
- Pievienots atbalsts kontrolieriem un perifērijas ierīcēm ar daudzkārša SPI (Serial Peripheral Interface) interfeisu, kas ļauj pārsūtīt datus vairākos paralēlos straumēs.
- Pievienots draiveris kombinētajiem Type-C savienotājiem, kas tiek izmantoti Apple Silicon procesoru ierīcēs un apvieno USB3, DP-AltMode un Thunderbolt/USB4 interfeisus.
- Pievienots atbalsts Tegra238 čipu, Minisforum V3 SE, iBasso DC04U, Intel Nova Lake, Nova Lake S un Focusrite Forte skaņas apakšsistē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ā Dienvidamerikas Free Software Foundation izveidoja pilnīgi brīvo kodolu versiju 7.0 - Linux-libre 7.0-gnu, kas ir attīrīts no programmām un draiveriem, kas satur nesaistītus komponentus vai koda fragmentus, kuru lietošanas ierobežojumi ir noteikti ražotāja. Versijā 7.0 veikta attīrīšana no iwlwifi draivera blobiem. Atjaunota attīrīšanas kods amdgpu, adreno, TI PRUeth, air_en8811h, ath12k, TI VPE, rtw8852b, rt1320, rt5575 SPI, tas2783, Intel catpt draiveros. Veikta blobu nosaukumu attīrīšana dts failos (devicetree) ARM čipiem.
Avots: opennet.lv
