Pēc divu mēnešu izstrādes Linus Torvalds paziņoja par Linux 6.11 kodola izlaidumu. Starp redzamākajām izmaiņām ir: atbalsts atomiskām rakstīšanas operācijām bloklīmenī, bind() un listen() operāciju atbalsts io_uring, jauns programmatūras ierakstu apstrādātāju bloķēšanas mehānisms, iespēja rakstīt atspoguļotus izpildāmos failus atmiņā, atbalsts blokiekārtu draiveru rakstīšanai valodā Rust, optimizācija getrandom() izsaukumam, jauna AES-GCM īstenošana.
Jaunajā versijā ir 15130 labojumu no 2078 izstrādātājiem, korpusa izmērs ir 85 MB (izmaiņas skāra 13282 failus, pievienoti 985857 koda rindiņas, dzēstas 268915 rindiņas). Iepriekšējā izlaidumā bija 14564 labojumu no 1989 izstrādātājiem, korpusa izmērs bija 41 MB (divas reizes mazāk nekā 6.11 kodola korpuss). Aptuveni 46% no visām izmaiņām, kas ietvertas 6.11, saistītas ar ierīču draiveriem, aptuveni 17% izmaiņu attiecas uz aparatūras arhitektūrām specifisku kodu atjauninājumiem, 10% ir saistīti ar tīkla stāvvadu, 5% - ar failu sistēmām un 3% - ar kodola iekšējām apakšsistēmām.
Galvenās inovācijas kodolā 6.11:
- Disku apakšsistēma, I/O un failu sistēmas
- Ievieš atbalstu atomiskām rakstīšanas operācijām bloklīmenī, kurās uz glabāšanas ierīci tiek ierakstīta vai nu visa norādītā bloku grupa, vai neviens no blokiem, nodrošinot aizsardzību pret situācijām, kad pēc aparatūras kļūmes ieraksta tikai daļu bloku, bet citā daļā paliek vecā informācija. Lai ieslēgtu atomiskā rakstīšanas režīma atbalstu pwritev() sistēmas izsaukumā, ir pievienots karogs RWF_ATOMIC. Informāciju par atomiskās rakstīšanas atbalstu (atomic_write_unit_min, atomic_write_unit_max un atomic_write_segments_max) attiecībā uz atsevišķiem failiem var iegūt, izmantojot funkciju statx().
- Tiek nodrošināts atbalsts rakstīšanai izpildāmos failos, kas saistīti ar darbojošiem procesiem. Agrāk, tāpat kā citās Unix līdzīgās sistēmās, kodols izmeta kļūdu, mēģinot rakstīt izpildāmā failā palaižamā procesa laikā. Šis ierobežojums ir noņemts, jo tam nav praktiska jēga.
- Ievieša iespēju izstrādāt blokiekārtu draiverus valodā Rust. Par piemēru kodolā ir pievienots rnull draiveris, kas ir analogs draiverim null_blk, kas rakstīts valodā Rust.
- Btrfs failu sistēmā montēšanas opcijā «rescue=» ir ieviesta jaunu režīmu «ignoremetacsums» un «ignoresuperflags» atbalsts, ko var izmantot, lai pārvietotu dažas pārbaudes lietotāja telpā, atjaunojot failu sistēmu pēc avārijas. Bloku grupu dinamikas atgriešanas operācija ir pārbūvēta, lai novērstu brīvas vietas trūkumu, ja failu sistēma nav pilnībā aizpildīta.
- Ntfs3 failu sistēmā ir ieviests atribūtu «compressed» un «immutable» atbalsts, kas nosaka saspiestus un nemaināmus failus.
- F2FS un Ext4 failu sistēmā failu nosaukumu apstrāde bez simbolu reģistra ievērošanas (casefold) ir atvieglota, izmantojot nosaukumu glabāšanu qstr virknēs bez liekām reģistra pārveidošanām.
- Ext4 failu sistēmā jbd2_transaction_committed funkcijas īstenojums ir optimizēts, lai uzlabotu veiktspēju ļoti ātrajos krātuvēs (testos tika novērots līdz 20% operāciju skaita pieaugums sekundē).
- Sistēmas izsaukumā statx() ir atļauta NULL rādītāja nodošana, nevis tukšas virknes ar faila ceļu, ja ir iestatīts AT_EMPTY_PATH karogs.
- Sistēmas izsaukumā open_by_handle_at() ir mīkstinātas piekļuves tiesību pārbaudes failam, ja nav CAP_DAC_READ_SEARCH pilnvaru, lai meklētu sākumtelpā. Agrāk CAP_DAC_READ_SEARCH pilnvaru pieprasījums sākumtelpā liedza izmantot open_by_handle_at() sistēmas izsaukumu konteineros.
- Ir paplašinātas sistēmas izsaukumu listmount() un statmount() iespējas. listmount() ir pievienots LISTMOUNT_REVERSE karogs, lai attēlotu montēšanas punktu tabulas saturu apgrieztā secībā (jaunākie ieraksti augšā). statmount() ir ieviesta opciju izvadīšana, kas iestatīta attiecībā uz failu sistēmas montēšanu. Abos sistēmas izsaukumos ir atļauta darbība, ja piekļuve sākumtelpai ir liegta (ja ir tikai piekļuve vietējai vai ārējai telpai).
- Bcachefs failu sistēmā ir ieviests automātiska caurspīdīga problemātisko datu atjaunošanas atbalsts, izmantojot kļūdu atjaunošanas kodus — ja lasīšanas laikā rodas ievades/izvades kļūda vai tiek aprēķināta kontroles summa, problemātiskais datu bloks automātiski tiek pārrakstīts, ja ir pieejama liekā kopija tā atjaunošanai.
- Atmiņa un sistēmas pakalpojumi
- Iekļautajos labojumos ir iekļauta jauna mehānisma realizācija programmatūras pārtraukumu apstrādātāju bloķēšanai (BH, bottom-half), kas nodrošina izmantoto datu struktūru bloķēšanu, taču neizraisa saistītā koda paralēlā izpildījuma bloķēšanu. Atzīmēts, ka šis uzlabojums ne tikai samazina aiztures reālā laika režīmā strādājošām kodolam, bet arī palielina parasto kodolu veiktspēju (piemēram, dažām slodzēm novērota tīkla apakšsistēmas veiktspējas uzlabošana par 14,5%).
- Asinhronā ievades/izvades io_uring apakšsistēmā ir pievienota atbalsta operāciju funkciju bind() un listen() realizēšanai, kas tiek izmantotas, lai izveidotu pieņemšanas savienojumus tīkla soketos.
- Ir pievienots ioctl-operāciju komplekts pseido-FS NSFS (NameSpace FS), kas tiek izmantota darbam ar nosaukumu telpām. Jauni ioctl ļauj pārvērst procesu identifikatorus un vītņu grupu identifikatorus starp dažādām procesa identifikatoru (PID namespace) telpām. Līdzīgi ioctl, kas ļauj noteikt procesu failu aprakstošus identifikatorus atsevišķās telpās, pamatojoties uz pidfd identifikatoriem, arī ir pievienoti pseido-FS pidfd.
- BPF programmām pievienots atbalsts jaunam iteraatoram, kas darbojas ar bitu maskām un ko var izmantot, piemēram, lai pārbaudītu atsevišķus bitus atmiņas apgabalos, piemēram, cpumask. Ir ieviests mehānisms, lai nosūtītu paziņojumus lietotāja telpas procesiem par noņemšanu (detach/unregister) objektiem struct_ops. Ir paplašināts veidu klāsts, ko var izmantot masīvos (piemēram, tagad var deklarēt masīvus ar elementiem, kuriem ir kptr, bpf_rb_root un bpf_list_head tipi). Ieteikts uzticamāks Split BTF (BPF Type Format) mehānisms, ko izmanto veidu pārbaudei BPF pseido-kodā.
- Ir pievienota apakšsistēma, kas ļauj organizēt strāvas padevi ierīcēm noteiktā secībā, gadījumā, ja viena ierīce jāaktivizē agrāk nekā otra (piemēram, aktivējot bezvadu mikroshēmas Qualcomm platformās).
- Ir pievienots modulis «Sloppy logic analyzer», kas ļauj izveidot vienkāršus signālu loģiskos analizatorus, kas izmanto GPIO un darbojas uz atsevišķa CPU kodola.
- Pievienota atbalsts izpildes laika konstantiem, kuras var izmantot kā aizvietotājus vietā, kur vienreiz inicializētas mainīgās. Piemēram, izpildes laika konstantes var tikt izmantotas vietā, kur mainīgie uzglabā rādītāju un izmēru dentry kešā. Šie mainīgie tiek norādīti ielādēšanas laikā un pēc tam nekad netiek mainīti. Ideja ir tieši ievietot šo līdzīgo mainīgo vērtības instrukcijās kodā, izslēdzot izmaksas, kas saistītas ar rādītāju manipulācijām.
- Turpinās izmaiņu pārnešana no Rust-for-Linux zara, kas saistītas ar Rust valodas izmantošanu kā otro valodu draiveru un kodola moduļu izstrādē (Rust atbalsts pēc noklusējuma nav aktīvs un neietekmē Rust iekļaušanu obligātajās kodola būvēs). Pievienots atbalsts Rust 1.80 (kā minimālā versija joprojām tiek atbalstīta Rust 1.78). Papildus iepriekš norādītajiem rīkiem blokā iekārtu draiveru izstrādei jaunajā versijā pievienotas abstrakcijas, lai ielādētu ieslēgumus, piekļūtu lietotāja telpai (uaccess) un strādātu ar
- X86-64 arhitektūrai ir ieviesta jauna sistēmas izsaukuma funkcija uretprobe(), optimizējot uretprobe izsaukuma mehānisma darbību, kas ļauj izsekot vērtības, ko funkcijas atgriež lietotāja telpas lietojumprogrammās.
- Tiek pievienoti kodola komandrindas parametri: 'reserve_mem' rezerves nosaukumam atmiņas laukā ielādēšanas laikā un 'ramoops.mem_name' izmantošanai pstore atmiņas laukā, kas izveidota, izmantojot reserve_mem.
- Cgroup bāzes atmiņas kontrolera failā memory.reclaim, caur kuru tiek noteikti atmiņas atsavināšanas iestatījumi, pievienota parametrs 'swappiness', kas ļauj mainīt līdzsvaru starp anonīmo atmiņas lapu izvietošanu izsistē un atbrīvošanu no atmiņas lapām, kuras tiek izmantotas failu kešā.
- Tiek pievienots ioctl-interfeiss PROCMAP_QUERY, lai efektīvāk atrastu virtuālās atmiņas zonas (Virtual Memory Area) failā /proc/PID/maps.
- Sistēmas izsaukuma mmap() funkcijā pievienota karoga MAP_DROPPABLE, lai pieprasītu atmiņu, kas nekad netiks nodota pagaidu failu sistēmai un, ja nav pietiekami daudz atmiņas, var tikt dzēsta.
- ARM64 arhitektūrai ir ieviests atbalsts karstai pievienošanai (pārslēgšanās uz online/offline režīmiem) fiziskajiem un virtuālajiem CPU sistēmās ar ACPI.
- RISC-V arhitektūrai ir nodrošināta atbalsta iespēja pievienot atmiņu, kā arī pievienots GCC spraudņa STACKLEAK atbalsts (veic visos kaudzē saglabāto mainīgo inicializāciju, lai novērstu informācijas noplūdi no kodola caur neinitializētām mainīgajām, kuras var saturēt iepriekš saglabātos datus kaudzē).
- Tika izņemts EFI viltotā atmiņas kartes mehānisms (fake EFI memory map) ielādes posmā. Šis mehānisms nebija praktiski izmantots un traucēja attīstībai saistībā ar konfidenciālo izpildi. virtuālo mašīnu.
- Atbalsts PowerPC 40x platformai ir pārtraukts.
- Palielinātas GNU Make versijas prasības — kodola izveidei nepieciešama vismaz 2013. gadā publicētā GNU Make versija.
- Virtualizācija un drošība
- Ir integrēti labojumi, kas būtiski (līdz 15 reizēm) paātrina nejaušu skaitļu iegūšanu, izmantojot sistēmas izsaukumu getrandom(). Optimizācija balstīta uz vDSO (virtuālā dinamiskā koplietojamā objekta) mehānisma izmantošanu, kas ļauj novietot sistēmas izsaukuma apstrādātāju no kodola lietotāja telpā un izvairīties no konteksta pārslēgšanas. Sistēmas izsaukuma realizācijas ielāde procesā notiek tieši no kodola.
- x86-64 sistēmām ir iekļauta jauna AES-GCM šifrēšanas algoritma realizācija, kas atbalsta vektoru instrukciju VAES, VPCLMULQDQ un AVX512/AVX10 izmantošanu, lai paātrinātu aprēķinus. Veiktajos testos veiktspējas pieaugums pēc pāriešanas uz jauno realizāciju sasniedz 156%. Assemblera realizācija AES-GCM ir pilnībā pārrakstīta, ņemot vērā korektumu, veiktspēju, izmēru un izsmeļošu koda dokumentāciju.
- Ir realizēta iespēja darbināt kodolu kā viesu sistēmu virtualizētās vidēs, kas izmanto AMD SEV-SNP procesora paplašinājumu (Secure Nested Paging), kas paredzēts drošai darbībai ar iekļautajām atmiņas lapu tabulām. Papildu resursu piekļuves izolācijai no virtuālajām mašīnām var izmantot SVSM (Linux Secure VM Service Module) moduli. KVM Ir pievienots sākotnējais atbalsts viesu sistēmu palaišanai, kuras ir aizsargātas ar AMD SEV-SNP.
- Ir pievienots atsevišķs bucket slab allocators, ko var ieslēgt, izmantojot CONFIG_SLAB_BUCKETS parametru, nodrošinot aizsardzību pret uzbrukumiem, izmantojot „heap spraying” tehniku.
- KVM hipervizorā ir pievienots ioctl izsaukums, lai iepriekšējā veidā rezervētu atmiņu viesu sistēmai līdz tās faktiskai palaišanai.
- Tīkla subsistēma
- Pievienots sysctl parametrs net.tcp_rto_min_us, ar kuru var iestatīt minimālo atkārtotas nosūtīšanas taimeri (retransmission timeout) TCP soketiem.
- Et utilities ethtool ir pievienota iespēja precīzi konfigurēt pārtraukumu apstrādātājus tīkla saskarnēm, kas izmanto Net DIM interfeisu.
- Aprīkojums
- AMDGPU draiverī ir iekļauta sākotnējā atbalsta līmeņa atbalsts AMD RDNA4 GPU ('GFX12'). Pievienots atbalsts DCN 4.0.x, GC 12.0, GMC 12.0, SDMA 7.0, MES12 un MMHUB 4.1 tehnoloģijām.
- Turpināts darbs pie Intel Xe arhitektūras bāzes GPU drm (Direct Rendering Manager) draivera, kas tiek izmantots Intel Arc grafikas kartēs un integrētajā grafikā, sākot ar Tiger Lake procesoriem. Uzlabota atbalsta līmeņa GPU, kas balstīts uz Battlemage, Arrow Lake un Lunar Lake mikroarhitektūrām.
- DRM (Direct Rendering Manager) apakšsistēmā ir pārstrukturēts monitora EDID (Extended Display Identification Data) parametru apstrādātājs.
- i915 draiverī ir pievienots Battlemage Xe2 GPU atbalsts un pēc noklusējuma aktivizēts CMRR (Content Match Refresh Rate) režīms.
- msm DRM draiverī (Qualcomm Adreno GPU) ir pievienots SM7150 platformas un X185, a505 GPU atbalsts.
- Pievienots atbalsts ekrānu paneļiem Lincoln Tech Sol LCD185-101CT, Microtips Technology 13-101HIEBCAF0-C, Microtips Technology MF-103HIEB0GA0, BOE nv110wum-l60, IVO t109nw41, WL-355608-A8, PrimeView PM070WL4, Lincoln Technologies LCD197, Ortustech COM35H3P70ULC, AUO G104STN01, K&d kd101ne3-40ti.
- Skaņas apakšsistēmā ir pievienots atbalsts Intel Panther Lake, Asahi Kasei AK4619, Cirrus Logic CS530x, Everest Semiconductors ES8311, NXP i.MX95, LPC32xx, Qualcomm LPASS v2.5, WCD937x, Realtek RT1318, RT1320 un Texas Instruments PCM5242 mikroshēmām un kodekiem.
- Finišēti pēdējie uzlabojumi, kas nodrošina atbalstu ARM SoC Snapdragon X Elite, kurā izmanto Qualcomm Oryon 12 kodolu CPU un Qualcomm Adreno GPU. Mikroshēma ir paredzēta lietošanai klēpjdatoros un personālajos datoros, un tā pārspēj daudzas Apple M3 un Intel Core Ultra 155H veiktspējas pārbaudes. Jauninājumi kodā 6.11 ir saistīti ar Adreno X1-85 GPU atbalstu un jaudas pārvaldību. Tiek paziņots, ka no Snapdragon X Elite SoC bāzes ierīcēm tiks atbalstīti ASUS Vivobook S15 un Lenovo Yoga Slim7x klēpjdatori.
Tajā pašā laikā Latīņamerikas Brīvā programmatūru fonda izveidotais 6.11 versijas pilnīgi brīvais kodols — Linux-libre 6.10-gnu — ir attīrīts no iekārtu un draiveru elementiem, kas satur brīvprātīgus komponentus vai koda fragmentus, kuru lietojums ir ierobežots ražotāja. 6.11 izlaidumā ir atjaunināts kods bloķēšanas tīrīšanai draiveros mdgpu, adreno, vgxy61, atomisp, btnxpuart, prueth un tas2781. Jauniem draiveriem amdgpu isp, tn40, rtl8192du, cs40l50, rt1320 un pcie-rcar-gen4 ir veikta tīrīšana. Ir veikta bloķēšanas nosaukumu tīrīšana dts-failos (devicetree) arhitektūrai Aarch64. Ir pievienota brīva brīdinājumu un pieprasījumu versija (nowait-nowarn) primitīviem iekārtu ielādei. Ir pievienots kods primitīvu ielādēšanas noteikšanai koda valodā Rust.
Avots: opennet.lv
