Pēc divu mēnešu izstrādes Linus Torvalds prezentēja Linux 5.19 kodola izlaišanu. Starp ievērojamākajām izmaiņām ir: LoongArch procesoru arhitektūras atbalsts, «BIG TCP» ielāpu integrācija, «on-demand» režīms fscache, atbalsta kodu izslēgšana a.out formātam, ZSTD izmantošanas iespēja firrmwaru saspiešanai, interfeiss, lai pārvaldītu atmiņas izmešanu no lietotāja telpas, palielināta pseidoizlases skaitītāju drošība un veiktspēja, Intel IFS (In-Field Scan), AMD SEV-SNP (Secure Nested Paging), Intel TDX (Trusted Domain Extensions) un ARM SME (Scalable Matrix Extension) paplašinājumu atbalsts.
Paziņojumā Linus norādīja, ka, visticamāk, nākamajam kodola izlaidumam tiks piešķirts numurs 6.0, jo 5.x zarā ir uzkrājies pietiekami daudz izlaidumu, lai mainītu versijas numura pirmo skaitli. Numuru maiņa tiek veikta estētisku apsvērumu dēļ un ir formāls solis, kas novērš diskomfortu saistībā ar daudzajiem izlaidumiem sērijā.
Linus arī pieminēja, ka izlaiduma sagatavošanai izmantoja Apple klēpjdatoru ar ARM64 arhitektūru (Apple Silicon) un Linux vidi, kas balstīta uz Asahi Linux distribūciju. Tas nav Linus galvenais darbavietas dators, taču viņš izmantoja šo platformu, lai pārbaudītu tās piemērotību darbam pie kodola un lai pārliecinātos, ka varēs sagatavot kodola izlaidumus ceļojuma laikā, kamēr viņam ir viegls klēpjdators. Pirms tam Linus daudzus gadus bija izmantojis Apple iekārtas izstrādei — kādreiz viņš izmantoja datoru ar CPU ppc970 un Macbook Air klēpjdatoru.
Jaunajā versijā ir 16401 labojumi no 2190 izstrādātājiem (iepriekšējā izlaidumā bija 16206 labojumi no 2127 izstrādātājiem), plāksteru izmērs ir 90 MB (izmaiņas skāra 13847 failus, pievienoja 1149456 rindiņas koda, tika izdzēstas 349177 rindiņas). Aptuveni 39% no visām 5.19 izmaiņām ir saistītas ar ierīču draiveriem, aptuveni 21% izmaiņu attiecas uz kodu, kas specifisks aparatūras arhitektūrām, 11% saistītas ar tīkla steku, 4% — ar failu sistēmām un 3% — ar kodola iekštelpām.
Galvenās jaunās iezīmes kodolā 5.19:
- Disku apakšsistēma, I/O un failu sistēmas
- EROFS (Enhanced Read-Only File System) failu sistēma, kas paredzēta izmantošanai tikai lasāmās daļās, ir pārgājusi uz fscache apakšsistēmu, kas nodrošina datu kešatmiņu. Šī izmaiņa būtiski uzlaboja sniegumu sistēmām, kurās tiek palaisti liels skaits konteineru no EROFS attēla.
- Fscache apakšsistēmā ir pievienots pieprasījuma lasīšanas režīms («on-demand»), kas tiek izmantots EROFS optimizācijai. Jaunais režīms ļauj organizēt kešatmiņu lasīšanai no FS attēliem, kas atrodas lokālajā sistēmā. Atšķirībā no sākotnēji pieejamā režīma, kas bija orientēts uz datu kešatmiņu lokālajā failu sistēmā, ko pārsūtīja caur tīkla failu sistēmām, «on-demand» režīms deleģē datu iegūšanas un kešatmiņas ierakstīšanas funkcijas atsevišķam fona procesam, kas darbojas lietotāja telpā.
- XFS ir nodrošināta iespēja uzglabāt miljardiem paplašināto atribūtu i-node. Maksimālais segmentu skaits vienam failam ir palielināts no 4 miljardiem līdz 247. Ir ieviests režīms, lai atomiski atjauninātu vairāku faila paplašināto atribūtu.
- Btrfs failu sistēmā ir optimizēta blokāžu apstrāde, kas ļāvis sasniegt aptuveni 7% veiktspējas pieaugumu tiešas rakstīšanas notikumu nowait režīmā. NOCOW (bez copy-on-write) režīmā operāciju veiktspēja ir palielinājusies aptuveni par 3%. Ir samazināta slodze uz lapu kešu, veicot komandu «send». Minimālais apakšlapu izmērs ir samazināts no 64K līdz 4K (var izmantot apakšlapas, kuru izmērs ir mazāks par kodola lapām). Ir veikts pāreja no bāzes koka (radix tree) uz XArrays algoritmu.
- NFS serverī ir pievienots režīms, lai pagarinātu bloķēšanas stāvokļa saglabāšanu, ko noteicis klients, kurš vairs neatbild uz pieprasījumiem. Jaunais režīms ļauj atlikt bloķēšanas attīrīšanu līdz vienai dienai, ja cits klients nepieprasa konkurējošo bloķēšanu. Standarta režīmā bloķēšana tiek attīrīta pēc 90 sekundēm pēc tam, kad klients ir pārtraucis atbildēt.
- Fanuotify failu sistēmas notikumu izsekošanas apakšsistēmā ir ieviests karogs FAN_MARK_EVICTABLE, ar kuru var atspējot mērķa i-node nostiprināšanu kešatmiņā, piemēram, lai ignorētu apakškomponentes, nenostiprinot to daļas kešatmiņā.
- FAT32 failu sistēmas draiverī ir pievienota atbalsta funkcija, lai iegūtu faila izveides laika datus, izmantojot sistēmas izsaukumu statx ar efektīvāku un funkcionālāku versiju stat(), kas atgriež paplašināto informāciju par failu.
- Significanta optimizācija ir veikta exFAT draiverī, lai nodrošinātu vienlaicīgu sektoru grupas dzēšanu aktīvā režīmā ‘dirsync’, nevis secīgu sektoru dzēšanu. Pateicoties pieprasījumu bloku skaita samazināšanai pēc optimizācijas, veiktspēja, veidojot lielu skaitu katalogu SD kartē, ir pieaugusi par vairāk nekā 73-85%, atkarībā no klastera izmēra.
- Kernā ir iekļauts pirmais labojuma atjauninājums ntfs3 draiverim. Kopš ntfs3 iekļaušanas kernā 5.15 pagājušā gada oktobrī draiveris nav atjaunināts, un saikne ar izstrādātājiem bija zaudēta, taču tagad izstrādātāji ir atsākuši publicēt izmaiņas. Ieteiktajos plāksteros ir novērstas kļūdas, kas izraisa atmiņas noplūdes un avārijas, atrisinātas xfstests izpildes problēmas, veikta nevajadzīga koda tīrīšana un labotas drukas kļūdas.
- OverlayFS ir ieviesta lietotāju identifikatoru kartēšanas iespēja montētajās failu sistēmās, kas tiek izmantota noteiktā lietotāja failu sakārtošanai uz ārējā nodalījumā, atskaņojot to ar citu lietotāju pašreizējā sistēmā.
- Atmiņa un sistēmas pakalpojumi
- Tika pievienota sākotnējā atbalsta funkcija LoongArch komandu kopas arhitektūrai, kas tiek izmantota Loongson 3 5000 procesoros un ievieš jauno RISC ISA, kas ir līdzīgs MIPS un RISC-V. LoongArch arhitektūra ir pieejama trīs variantos: samazināts 32 bitu (LA32R), parasts 32 bitu (LA32S) un 64 bitu (LA64).
- Kodēšana a.out izpildfailu formātu atbalsta funkcijai ir noņemta, kas tika klasificēta kā novecojusi 5.1 izlaidumā. a.out formāts sen vairs netiek izmantots Linux sistēmās, un a.out failu ģenerēšanu mūsdienu instrumentu apstrādē Linux konfigurācijās pēc noklusējuma neatbalsta. Ielādes programma a.out failiem var tikt pilnībā īstenota lietotāja telpā.
- Atbalsts ar x86 arhitektūrai specifiskajām ielādes opcijām ir pārtraukts: nosep, nosmap, nosmep, noexec un noclflush).
- Atbalsts novecojušai CPU h8300 (Renesas H8/300) arhitektūrai ir pārtraukts, kas jau ilgu laiku ir palicis bez apkalpošanas.
- Paplašinātas iespējas, kas saistītas ar reakciju uz sadalīto bloķēšanu („split lock“), kas rodas, piekļūstot nesakārtotiem datiem atmiņā, jo, izpildot atomāro instrukciju, dati šķērso divas CPU kešatmiņas līnijas. Šādas bloķēšanas izraisa būtisku veiktspējas kritumu. Ja iepriekš pēc noklusējuma kodols izsūtīja brīdinājuma paziņojumu par bloķējošo procesu, tad tagad problēmu radošais process tiks papildu palēnināts, lai uzturētu pārējās sistēmas veiktspēju.
- Pievienota atbalsta mehānismam IFS (In-Field Scan), kas tiek realizēts Intel procesoros un ļauj veikt zemā līmeņa diagnostikas testus CPU, kas spēj noteikt problēmas, kuras netiek identificētas ar parastajām metodēm, pamatojoties uz kļūdu korekcijas kodiem (ECC) vai pāra biitiem. Veicamie testi ir iepakoti kā lejupielādējama programmaparatūra, līdzīgi kā mikrokoda atjauninājumi. Testēšanas rezultāti ir pieejami caur sysfs.
- Pievienota iespēja iekļaut kodolā bootconfig failu, kas ļauj, papildus komandu rindu opcijām, noteikt kodola darbības parametrus caur iestatījumu failu. Iekļaušana tiek veikta, izmantojot kompilācijas opciju ‘CONFIG_BOOT_CONFIG_EMBED_FILE=„/PATH/TO/BOOTCONFIG/FILE“‘. Iepriekš bootconfig tika definēts, pievienojot to initrd attēlam. Iekļaušana kodolā ļauj izmantot bootconfig konfigurācijās bez initrd.
- Ieviesta iespēja ielādēt programmaparatūras, kas ir saspiestas, izmantojot Zstandard algoritmu. Sysfs ir pievienots vadības failu komplekts /sys/class/firmware/*, kas ļauj iniciēt programmaparatūru ielādi no lietotāja telpas.
- Asinhronā ievades/izvades io_uring saskarnē piedāvāts jauns karogs IORING_RECVSEND_POLL_FIRST, kas, ja tas ir iestatīts, nodos tīkla operāciju apstrādei vispirms, izmantojot polingu, kas var ietaupīt resursus situācijās, kad ir atļauta operācijas apstrāde ar noteiktu aizturi. io_uring arī pievienots atbalsts sistemātiskajam izsaukumam socket(), piedāvāti jauni karogi, kas vienkāršo failu descriptoru pārvaldību, pievienots „multi-shot“ režīms, lai paziņojumā accept() uzreiz pieņemtu vairākas savienojumus, pievienotas darbības NVMe komandu pārsūtīšanai tieši uz ierīci.
- Xtensa arhitektūrai ir nodrošināta KCSAN (Kernel Concurrency Sanitizer) atkļūdošanas rīka atbalsts, kas paredzēts dinamiski, lai identificētu sacensību stāvokļus kodolā. Tāpat ir pievienots atbalsts miega režīmam un koprocessoriem.
- m68k (Motorola 68000) arhitektūrai ir īstenots virtuālā mašīna (platformas simulators), balstoties uz Android Goldfish emulatoru.
- AArch64 arhitektūrai ir ieviests Armv9-A SME (Scalable Matrix Extension) paplašinājumu atbalsts.
- eBPF apakšsistēmā ir atļauts ģenerēto rādītāju glabāšana map-struktūrās, kā arī pievienots dinamisko norāžu atbalsts.
- Tiek piedāvāts jauns atmiņas aizvietošanas mehānisms, kas atbalsta vadību no lietotāja telpas, izmantojot failu memory.reclaim. Skaitļa ieraksts norādītajā failā izraisīs mēģinājumu aizvietot atbilstošo skaitu baitus no kopas, kas saistīta ar cgroup.
- Palielināta atmiņas izmantošanas precizitāte datu saspiešanā swap daļā, izmantojot zswap mehānismu.
- RISC-V arhitektūrai nodrošināta 32-bit izpildāmo failu palaišana 64-bit sistēmās, pievienots režīms, lai piesaistītu ierobežojošos atribūtus atmiņas lapām (piemēram, lai aizliegtu kešatmiņas izmantošanu) un ieviesta funkcija kexec_file_load().
- Atbalsta 32-bit Armv4T un Armv5 sistēmu īstenošana ir pielāgota izmantošanai universālās daudzplatformu kodola izstrādēs, kas piemērotas dažādām ARM sistēmām.
- Virtualizācija un drošība
- EFI apakšsistēmā ieviesta iespēja konfidenciāli pārsūtīt viesu sistēmām slepenu informāciju, neizpaužot to viesos sistēmā. Dati tiek sniegti caur katalogu security/coco drošības sfērā.
- Lockdown aizsardzības režīmā, kas ierobežo root lietotāja piekļuvi kodolam un bloķē UEFI Secure Boot apietu ceļus, novērsta laika atvērtība, kas ļāva apiet aizsardzību, manipulējot ar kodola atkļūdošanas rīku.
- Iekļauti ielāpi, kas vērsti uz pseidoizlases skaitļu ģeneratora uzticamības un veiktspējas uzlabošanu.
- Kompilējot ar Clang 15, īstenots kodola struktūru randomizācijas mehānisms.
- Landlock mehānismā, kas ļauj ierobežot grupas procesu mijiedarbību ar ārējo vidi, piedāvāts atbalsts noteikumiem, kas kontrolē failu pārdēvēšanas operāciju izpildi.
- IMA (Integrity Measurement Architecture) apakšsistēma, kas paredzēta operētājsistēmas komponentu integritātes pārbaudei, izmantojot digitālās parakstus un hšes, ir pārgājusi uz fs-verity moduļa izmantošanu failu verifikācijai.
- Mainīta darbību loģika, atslēdzot nepiekļūstošo pieeju eBPF apakšsistēmai — iepriekš tika atslēgtas visas komandas, kas saistītas ar sistēmas izsaukumu bpf(), bet sākot ar versiju 5.19 pieejamas palikušas komandas, kas nerada objektu izveidi. Šādā uzvedībā, lai ielādētu BPF programmu, ir nepieciešams privileģēts process, bet pēc tam nepiekļūstoši procesi var mijiedarboties ar šo programmu.
- Pievienota AMD SEV-SNP (Secure Nested Paging) paplašinājuma atbalsts, kas nodrošina drošu darbu ar ieliktajām atmiņas lapu tabulām un aizsargā pret "undeSErVed" un "SEVerity" uzbrukumiem AMD EPYC procesoriem, kas ļauj apiet AMD SEV (Secure Encrypted Virtualization) aizsardzības mehānismu.
- Pievienota Intel TDX (Trusted Domain Extensions) mehānisma atbalsts, kas ļauj bloķēt trešo pušu piekļuves mēģinājumus šifrētai atmiņai. virtuālo mašīnu.
- Virtio-blk vadītājā, kas izmantots bloku iekārtu emulācijai, pievienots atbalsts ieejai/izejai, izmantojot polingu, kas, veicot testus, ļāva samazināt aizturi par apmēram 10%.
- Tīkla subsistēma
- Iekļauta BIG TCP sērija ar placis, kas ļauj palielināt maksimālo TCP paketes izmēru līdz 4GB, optimizējot augstas ātruma iekšējo datu centru tīklu darbību. Šāda paketes izmēra palielināšana, izmantojot 16 bitu lauka izmēru galvenē, tiek panākta, ieviešot "jumbo" paketes, kuru izmērs IP galvenē tiek iestatīts uz 0, bet faktiskais izmērs tiek nodots atsevišķā 32 bitu laukā atsevišķā piesaistītā galvenē. Veicot veiktspējas testus, paketes izmēra iestatīšana uz 185 kB ļāva palielināt caurlaidību par 50% un ievērojami samazināt datu pārsūtīšanas aizturi.
- Turpināta integrācija tīkla kaudzes izsekošanas mehānismos, lai noteiktu iemeslus paketu noraidīšanai (reason codes). Koda iemesls tiek nodots, atbrīvojot atmiņu, kas saistīta ar paketi, un ļauj ņemt vērā tādas situācijas kā paketes noraidīšana, ja ir lauku aizpildīšanas kļūdas virsrakstā, spoofing atpazīšana ar rp_filter, kļūdaina pārbaudījuma summa, atmiņas trūkums, IPSec XFRM noteikumu aktivizēšana, kļūdains TCP secības numurs u.c.
- Pievienota atbalsts MPTCP (MultiPath TCP) savienojumu atgriešanai uz parasto TCP, kad noteiktas MPTCP iespējas nav izmantojamas. MPTCP ir TCP protokola paplašinājums, kas nodrošina TCP savienojuma darbību, piegādājot paketes vienlaikus pa vairākiem maršrutiem caur dažādiem tīkla saskarnēm, kas saistītas ar dažādiem IP adresēm. Pievienots API, lai pārvaldītu MPTCP plūsmas no lietotāja telpas.
- Aprīkojums
- Pievienotas vairāk nekā 420 tūkstoši koda rindiņu, kas saistītas ar amdgpu draiveri, no kuriem apmēram 400 tūkstoši ir automātiski ģenerēti galvenes faili ar datiem par ASIC reģistriem AMD GPU draiverī, un vēl 22,5 tūkstoši rindiņu nodrošina sākotnējo atbalsta īstenošanu AMD SoC21. Kopsummā AMD GPU draivera izmērs pārsniedz 4 miljonus koda rindiņu. Papildus SoC21 AMD draiverī ir iekļauts atbalsts SMU 13.x (Sistēmas vadības vienība), atjaunināts USB-C un GPUVM atbalsts, veikta sagatavošana nākamās paaudzes RDNA3 (RX 7000) un CDNA (AMD Instinct) platformu atbalstam.
- I915 draiverī (Intel) ir paplašinātas iespējas, kas saistītas ar enerģijas patēriņa pārvaldību. Pievienoti Intel DG2 (Arc Alchemist) GPU identifikatori, kas izmantoti klēpjdatoros, nodrošināts sākotnējais atbalsts Intel Raptor Lake-P (RPL-P) platformai, pievienota informācija par Arctic Sound-M grafiskajām kartēm, realizēts ABI aprēķinu dzinējiem, DG2 kartēm pievienots Tile4 formāta atbalsts, un plaša displeja HDR atbalsts izstrādāts Haswell mikroarhitektūras sistēmām.
- Nouveau draiverī notikusi pāreja uz drm_gem_plane_helper_prepare_fb apstrādātāja izmantošanu, dažām struktūrām un mainīgajiem piemērota statiskā atmiņas piešķiršana. Attiecībā uz Nouveau izmantošanu, pamatojoties uz NVIDIA publiskotajiem moduliem, darbs patlaban ir vērsts uz kļūdu identificēšanu un novēršanu. Turpmāk publicēto programmatūru plānots izmantot draivera veiktspējas uzlabošanai.
- Pievienots NVMe kontroliera draiveris, kas izmantots Apple datoros, balstoties uz M1 mikroshēmu.
Vienlaikus Latīņamerikas Brīvā programmatūras fonds izstrādāja pilnīgi brīvu kodolu 5.19 — Linux-libre 5.19-gnu, attīrītu no elementiem, kas saturā iekļauj nebrīvus komponentus vai kodu, kura lietošana ir ierobežota ražotāja. Jaunajā izlaišanā ir veikta tīrīšana draiveriem pureLiFi X/XL/XC un TI AMx3 Wkup-M3 IPC. Atjaunots tīrīšanas kods blobu draiveriem un subsistēmām Silicon Labs WFX, AMD amdgpu, Qualcomm WCNSS Peripheral Image Loader, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, pu3-imgu draiveriem. Realizēta Qualcomm AArch64 devicetree failu apstrāde. Pievienota atbalsta jauna komponentu nosaukšanas shēma Sound Open Firmware. Pārtraukta ATM Ambassador draivera tīrīšana, kas ir izņemts no kodola. Blobu tīrīšanas pārvaldība HDCP un Mellanox Core ir pārcelta uz atsevišķiem kconfig tagiem.
Avots: opennet.lv
