Pēc divu mēnešu izstrādes Linuss Torvalds prezentēja Linux 6.1 kodola relīzi. Starp nozīmīgākajām izmaiņām ir atbalsts draiveru un moduļu izstrādei Rust valodā, atjaunots izmantoto memory lapu noteikšanas mehānisms, īpašs atmiņas menedžeris BPF programmām, KMSAN atmiņas problēmu diagnostikas sistēma, KCFI (Kernel Control-Flow Integrity) aizsardzības mehānisms un Maple tree struktūras ieviešana.
Jaunajā versijā ir 15115 labojumu no 2139 izstrādātājiem, plākstera izmērs ir 51 MB, kas ir aptuveni divas reizes mazāk nekā 6.0 un 5.19 kodola plāksteru izmērs. Izmaiņas skāra 13165 failus, tika pievienotas 716247 koda rindiņas un dzēstas 304560 rindiņas. Aptuveni 45% visu 6.1 izmaiņu attiecās uz ierīču draiveriem, aptuveni 14% izmaiņu attiecās uz aparatūras arhitektūrai specifisku koda atjaunināšanu, 14% bija saistīti ar tīkla kaudzi, 3% — ar failu sistēmām un 3% ar iekšējām kodola subsistēmām.
Galvenie jauninājumi kodolā 6.1:
- Atmiņa un sistēmas pakalpojumi
- Ir pievienota iespēja izmantot Rust valodu kā otro valodu draiveru un kodola moduļu izstrādei. Galvenais atbalsta Rust mērķis ir vienkāršot drošu un kvalitatīvu ierīču draiveru rakstīšanu, samazinot iespēju pieļaut kļūdas ar atmiņu. Rust atbalsts pēc noklusējuma nav aktīvs un nenozīmē Rust iekļaušanu obligātajās kodola kompilācijas atkarībās. Kodolā pagaidām ir pieņemts minimālais saīsinātais pielaides variants, kas samazināts no 40 līdz 13 tūkstošiem koda rindiņu un nodrošina tikai nepieciešamo minimumu, kas ir pietiekams, lai izveidotu vienkāršu kodola moduli, kas rakstīts Rust valodā. Turpmāk plānots pakāpeniski paplašināt esošo funkcionalitāti, pārvietojot un citas izmaiņas no Rust-for-Linux zara. Paralēli attīstās projekti, kas izmanto piedāvāto infrastruktūru, lai izstrādātu NVMe diska draiverus, 9p tīkla protokolu un Apple M1 GPU.
- EFI bāzēto AArch64, RISC-V un LoongArch arhitektūru sistēmām ir īstenota iespēja tiešai iekraušanai no saspiestiem kodu attēliem. Ir pievienoti apstrādātāji kodu attēlu iekraušanai, palaišanai un izsūtīšanai, kurus var tieši izsaukt no EFI zboot. Tāpat ir pievienoti apstrādātāji protokolu instalēšanai un dzēšanai EFI protokolu datu bāzē. Agrāk atpakošana notika ar atsevišķu ielādētāju, bet tagad to var veikt apstrādātājs pašā kodā — kodu attēls tiek veidots kā EFI lietojumprogramma.
- Iekļautas daļa no ielāpiem, kas īsteno daudzslāņu atmiņas vadības modeli, kas ļauj dalīt atmiņas bankas ar dažādām veiktspējas īpašībām. Piemēram, visvairāk izmantotās lapas var tikt izvietotas visātrākajā atmiņā, bet retāk izmantotās lapas var glabāties salīdzinoši lēnajā atmiņā. Kodā 6.1 ir pieņemts mehānisms, kas nosaka intensīvi izmantoto lapu atrašanās vietu lēnajā atmiņā, lai tās virzītu uz ātrāko atmiņu, kā arī īstenota kopējā atmiņas līmeņu un to relatīvas veiktspējas koncepcija.
- Iekļauts mehānisms MGLRU (Multi-Generational LRU), kas nomainīja veco LRU (Least Recently Used) īstenojumu, kas balstīts uz divām rindām, uz daudzpakāpju struktūru, kas labāk nosaka, kuras atmiņas lapas patiesi tiek izmantotas, un kuras var izsist uz apmaiņas nodaļu.
- Tika pievienota atbalsts inženieru Oracle ieteiktajai datu struktūrai "maple tree", kas tiek pozicionēta kā efektīvāks aizvietotājs struktūrai "red-black tree". Maple tree ir B-koka variants, kas atbalsta indeksēšanu pa vērtību diapazoniem un ir projektēts, lai efektīvi izmantotu kešu. mūsdienu procesoriem. Dažām atmiņas pārvaldības apakšsistēmām jau ir pārgājusi uz maple tree, kas pozitīvi ietekmējusi to veiktspēju. Nākotnē maple tree var tikt izmantots diapazonu blokāžu (range locking) īstenošanai.
- BPF apakšsistēmā ir pievienota iespēja izveidot "destruktīvas" BPF programmas, kas speciāli izstrādātas avārijas izsaukšanai, izmantojot crash_kexec() izsaukumu. Šādas BPF programmas var būt nepieciešamas, lai veiktu atkļūdošanu, izsaucot crash-dump noteiktā brīdī. Lai piekļūtu destruktīvām darbībām, ielādējot BPF programmu, ir nepieciešams norādīt BPF_F_DESTRUCTIVE karodziņu, aktivizēt sysctl kernel.destructive_bpf_enabled un būt CAP_SYS_BOOT tiesībām.
- BPF programmām ir nodrošināta iespēja pārskatīt cgroup elementus, kā arī resursus (failus, vma, procesus u.t.t.) noteiktai plūsmai vai uzdevumam. Ir izstrādāts jauns map tips, lai izveidotu pielāgotus aplokšņu buferus (user ring buffer).
- Pievienots īpašs izsaukums BPF programmām atmiņas piešķiršanai (memory allocator), kas nodrošina drošāku atmiņas sadali BPF kontekstā nekā standarta kmalloc().
- Tika integrēta pirmā izmaiņu daļa, kas nodrošina iespēju izveidot ierīču draiverus ar HID (Human Interface Device) saskarni, kas tiek īstenota BPF programmu veidā.
- No kodola pilnībā izņemts kods, kas atbalsta izpildāmo failu a.out formātu, kas tika atzīts par novecojušu 5.1 izlaidumā, un kopš 5.18 un 5.19 versijām tas tika izslēgts galvenajām arhitektūrām. a.out formāts sen vairs netiek izmantots Linux sistēmās, un a.out failu ģenerēšana netiek atbalstīta mūsdienu rīkos Linux noklusējuma konfigurācijās. A loader for a.out files can be fully implemented in user space.
- LoongArch arhitektūras sistēmām, ko izmanto Loongson 3 5000 procesoros un kurā tiek īstenota jauna RISC ISA, kas ir līdzīga MIPS un RISC-V, ir nodrošināta atbalsta aktivitāšu mērīšanai (perf event), kexec, kdump un BPF JIT kompilācijai.
- Asinhronā I/O io_uring saskarnē ir piedāvāts jauns režīms IORING_SETUP_DEFER_TASKRUN, kas ļauj pagaidu atlikt saistīto darbu veikšanu, kamēr no lietojumprogrammas nav iestājusies pieprasījums, un to var izmantot, lai organizētu darbu izpildi partiju režīmā un novērstu aiztures problēmas, kas saistītas ar programmas izsniegšanu nevietā.
- Lietotāja telpā ir nodrošināta iespēja iniciēt parasto atmiņas lappušu diapazona pārveidošanu uz grupu lielo atmiņas lappušu (Transparent Huge-Pages).
- Ieviešana ierīcei /dev/userfaultfd, kas ļauj organizēt piekļuvi sistēmas izsaukuma userfaultfd() funkcionalitātei, izmantojot piekļuves tiesības failu sistēmā. Userfaultfd funkcionalitāte ļauj izveidot apstrādātājus pieprasījumiem par nepiešķirtajām atmiņas lappusēm (page faults) lietotāja telpā.
- Ir paaugstinātas prasības GNU Make utilītas versijai - tagad, lai izveidotu kodolu, nepieciešama vismaz 3.82 versija.
- Disku apakšsistēma, I/O un failu sistēmas
- Btrfs failu sistēmā ir veiktas būtiskas veiktspējas optimizācijas, īpaši ievērojami palielināta ioctl sauciena FIEMAP veiktspēja. Ir pievienota asinkrona buferizētas rakstīšanas atbalsts lietojumprogrammām, kas izmanto io_uring. Operācijā "send" ir pievienota atbalsts failiem, kas ir aizsargāti ar fs-verity.
- ext4 failu sistēmā ir pievienotas veiktspējas optimizācijas saistībā ar žurnāla uzturēšanu un darbību tikai lasīšanas režīmā.
- EROFS (Enhanced Read-Only File System) failu sistēmā, kas paredzēta izmantošanai tikai lasīšanas režīmā pieejamās nodalījumos, ir īstenota iespēja kopīgi glabāt datus, kas tiek dublēti dažādās failu sistēmās.
- Sistēmas izsaukumā statx() ir pievienota iespēja izvadīt informāciju par iespējām, kas attiecas uz tiešās ievades/izvades pielietošanu failam.
- FUSE (Filesystems in User Space) apakšsistēmā ir pievienots atbalsts pagaidu failu veidošanai ar O_TMPFILE karogu.
- Virtualizācija un drošība
- Aizvietota CFI (Control Flow Integrity) aizsardzības mehānisma īstenošana, pievienojot pirms katra netieša funkciju izsaukuma pārbaužu, lai atklātu dažus neparedzamu darbību veidus, kas potenciāli var novest pie normālas izpildes secības (control flow) pārkāpšanas, ko izraisa eksploitācijas, kas maina atmiņā saglabātos funkciju rādītājus. Standarta CFI īstenošana no LLVM projekta ir aizvietota ar variantu, kas balstīts uz Clang izmantošanu, bet īpaši pielāgots zema līmeņa apakšsistēmu un operētājsistēmu kodolu aizsardzībai. LLVM jaunā īstenošana tiks piedāvāta Clang 16 laidienā un tiks iekļauta ar opciju "-fsanitize=kcfi". Galvenā jaunās īstenošanas atšķirība ir tā, ka tā nav piesaistīta optimizācijām saistīšanas posmā (LTO) un nenoved pie funkciju rādītāju aizvietošanas ar norādēm pāreju tabulā.
- LSM moduļiem (Linux Security Module) nodrošināta iespēja izveidot apstrādātājus, kas pārtrauc nosaukumu telpu izveidošanas operācijas.
- Tika nodrošināti līdzekļi PKCS#7 digitālo parakstu verifikācijai BPF programmās.
- Atgriezta iespēja atvērt /dev/random nebloķējošajā režīmā (O_NONBLOCK), kas tika nejauši izdzēsta kodolā 5.6.
- Sistēmām ar x86 arhitektūru pievienots brīdinājums, ja kodola apakšsistēmas kartē atmiņas lapas, kas vienlaicīgi ļauj izpildi un rakstīšanu. Nākotnē tiks apsvērta iespēja pilnībā aizliegt šādu atmiņas kartēšanu.
- Pievienots KMSAN (Kernel Memory Sanitizer) atkļūdošanas mehānisms, lai identificētu neinitializētas atmiņas izmantošanu kodolā, kā arī noplūdes starp lietotāja telpu un ierīcēm.
- Uzlabots kriptogrāfiski drošs pseidoizlases skaitļu ģenerators CRNG, kas tiek izmantots getrandom izsaukumā. Izmaiņas sagatavojis Džeisons Donenfīlds (Jason A. Donenfeld), autors WireGuard un tās mērķis ir paaugstināt drošību, iegūstot pseidoizlases veselus skaitļus. VPN TCP stekā ieviesta iespēja (pēc noklusējuma atslēgta) atsevišķi lietot rādītāju tabulas katrai nosaukumu telpai, kas ļauj palielināt veiktspēju sistēmām ar lielu nosaukumu telpu skaitu.
- Tīkla subsistēma
- TCP stekā ieviesta iespēja (pēc noklusējuma atslēgta) atsevišķi lietot hesh-tabulas katram nosaukumu telpai, kas var palielināt veiktspēju sistēmām ar lielu nosaukumu telpu skaitu.
- Nozīmīgais DECnet protokola atbalsts ir noņemts. Lietotāja telpai ir atstātas API ziedi, kas ļauj kompilēt aplikācijas, kas izmanto DECnet, taču šīs aplikācijas nevarēs pieslēgties tīklam.
- Dokumentēts netlink protokols.
- Aprīkojums
- Amdgpu draiverī ir pievienots atbalsts DSC (Display Stream Compression) datu saspiešanai bez zaudējumiem, strādājot ar ļoti augstas izšķirtspējas displejiem. Tika turpināta darba nodrošināšana AMD RDNA3 (RX 7000) un CDNA (Instinct) platformām. Tika pievienots atbalsts IP komponentiem DCN 3.2, SMU 13.x, NBIO 7.7, GC 11.x, PSP 13.x, SDMA 6.x un GMC 11.x. Amdkfd draiverī (discretiem AMD GPU, piemēram, Polaris) ir īstenots GFX 11.0.3 atbalsts.
- I915 (Intel) draiverī ir iekļauts Meteor Lake GPU atbalsts. Meteor Lake un jaunākiem GPU ir nodrošināts DP 2.0 (DisplayPort) interfeisa atbalsts. Tika pievienoti identifikatori videokartēm, kas balstītas uz Alder Lake S mikroarhitektūras.
- Tika pievienots atbalsts audio subsistēmām, kas īstenotas Apple Silicon, Intel SkyLake un Intel KabyLake procesoros. CS35L41 HDA audio draiverī ir nodrošināts atbalsts pārejai uz miegu. Ir pievienots ASoC (ALSA System on Chip) atbalsts Apple Silicon, AMD Rembrant DSP, AMD Pink Sardine ACP 6.2, Everest ES8326, Intel Sky Lake un Kaby Lake, Mediatek MT8186, NXP i.MX8ULP DSP, Qualcomm SC8280XP, SM8250, SM8450 un Texas Instruments SRC4392 iekšējiem audio mikroshēmojumiem.
- Tika pievienots atbalsts Samsung LTL101AL01, B120XAN01.0, R140NWF5 RH, Densitron DMT028VGHMCMI-1A TFT, AUO B133UAN02.1, IVO M133NW4J-R3, Innolux N120ACA-EA1, AUO B116XAK01.6, BOE NT116WHM-N21, INX N116BCA-EA2, INX N116BCN-EA1, Multi-Inno Technology MI0800FT-9 LCD paneļiem.
- Tika pievienots atbalsts AHCI SATA kontrolieriem, ko izmanto Baikal-T1 SoC.
- Tika pievienots atbalsts MediaTek MT7921, Intel Magnetor (CNVi, Integrated Connectivity), Realtek RTL8852C, RTW8852AE un RTL8761BUV (Edimax BT-8500) Bluetooth mikroshēmām.
- Ath11k draiverī, kas paredzēts Qualcomm bezvadu moduļiem, ir pievienots spektrālā skanējuma atbalsts 160 MHz diapazonā, īstenots multiprogrammu NAPI un uzlabots Wi-Fi atbalsts Qualcomm WCN6750 mikroshēmām.
- Tika pievienoti draiveri PinePhone tastatūrai, InterTouch (ThinkPad P1 G3) skārienpalikņiem, X-Box Adaptive Controller, PhoenixRC Flight Controller, VRC-2 Car Controller, DualSense Edge Controller, IBM vadības paneļiem, XBOX One Elite tālvadības pultīm, XP-PEN Deco Pro S un Intuos Pro Small (PTH-460) planšetdatoriem.
- Tika pievienots draiveris Aspeed HACE (Hash and Crypto Engine) kriptogrāfijas paātrinātājiem.
- Tika pievienots atbalsts integrētiem Thunderbolt/USB4 kontrolieriem Intel Meteor Lake.
- Tika pievienots atbalsts Sony Xperia 1 IV, Samsung Galaxy E5, E7 un Grand Max, Pine64 Pinephone Pro viedtālruņiem.
- Pievienota ARM SoC un plātņu atbalsts: AMD DaytonaX, Mediatek MT8186, Rockchips RK3399 un RK3566, TI AM62A, NXP i.MX8DXL, Renesas R-Car H3Ne-1.7G, Qualcomm IPQ8064-v2.0, IPQ8062, IPQ8065, Kontron SL/BL i.MX8MM OSM-S, MT8195 (Acer Tomato), Radxa ROCK 4C+, NanoPi R4S Enterprise Edition, JetHome JetHub D1p. Atjaunoti draiveri SoC Samsung, Mediatek, Renesas, Tegra, Qualcomm, Broadcom un NXP.
Tajā pašā laikā Latīņamerikas Brīvā programmatūras fonds izveidoja pilnīgi brīvu kodolu 6.1 — Linux-libre 6.1-gnu, attīrītu no iebūvēto un draiveru elementiem, kas satur nevēlamos komponentus vai koda fragmentus, kuru pielietojums ir ierobežots ražotāja. Jaunajā izlaidumā notika jauno draiveru rtw8852b un DTS-failu attīrīšana dažādiem SoC Qualcomm un MediaTek ar procesoriem, kas balstīti uz AArch64 arhitektūru. Atjaunots bloķēšanas attīrīšanas kods draiveros un apakšsistēmās amdgpu, i915, brcmfmac, r8188eu, rtw8852c, Intel ACPI. Veikta novecojušo draiveru tm6000 TV kartēm, cpia2 v4l, sp8870, av7110 attīrīšana.
Avots: opennet.lv
