Pēc diviem mēnešiem izstrādes Linuss Torvalds iepazīstināja ar Linux 6.15 kodola izlaišanu. Starp vispamanāmākajām izmaiņām ir: audita mehānisms Landlock, atmiņas kartēšanas fiksēšanas režīms, fwctl apakšsistēma, Nova draiveris NVIDIA GPU, viesējo sistēmu realizācija Hyper-V hipervizoram, zonēto krātuves ierīču atbalsts XFS, tīkla apakšsistēmas optimizācija, scrub-pārbaude Bcachefs, iespēja kontrolēt operācijas caur io_uring.
Jaunajā versijā ir pieņemti 15945 labojumi no 2154 izstrādātājiem, pēdējā ielādes izmērs ir 59 MB (izmaiņas skāra 13596 failus, pievienojot 739608 kodu rindkopas, izdzēšot 312168 rindkopas). Iepriekšējā laidiena rezultātā bija 12115 labojumi no 1984 izstrādātājiem, pēdējā ielādes izmērs ir 39 MB. Aptuveni 41% no visām izmaiņām, kas ietvertas 6.15, ir saistītas ar ierīču draiveriem, apmēram 16% izmaiņu attiecas uz aparatūras arhitektūras specifiskā koda atjaunināšanu, 13% saistītas ar tīkla steku, 5% — ar failu sistēmām un 4% — ar kodola iekšējām apakšsistēmām.
Galvenās jaunās iezīmes kodolā 6.15:
- Disku apakšsistēma, I/O un failu sistēmas
- Fanotify mehānismā pievienota iespēja izsekot montēšanas un demontēšanas notikumus.
- XFS pievienota zonēto krātuves ierīču atbalsts (blokgrupu vai sektoru sadalījums zonās, kurā atļauts tikai secīgi pievienot datus un atjaunināt visu blokgrupu). Pievienots rwf_dontcache karogs, lai izslēgtu kešatmiņu rakstīšanas procesā. Realizēta iespēja atomāri rakstīt vairākus datos blokus.
- Btrfs ieviesta iespēja norādīt negatīvos zstd kompresijas līmeņus (no -15 līdz -1, piemēram, „compress=zstd:-5”) montēšanas procesā, kas nodrošina ātrāku darbu, cena samazinot kompresijas efektivitāti. Uzlabota failu ceļu kešatmiņa (izpildes mēģinājumā „send” operācija paātrinājās par 30%). Pievienots atbalsts 2KB blokiem.
- EXT4 paaugstināta veiktspēja, atjaunojot žurnālu ar ļoti lielu atsaukto ierakstu skaitu (slodze, kas raksturīga Lustre failu sistēmām). Realizētas lineārā meklēšana „dentry” ierakstos (iekšējā katalogu elementu attēlošana), kas atrisina piekļuves problēmas noteiktiem failiem nejūtīgā režīmā. Sakārtota montēšanas opcijas „errors=remount-ro” darbība. Paaugstināta izturība bojātu FAILS apstrādē.
- F2FS īstenots ioctl, lai iegūtu informāciju par ievades/izvades operācijas prioritāti dotajam failam. Veikts darbs, pārejot uz lapu foliantiem (page folios).
- Bcachefs pievienots «scrub» režīms, kurā tiek pārbaudīta lasīšanas precizitāte visiem datiem un metadatiem no failu sistēmas. Atklājot kļūdas, tiek uzsākta atjaunošanas procedūra. Bcachefs arī pievienota atbalsts failu sistēmām, kuru bloka izmērs ir lielāks par atmiņas lapas izmēru. Stabilizēts Bcachefs diska struktūru formāts (turpmākas formāta izmaiņas tiks īstenotas kā opcionalitātes).
- EROFS pievienots atbalsts 48 bitu bloku adresēšanai.
- FUSE apakšsistēmā ieviesti sysctl default_request_timeout un max_request_timeout, lai iestatītu pieprasījumu izpildes taimerus, kas ļauj uzraudzīt FUSE komponentu karšanu, kas darbojas lietotāja vidē. Maksimālais failu nosaukumu garums FUSE palielināts līdz 1024 simboliem.
- Sistēmiskajā izsaukumā statmount() pievienota iespēja iegūt informāciju par lietotāju identifikatoru kartēšanu pievienotajās failu sistēmās, kas tiek izmantota, lai sasaistītu konkrēta lietotāja failus pievienotajā svešā nodalījumā ar citu lietotāju pašreizējā sistēmā.
- Realizēta iespēja izveidot pieslēguma punktu ar citu lietotāju identifikatoru kartējumu nekā avota pieslēgtā nodalījuma kartējums.
- Monta pārvaldības API izmaiņas, kas atvieglo sarežģītu failu sistēmu hierarhiju veidošanu bez atsevišķu failu sistēmu daļu atklāšanas, kuras jātur slēptas.
- Bloku ierīču apakšsistēmā pievienota atbalsts aparatūras ierīcēm, kas nodrošina šifrēšanas atslēgu aizsardzību.
- SMB failu sistēmā īstenota opcija is_network_name_deleted un pēc noklusējuma ieslēgts režīms smb_server_kerberos5.
- OverlayFS failu sistēmā pievienota montāžas opcija «override_creds», kuras norādīšana ļauj piekļūt apakšējām krātuves kārtām, izmantojot aicinātā lietotāja akreditīvus, nevis montējušā lietotāja akreditīvus. Piemēram, šī izmaiņa ļauj montējot OverlayFS pieprasīt lietotāju ar CAP_SYS_ADMIN pilnvarām, taču izmantot failu sistēmu bez šīs privilēģijas.
- ExFAT faila dzēšanas operācijas ir paātrinātas. Vietā, lai nosūtītu «discard» pieprasījumus katram atbrīvotajam klasterim atsevišķi, vadītājs tagad apvieno pieprasījumus. Veiktajā testā faila dzēšanas laiks, kura izmērs ir 80 GB, ir samazinājies no 286 sekundēm līdz 1.6 sekundēm.
- Visas pseido-FS, kā arī FS EXT2 ir pārgājušas uz jauno nodalījumu montāžas API izmantošanu.
- Kods, kas atbalsta failu sistēmas SYSV (SystemV/386, Xenix un Coherent), ir noņemts, jo 2023. gadā tas ir atzīts par neatbalstītu (orphaned).
- Atmiņa un sistēmas pakalpojumi
- Nepieciešamā versija GCC kodu izveidei ir paaugstināta līdz 8.1, bet Clang - līdz 15.0.0.
- Pievienota fwctl (Firmware Control) apakšsistēma, kas nodrošina API drošai programmatūras pārvaldībai un apstrādātāju izpildei programmatūru no lietotāja telpas. Uz fwctl pamata ir izstrādāti ierīču CXL (Compute Express Link), Ethernet adapteru Mellanox ConnectX (mlx5) un AMD/Pensando pakalpojumu kartēm.
- Paplašinātas pidfd mehānisma iespējas, kas ļauj izmantot identifikatorus, kas saistīti ar konkrētiem procesiem un, atšķirībā no pid, nav atkārtoti piešķirami. Ir nodrošināta iespēja iegūt procesa pabeigšanas stāvokļa datus, identificējot tos caur pidfd pēc tam, kad vecāku process ir saņēmis apstiprinājumu par meitas procesa pabeigšanu (reaped) un tā resursi ir atbrīvoti. Sistēmas izsaukumos ir pievienots PIDFD_SELF karogs, ar kuru process var atsaukties uz sevi.
- RISC-V arhitektūrai ir ieviesta atbalsta paplašinājumu BFloat16, Zaamo (atomiskās operācijas atmiņā), Zalrsc (Load-Reserved/Store-conditional) un ZBKB (bitu operācijas kriptogrāfijai).
- Izsekošanas laikā ir nodrošināta iespēja saglabāt izsaukto funkciju argumentus un to attēlošanu izsekošanas žurnālos.
- Asinhronā ievades/izvades sistēmā io_uring ir pievienots atbalsts informācijas par epoll notikumiem lasīšanai. Io_uring izmantošana epoll notikumu apstrādei ļauj samazināt konteksta maiņas skaitu un sniedz iespēju apstrādāt vairākus epoll notikumus vienlaikus.
- EBPF apakšsistēmā uzlabota programmu ar cikliem verifikācija. Pievienotas jaunas instrukcijas «timed_may_goto», «load-acquire» un «store-release». Iespējams mainīt paplašinātos failu atribūtus no BPF programmām. Pievienota funkcija try_alloc_pages(), kas ir paredzēta atmiņas piešķiršanai ar augstu neveiksmju iespējamību (izpildot BPF programmas ierobežotos kontekstos).
Ieviests jauns bloķēšanas primitīvs — rqspinlock (Resilient Queued Spin Lock), kas izpildes laikā identificē situācijas, kas var novest pie savstarpējām bloķēšanām. Jaunais primitīvs ļauj ielādēt BPF programmas, kurām verifikators negarantēja darbības pareizību ar bloķēšanām.
- Significantly increased the reliability of allocating large memory pages (huge-page).
- Nodrošināta būtiska CRC64 kontroles summu aprēķina paātrināšana x86 sistēmās. Starp citu, paātrināšanai izmantotas jaunas vektora instrukcijas no AVX-512 kopuma. Dažās situācijās veiktspēja pieaugusi simts reizes.
- Turpināta izmaiņu pāreja no Rust-for-Linux filiāles, kas saistītas ar Rust valodas izmantošanu kā otro valodu vadītāju un kodolu moduļu izstrādē (Rust atbalsts nav aktīvs pēc noklusējuma un nenoved pie Rust iekļaušanas obligātajās atkarībās kodolam). Nodarīt iespējams kodu izsaukt makro «#[kunit_tests()]» vienību testu izpildei. Pievienots atbalsts ARMv7 arhitektūrai. Realizēti dma un hrtimer moduļi ar Rust apvalkiem DMA (pievienots Linusa apietotā uzturētāja, kurš pēc tam atkāpās no amata) un augsta precizitātes taimeriem. Paplašināti moduļi ‘list’, ‘str’, ‘sync’, ‘error’ un ‘alloc’. Pievienots jauns sintaksis ‘&raw’ (raw_ref_op).
- Perf apakšsistēmā ieviesta iespēja profilēt aizkavēšanos, izmantojot uzdevumu plānotāja informāciju.
- Pievienots kodola komandrindas parametrs «traceoff_after_boot», kas izslēdz izsekošanu pēc tam, kad kodols ir ielādēts un uzsākts init process. Parametrs var tikt izmantots problēmu diagnostikā, kas saistīta ar ielādi, nodrošinot, ka ielādes laikā uzkrātie izsekošanas dati netiks pārrakstīti.
- Atbalsts 32 bitu x86 sistēmām ar vairāk nekā 8 CPU un 4 GB RAM ir pārtraukts. Šāda veida aparatūra jau sen tiek pārtraukta, un sistēmas, kurām nepieciešami šādi resursi, ir pārnestas uz 64 bitu CPU.
- Ir veiktas izmaiņas POSIX taimeru realizācijā, ļaujot CRIU (Checkpoint/Restore in Userspace) rīkiem saglabāt un atjaunot taimeru identifikatorus.
- Virtualizācija un drošība
- Tika pievienota iespēja izmantot Linux kā saknes vidi (Dom0, root partition) Hyper-V (Microsoft Hypervisor) hipervizoram. Hostinga vide ir atbildīga par hipervizora pārvaldību, viesu sistēmu palaišanas organizēšanu, resursu piešķiršanu un mijiedarbības nodrošināšanu ar aparatūru. virtuālo mašīnu Hipervizora Hyper-V pārvaldību Linux vidē veic ierīce /dev/mshv.
- Landlock modulī, kas nodrošina neprivileģētām programmām līdzekļus, lai ierobežotu Linux kodola objektu izmantošanu (failu hierarhijas, tīkla soketi, ioctl utt.), ir pievienots audita mehānisms. Audits ļauj detalizēti novērtēt piekļuves bloķēšanas iemeslus, kas tiek veikti, izmantojot Landlock, kā arī saprast, kad un kura darbība tika bloķēta, kāpēc tika veikta bloķēšana un kurš noteikums darbojās.
- Ir pievienota iespēja LSM moduļos (Linux Security Modules) īstenot apstrādātājus, kas kontrolē piekļuves pieprasījumus uz asinkronā ievades/izvades io_uring sistēmu un ļauj bloķēt io_uring izmantošanu, lai apejot piekļuves ierobežojumus uz sistēmas izsaukumiem. Šāds apstrādātājs ir īstenots LSM modulī SELinux.
- SELinux ir īstenota iespēja piemērot politikas jebkura veida datiem, ko ielādē kodols, tostarp drošības politikas, drošības sertifikāti un firmware attēli.
- Ir pievienots daži atmiņas mapēšanas operāciju, ko veic kodols procesora adreses telpā, notikumu reverslāpēšanas režīms (seal). Reversālā lapēšana pārvērš mapējumu tikai lasāmā režīmā, un neļauj to mainīt, ja tiek izmantota ievainojamība. Šis efekts attiecas uz vDSO, vsyscall, vvar, sigpage un uprobes mapējumiem. Noklusējuma režīms ir izslēgts, jo tas var traucēt dažām lietojumprogrammām. Lai to aktivizētu, ir pievienota izstrādes konfigurācija CONFIG_MSEAL_SYSTEM_MAPPINGS.
- Tīkla subsistēma
- Turpināta darba izbeigšana starp tīkla steku un RTNL globālo bloķēšanu (rtnl_lock) un tās pārveidošana par bloķēšanām, kas saistītas ar konkrētiem tīkla nosaukumu telpām.
- Pievienota sākotnējā iespēja iegūt tīkla paketes caur io_uring, kopējot saturu tieši programmas atmiņā lietotāja telpā bez starpposma buferizācijas (zero-copy). Veiktie testi parādīja, ka izmaiņas ļāva viegli apstrādāt trafiku caur 200 gigabitu kanālu, izmantojot vienu CPU kodolu.
- Ieviesti sysctl tcp_rto_max_ms un TCP-pieslēgumu opcija TCP_RTO_MAX_MS, ar kuru var iestatīt maksimālo laiku starp paketu atkārtotajiem pārsūtījumiem.
- BPF pievienota sērija callback izsaukumu, lai iegūtu informāciju par laiku no dažādām tīkla staka vietām, ko var izmantot tīkla aiztures problēmu diagnostikai.
- Pievienotas tīkla operāciju veiktspējas optimizācijas:
- GRO (Generic Receive Offload) optimizācija, kas apvieno vairākus mazus paketus vienā lielā, tagad tiek izmantota, kad paketes apstrāde tiek pārsūtīta uz citu CPU (slodzes līdzsvarošanai) XDP (eXpress Data Path) subsistēmā, ļaujot apstrādāt paketes tīkla draivera līmenī pirms to nodošanas tīkla stakam. TCP plūsmu apstrādes veiktspējas pieaugums, izmantojot optimizāciju, var sasniegt divas reizes.
- Augstas noslodzes apstākļos connect() funkcijas veiktspēja ir palielināta līdz divreiz, nomainot spin-bloķēšanu ar RCU (Read-Copy-Update) sinhronizācijas mehānismu, meklējot ierakstus ar informāciju par savienojuma pusēm (avota un mērķa un portiem). Papildu veiktspējas pieaugumu par 229% nodrošināja optimizēta hashes. IP adreses MPTCP (Multipath TCP) realizācija ir paātrināta, paplašinot TCP protokolu, lai organizētu paketu piegādi caur vairākiem maršrutiem, izmantojot dažādus tīkla interfeisus, kas piesaistīti dažādiem IP adresēm. MPTCP vienas plūsmas režīmā ir paātrināta par 29%.
- Netfilter, ja ir pieslēgums, tika apturētas maršrutu meklēšanas operācijas FIB (Forwarding Information Base). Šī optimizācija palielināja veiktspēju uz 20%.
- UDP veiktspēja apstākļos flud (flood) ir palielināta par 10% izslēdzot liekās operācijas ar sk_tsflags struktūru paketu saņemšanas procesā.
- Pievienots protokola MCTP-over-USB realizācijas draiveris.
- Pievienots draiveris ar MCTP-over-USB protokola realizāciju.
- Aprīkojums
- Kodola ir iekļauta sākotnējā Nova vadītāja versija NVIDIA GPU, kas aprīkoti ar GSP mikroshēmām, kuras tiek izmantotas kopš NVIDIA GeForce RTX 2000 sērijas, kas balstīta uz Turing mikroarhitektūras. Vadītājs ir uzrakstīts Rust valodā. Pirmajā posmā ir pievienota tikai nova-core karkasa, kurā ir apmēram 400 koda rindu un kas realizē pamata abstrahēšanas līmeni pār softwaru GSP mikroshēmām. Nākamajā posmā plānots kodolā iekļaut DRM vadītāju nova-drm (Direct Rendering Manager) lietotāja telpas mijiedarbībai ar GPU, kā arī VFIO vadītāju ar vGPU pārvaldnieku, kas ļauj izmantot virtuālos NVIDIA GPU virtuālās sistēmās.
- Turpināta darba pie Xe drm-vadītāja (Direct Rendering Manager) Intel Xe arhitektūras GPU, kas tiek izmantoti Intel Arc grafiskajās kartēs un integrētajā grafikā, sākot ar Tiger Lake procesoriem. Ir pievienota SVM (Shared Virtual Memory) atbalsts, kas ir DRM ietvara komponents, kas pārvalda koplietošanai atvēlētu atmiņu starp CPU un GPU.
- I915 vadītājam ir pievienoti jaunu GPU identifikatori.
- Nouveau vadītājā ir pārstrādāts GSP RPC un integrēts drm_slave_encoder interfeiss.
- AMDGPU vadītājā ir ieviests DCN36 (Display Core Next) arhitektūras atbalsts. Ir iespējams noteikt savas spilgtuma līknes, kas tiek izmantotas displeja spilgtuma korekcijai.
- Adreno vadītājā ir pievienots Qualcomm Adreno 623 GPU atbalsts.
- Ir pievienots Apple Touch Bar skārienpanelu atbalsts.
- Ir pievienots otrās versijas eUSB2 (eUSB2V2 - Embedded USB2 Version 2.0) paplašinājuma atbalsts, kas ļauj samazināt barošanas spriegumu (līdz 1.2 voltiem) un uzlabot USB 2.0 veiktspēju. Datu pārraides ātrums eUSB2V2 var sasniegt 4.8 Gbit sekundē, kas ir 10 reizes ātrāk nekā parastie 480 Mbit sekundē, kas ir raksturīgi USB 2.0. eUSB2V2 ļaus klēpjdatoru ražotājiem aprīkot savus produktus ar augstas izšķirtspējas tīmekļa kamerām, turpinot izmantot Embedded USB2 autobusu to pieslēgšanai.
- Ir pievienots Intel Killer E5000 (RTL8126) Ethernet adapteru atbalsts.
- Ir pievienots atbalsts Visionox RM692E5, Rockchip w552793dba-v10, kingdisplay-kd110n11-51ie un starry-2082109qfh040022-50e ekrāna paneļiem.
- Ir pievienots Samsung Galaxy Book klēpjdatoru vadītājs.
- Ir pievienots Presonus Studio 1824c, Jabra Evolve 65 skaņas sistēmu atbalsts. Ir pievienots AMD ACP 7.x DSP moduļu, AWINC WM88166, Everest ES8388, Intel AVS PEAKVOL un GAIN atbalsts. Ir uzlabota skaņas atbalsts ASUS, HP un Lenovo klēpjdatoros.
- Pievienota ARM platformu, SoC un ierīču atbalsts: Arm Morello, AMD (Xilinx) Versal NET, Google Pixel Pro 6, NetCube Kumquat, MYIR Remi Pi, Huawei Matebook E Go, Milk-V Jupiter ST STM32MP2, Mediatek MT8370, Apple T2, Skov (i.MX8MP), EVK (i.MX95), Rockchip RK35xx, Allwinner A523, 11 Toradex plates, kas balstītas uz i.MX6.
Tajā pašā laikā Latīņamerikas Brīvā programmatūras fonds izstrādāja pilnīgi brīvā kodola variantu 6.15 — Linux-libre 6.15-gnu, kas attīrīts no elementiem, kas ietver slēgtos komponentus vai kodu fragmentus, kuru izmantošanu ierobežo ražotājs. Versijā 6.15 tiek neitralizēta bloku ielāde draiveros nova, Qualcomm iris v4l2, Airoha NPU, Tehuti Networks TN40xx 10G ethernet, Realtek 8814A wifi, Apple Silicon SoC skārienpanelim, Renesas UFS un aw88166 audio. Pārtraukta tīkla draivera Spider 1Gb ethernet attīrīšana, kas tika likvidēta no kodola sastāva. Izņemti norādes uz tivoizētām binārajām failiem. Ieviesta bloku ielāde no kodola, izmantojot Rust valodu.
Avots: opennet.lv
