Pēc divu mēnešu izstrādes Linuss Torvalds prezentēja Linux kodola 6.6 izlaidumu. Starp visiem ievērojamākajiem jaunumiem: jauns uzdevumu plānotājs EEVDF; ēnu steka mehānisms, lai pasargātu no izpildījumiem; fs-verity atbalsts OverlayFS; kvotu un xattr realizācija tmpfs; online fsck sagatavošana XFS; pastiprināta simbolu "GPL-only" eksporta uzraudzība; tīkla kontaktligzdu atbalsts io_uring; atmiņas nejaušība kmalloc(); ReiserFS atzīta par novecojušu; Nouveau papildināts ar primitiviem Vulkan draiverim NVK.
Jaunajā versijā ir 15291 labojumi no 2058 izstrādātājiem, labojumu izmērs ir 39 MB (izmaiņas skāra 14844 failus, pievienotas 553359 koda rindas, izdzēstas 284012 rindas). Iepriekšējā izlaidumā bija 14674 labojumi no 2016 izstrādātājiem, labojumu izmērs bija 78 MB. Aptuveni 44% no visām 6.6 izmaiņām attiecas uz ierīču draiveriem, aptuveni 17% izmaiņu ir saistītas ar aparatūras arhitektūras specifiskā koda atjaunināšanu, 11% attiecas uz tīkla steku, 4% — ar failu sistēmām un 3% ar iekšējām kodola subsistēmām.
Galvenie jaunumi kodolā 6.6:
- Atmiņa un sistēmas pakalpojumi
- Realizēts jauns uzdevumu plānotājs EEVDF (Earliest Eligible Virtual Deadline First), kas aizstāj CFS (Completely Fair Scheduler), kas tika piegādāts kopš kodola 2.6.23. Jaunais plānotājs izvēloties nākamo procesu izpildei ņem vērā procesus, kas ir saņēmuši nepietiekamu procesoru resursu vai, otrādi, saņēmuši nepelnīti daudz procesora laika. Pirmajā gadījumā tiek piespiesta pārslēgšanās uz procesu, bet otrajā — tiek atlikta. Vecais plānotājs CFS izmantoja heuristiku un smalkas iestatīšanas definēšanai procesiem, kuriem bija nepieciešama atsevišķa uzmanība, bet jaunais plānotājs tos uzrauga skaidrāk un neprasa smalkas iestatīšanas. Tiek prognozēts, ka EEVDF samazinās kavējumus uzdevumu izpildē, ar kuriem CFS cīnījās plānošanā.
- Ieguldītas izmaiņas iekšējo simbolu apstrādē kategorijai "GPL-only", lai apgrūtinātu GPL-slāni, kas ir patentēti moduļi, izmantošanu, lai apietu piekļuves ierobežojumus kodola apakšsistēmām, kas pieļauj piekļuvi tikai GPL licencētam kodam. Funkcijā symbol_get() patentētiem moduļiem tiek aizliegts meklēt simbolus, kas atzīti par GPL-only, un pretēji, GPL moduļi nevarēs atrast simbolus, ko eksportē patentētie moduļi.
- Pievienotas papildu iestatījumi darbplūsmām (unbound workqueue), lai uzlabotu procesoru kešu efektīvu atkārtotu izmantošanu lielās sistēmās ar vairākiem trešā līmeņa kešiem (L3). Kodolā iekļauta arī rīka tools/workqueue/wq_dump.py, lai pārbaudītu pašreizējo darbplūsmu konfigurāciju.
- Io_uring apakšsistēmā pievienota sākotnējā atbalsts operācijām un komandām, kas specifiskas tīkla soketiem. Pievienots sysctl io_uring_disabled, lai izslēgtu io_uring visā sistēmā. Io_uring ir būtiski paātrināts tiešais ievade/izvade (Direct I/O) asinkronajā režīmā. Pēc izmaiņām caurlaides palielināšanās un aiztures samazinājums veicot ievades-izvades operācijas sasniedz 37%.
- PA-RISC arhitektūrai īstenots JIT kompīlātors BPF.
- Iestatījumā /sys/devices/system/cpu/smt/control pievienots numerisku parametru atbalsts, kas nosaka pavedienu skaitu, kas pieejams katram CPU kodolam (iepriekš tika atbalstīti tikai "on" un "off" vērtības simetriskās daudzuzdevēšanas atbalsta ieslēgšanai un izslēgšanai). Jauno iespēju var izmantot dažos PowerPC procesoros, kas atbalsta simetriskās daudzuzdevēšanas karsto ieslēgšanu ("hotplug SMT"), lai selektīvi ieslēgtu SMT uz noteiktiem kodoliem darbības laikā.
- Turpināti tiek pārnesti izmaiņas no Rust-for-Linux zarā, kas saistītas ar Rust valodas izmantošanu kā otro valodu draiveru un kodola moduļu izstrādē (Rust atbalsts nav aktivizēts pēc noklusējuma un nenoved pie Rust iekļaušanas obligātajās atkarībās no kodola). Veikts pāreja uz Rust versijām 1.71.1 un bindgen 0.65.1. Ieviests tipāžs ‘Zeroable’. Pievienoti procedūru makro ‘paste!’ un ‘#[derive(Zeroable)]’. Nodrošināta saderība ar ‘#[pin_data]’. Pievienotas inicializācijas funkcijas ‘{,pin_}init_array_from_fn()’ un metode ‘{,pin_}chain’. Paplašinātas moduļa ‘types’ iespējas. Vienības testēšanas ietvarā kunit pievienota iespēja palaist testus no Rust dokumentācijas.
- Pievienota apakšsistēma «eventfs», kas ļauj ievērojami samazināt atmiņas patēriņu izsekošanas sistēmā, atbrīvojoties no liekām struktūrām, kas nepieciešamas izsekošanas punktu attēlošanai failu sistēmā. Agrāk šādas struktūras tika veidotas visiem izsekošanas punktiem neatkarīgi no to izmantošanas. Ar eventfs līdzīgas struktūras var veidot dinamiski, tikai nepieciešamības gadījumā.
- Paplašinātas perf utilītas iespējas.
- Failā /proc/pid/smaps pievienota informācija, kas palīdz diagnosticēt identisku atmiņas lapu saplūšanas mehānisma (KSM, Kernel Samepage Merging) efektivitāti.
- Izņemta Frontswap API, kas ļāva novietot arī swap nodeļas atmiņā, kuru nav iespējams tieši adresēt un kura nesniedz reāllaika informāciju par brīvu vietu. Šo API izmantoja tikai zswap, tāpēc nolēms tieši izmantot šo funkcionalitāti zswap, atbrīvojoties no liekiem slāņiem.
- RISC-V arhitektūrai pievienots atbalsts piekļuvei veiktspējas skaitītājiem no lietotāja telpas un iespēja novietot avārijas dublējumus ārpus 4GB.
- Pievienota sākotnējā atbalsta līmeņa ARM SME (Scalable Matrix Extension) instrukciju atbalstam.
- Ieviesta iespēja izmantot KDB, KGDB, kcov, KFENCE un KASAN atkļūdošanas rīkus LoongArch arhitektūras sistēmās.
- Pievienots atbalsts failiem kodola testēšanai GitLab nepārtrauktas integrācijas sistēmā, kas tiek izmantota grafisko draiveru izstrādē.
- Disku apakšsistēma, I/O un failu sistēmas
- Failu sistēmā OverlayFS ir pievienota atbalsta funkcija fs-verity heshu saglabāšanai paplašinātajā atribūtā (xattr) overlay.verity, ko var izmantot, lai pārbaudītu failu integritāti un autentiskumu apakšējās OverlayFS slāņos, izmantojot kriptogrāfiskos heshus un atslēgas. Tādējādi pārklājumā OverlayFS tagad ir iekļauti visi nepieciešamie uzlabojumi projektam Composefs, lai tas darbotos virs OverlayFS un EROFS.
- Failu sistēmā XFS ir veikta sagatavošanās fsck rīka izmantošanai, lai pārbaudītu un novērstu identificētās problēmas tiešsaistes režīmā, neizjaucot failu sistēmu. Turklāt XFS ir ieviesta lielo folaīnu (folios) izmantošanas iespēja lapu kešā, kā arī ir veiktas dažas optimizācijas, kas ievērojami uzlaboja veiktspēju noteiktiem slodzes veidiem.
- Failu sistēmā tmpfs ir pievienots atbalsts lietotāja paplašinātajiem atribūtiem (user xattrs), tiešajai ievadei/izvadei un kvotām, kas saistītas ar lietotāju un grupu. Ir stabilizēti katalogu pārvietojumi, kas atrisināja problēmas ar tmpfs eksporta veikšanu caur NFS.
- Montēšanas vadības API ir pievienots flags FSCONFIG_CMD_CREATE_EXCL drošības palielināšanai, kas aizliedz superbloka koplietošanu vairāku montēšanas punktu ietvaros (aizliedz viena nodalījuma piesaisti vairākiem montēšanas punktiem). Mount utilītē šī flaga iekļaušanai ir piedāvāta opcija "—exclusive".
- VFS apakšsistēmā ir pievienots atbalsts operatīvai parametru maiņai ar piekļuves un modifikācijas laiku (atime, mtime). Agrāk laika dati tika atspoguļoti ar noteiktu aizkavi, kas traucēja datu aktualitātes izsekošanu kešā NFS līdzīgās sistēmās (aizkave, nosakot izmaiņas failā, varēja maldināt sistēmu, ka kešā esošie dati ir aktuāli). Jaunā iespēja ir pieejama Btrfs, Ext4, tmpfs un XFS.
- Btrfs ir atzīts par novecojušu iebūvētais integritātes pārbaudes mehānisms, kas tiek aktivizēts būvēšanas laikā ar parametru BTRFS_FS_CHECK_INTEGRITY. Šis mehānisms vairs netiek atbalstīts, to vairs netestē, un tas rada papildu slodzi uz CPU un atmiņu. Turklāt Btrfs ir optimizēta jaunā failu sistēmas pārbaudes (scrub) koda veiktspēja.
- Ext4 failu sistēmā ir pievienotas periodiskas superbloka atjaunināšanas pārbaudes un paātrinātas atmiņas rezervēšanas operācijas, rakstot faila beigās.
- FUSE apakšsistēmā ir pievienota atbalsts btime atribūtam ("dzimšanas laiks"), kas nosaka inode izveides laiku.
- Ir aizliegts mainīt piekļuves tiesības simboliskajām saitēm.
- Ir pievienots sistēmas izsaukums fchmodat2(), kas atšķiras no fchmodat() ar papildu argumentu karogu norādīšanai. No karogiem pagaidām ir atbalstīti tikai AT_SYMLINK_NOFOLLOW un AT_EMPTY_PATH, kas ļauj bez apmērs tādā veidā īstenot fchmodat() simbolisko saišu atreferēšanas aizliegumu un faili izgūties, ja norādīts tukšs ceļš.
- EROFS (Pagarināmā tikai lasāmā failu sistēma) failu sistēmā, kas paredzēta izmantošanai tikai lasāmos nodalījumos, ir pievienota Deflate saspiešanas algoritma atbalsts. Lai paātrinātu paplašināto atribūtu meklēšanu, tiek izmantota probabilistiskā struktūra bloom filter.
- Ir pievienota CONFIG_BUFFER_HEAD opcija, kas ļauj kompilēt kodolu bez buffer_head struktūras izmantošanas. Kompilējot bez buffer_head, var izmantot bloku iekārtas un dažas failu sistēmas, piemēram, xfs, btrfs, cramfs, erofs un squashfs.
- Bloku ierīču draiverim ublk, kas ļauj pārcelt specifisko loģiku uz procesu lietotāja telpā, ir pievienots atbalsts zonētiem glabāšanas ierīcēm (zona sadalījums blokiem vai sektoriem, kuros atļauts tikai secīgi pievienot datus, atjaunojot visu blokgrupu).
- ReiserFS failu sistēmas īstenojums ir pārvietots no atbalstīto kategorijas uz novecojušo (Obsolete). ReiserFS atbalsta pārtraukšana ir plānota 2025. gadā. Par iemeslu ReiserFS pārcelšanai uz novecojušām sistēmām minēta stagnācija šīs failu sistēmas atbalsta, neizšķirtā 2038. gada problēma, atteikšanās nodrošināt un vēlme samazināt darba slogu attiecībā uz jauna API atbalsta sistēmu pārvaldību un atbalstu jauniem API montēšanai, iomap un foliem.
- NFS serverī ir īstenots rakstīšanas operāciju deleģēšanas mehānisms NFSv4, kas palielina failu rakstīšanas kešatmiņas efektivitāti, samazinot trafiku. Ir iekļauts READ_PLUS darbības atbalsts, kas definēts NFS 4.2.
- Ceph failu sistēmā pievienota atbalsts fscrypt.
- Virtualizācija un drošība
- Pievienota Shadow Stack mehānisma īstenošana, kas ļauj bloķēt daudzu eksploitāciju darbību, izmantojot Intel procesoru aparatūras iespējas, lai aizsargātu no adreses pārrakstīšanas atgriešanās no funkcijas gadījumā, ja notiek bufera pārsprāgšana. Aizsardzības būtība ir tāda, ka pēc kontroles nodošanas funkcijai, procesors nepārnēsā atgriešanās adresi tikai parastajā stekā, bet arī atsevišķajā "ēnā" stekā, kuru nevar tieši mainīt. Pirms iziešanas no funkcijas atgriešanās adrese tiek izvilkta no ēnā steka un salīdzināta ar atgriešanās adresi no galvenā steka. Nesakritība adresēs izraisa izņēmuma ģenerēšanu, bloķējot situācijas, kad eksploitācijas mēģināja pārrakstīt adresi galvenajā stekā. Aparatūras ēnā steku atbalsta tikai 64 bitu būvēs, bet 32 bitu būvēs tiek izmantota tā programmatūras emulācija.
- Pievienots atbalsts Clang kompilatora būvēs ar ieslēgtu CFI (Control Flow Integrity) aizsardzības režīmu, kas bloķē normāla izpildes secības (control flow) pārkāpumus, izmantojot eksploitācijas, kas maina atmiņā saglabātos rādītājus uz funkcijām.
- RISC-V arhitektūrai iespēja randomizēt kodola novietojumu atmiņā, kad tas tiek ielādēts.
- Sistēmas izsaukumā seccomp() pievienots karogs SECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP, kas ļauj apstrādāt notikumus no uzraudzītajām procesiem sinhronā režīmā, lai uzlabotu uzdevumu plānotāja darbu.
- Funkcijā kmalloc() nodrošināta slab-kēšu randomizācija, apgrūtinot ievainojamību izmantošanu kodolā.
- No opcijām, kas saistītas ar SELinux piespiedu piekļuves kontroles sistēmas ieslēgšanu, izņemta atsauce uz ASV Nacionālās drošības aģentūru. Tā kā projekts jau 20 gadus attīstās kopienas rūpē un tiek apkalpots neatkarīgu uzturētāju, nolēmām pāriet uz nosaukuma "SELinux" izmantošanu, nevis "NSA SELinux" komentāros un dokumentācijā Kconfig (piemēram, paskaidrojums par kompilācijas parametru SECURITY_SELINUX mainīts no "NSA SELinux Support" uz "SELinux Support").
- Sistēmas izsaukumā userfaultfd() pievienota operācija UFFDIO_POISON, kas ļauj marķēt atmiņas lapas kā "indīgas" (poisoned), ko var izmantot bojātu atmiņas lapu pārvietošanai migrācijas laikā. virtuālo mašīnu no vienas sistēmas uz citu.
- VFIO apakšsistēmā ir pievienots jauns simboliskais interfeiss (/dev/vfio/devices/vfioX) ierīču VFIO pārvaldībai, kas ļauj lietotājam tieši atvērt failu ar ierīci, neizmantojot novecojušo grupas interfeisu /dev/vfio/$groupID.
- No serveri NFS pārtraukta novecojušo Kerberos šifrēšanas veidu atbalsts, kas izmanto DES un 3DES algoritmus.
- Sistēmas Hyper-V virtualizācijas vidē ir pievienots atbalsts viesu sistēmām, kas ir aizsargātas, izmantojot AMD SEV-SNP (Secure Nested Paging) un Intel TDX (Trusted Domain Extensions) tehnoloģijas.
- Salīdzināšanas laikā, kad kods tiek kompilēts "W=1" režīmā, noklusējuma kompilatorā ir iekļauti brīdinājumi "-Wformat-overflow", "-Wformat-truncation", "-Wstringop-overflow" un "-Wrestrict". Visiem salikumiem ir iekļauts brīdinājums "-Wenum-conversion".
- Tīkla subsistēma
- AF_XDP (eXpress Data Path) adresāciju ģimenes īstenojums ir paplašināts ar iespēju strādāt ar paketēm, kas glabājas vairākos buferos (piemēram, viens buferis var saturēt paketes galveni, bet otrs – datus, vai vairākos buferos var tikt iekļauti lieli jumbo kadri Ethernet). Programmas, kas izmanto AF_XDP soketus, tagad var saņemt un nodot paketes no vairākiem buferiem vienlaikus.
- BPF apakšsistēmā ir pievienots atbalsts IPv4 un IPv6 paketi defragmentācijai, kā arī iespēja filtrēt fragmentētas paketes.
- BPF ir pievienots jauns update_socket_protocol apstrādātājs, kas ļauj BPF programmām mainīt pieprasīto protokolu jaunajiem soketiem. Piemēram, BPF programma var caurspīdīgi nomainīt TCP protokolu uz MPTCP (multipath TCP), lai optimizētu lietotnes trafiku. BPF ir pievienots arī atbalsts paketes maršrutēšanas pārvaldībai caur dažādiem plūsmām MPTCP.
- No eksperimentālās izstrādes ir noņemta atzīme modulim ksmbd, kas piedāvā darbību līmenī esošu SMB3 protokola bāzes failu servera īstenojumu. Ir pievienots atbalsts lasīšanas operāciju apvienošanai ("read compound" pieprasījumi).
- Aprīkojums
- DRM apakšsistēmā (Direct Rendering Manager) ir veiktas izmaiņas, kas nepieciešamas efektīvai atvērtā NVK draivera darbībai ar Vulkan grafisko API īstenojumu NVIDIA video kartēm. Sākotnēji DRM draiveris Nouveau bija paredzēts OpenGL īstenošanai, tāpēc tajā trūkst primitīvu, kas nepieciešami efektīvai Vulkan draiveru darbībai, piemēram, sinhronizētu objektu atbalsta un virtuālā adreses telpas pārvaldības.
- AMDGPU draiverī ieviesta SDMA 6.1.0, HDP 6.1, SMUIO 14.0, PSP 14.0, IH 6.1 un GFX 9.4.3 atbalsts. Pārstrādāta PSP (Platform Security Processor) firmware ielādes kods. Paplašināts FreeSync tehnoloģijas atbalsts (pievienots Freesync Panel Replay V2 atbalsts).
- i915 draiverī turpināts Intel Meteor Lake mikroshēmu atbalsta īstenošana. Uzlabots HDCP (High-bandwidth Digital Content Protection) tehnoloģijas atbalsts. Pārstrādāts kods, lai mijiedarbotos ar displeju.
- Kconfig izņemtas mikroshēmas ielādes izslēgšanas iespējas būvniecības posmā — MICROCODE_INTEL un MICROCODE_AMD. Kodols tagad vienmēr tiek būvēts ar mikroshēmas ielādes kodu x86 sistēmām, taču faktiskā mikroshēmas ielāde var tikt izslēgta, norādot kodola parametru ‘dis_ucode_ldr’.
- Skaņas apakšsistēmā pievienota iespēja pārvaldīt skaņas ierīces, kas pieslēgtas caur IIO (Industrial I/O) apakšsistēmu.
- Pievienots atbalsts Intel LunarLake, Intel ArrowLake un AMD ACP5x skaņas interfeisiem, Cirrus Logic CS42L43, Realtek RT1017 un TI TAS2781 kodekiem, kā arī Cirrus Logic CS35L56 un winic aw88261 pastiprinātājiem. Pievienots ASoC AMD Van Gogh atbalsts.
- Pievienots USB MIDI 2.0 Gadget draiveris, kas emulē USB MIDI 2.0 interfeisu, kas piesaistīts ALSA UMP rawmidi ierīcei.
- Pievienots atbalsts Broadcom ASP 2.0 un Marvell 88Q2XXX Ethernet kontrolieriem.
- Pievienots atbalsts Visionox R66451, TDO TL050HDV35, KD070FHFID015, Inanbo T28CP45TN89 un EDT ET028013DMA paneļiem, Loongson displeju kontrolieriem un Azoteq IQS7222D/IQS7210A/7211A skārienekrāna kontrolieriem.
- Pievienots atbalsts ARM SoC Qualcomm SM4450 (Snapdragon 4 Gen 2), TI AM62P5, Intel Agilex5, Qualcomm ipq5018, AN400 (Amlogic T7).
- Pievienots atbalsts ARM platformām Samsung Galaxy Tab 3 8.0, FriendlyElec NanoPC T6, Amlogic A311D2, Khadas Vim4, Xiaomi SM7125, Facebook Yosemite 4, Orange Pi Zero 3, Radxa ROCK 4SE.
Tajā pašā laikā Latīņamerikas Brīvās programmatūras fonds izveidoja pilnīgi brīvo 6.6 kodolu — Linux-libre 6.6-gnu, kas attīrīts no elementiem, kas satur neskaidras komponentes vai koda fragmentus, kuru izmantošana ir ierobežota ražotāja. 6.6 izdevumā atjaunots blobu attīrīšanas kods dažādos draiveros un apakšsistēmās, piemēram, TI gigabit RU ethernet, MediaTek 792x wifi, Cirrus Logic cs42l43 mfd, cs35l56 HD-audio un aw88261 SoC draiveros. Veiktas blobu nosaukumu attīrīšanas izmaiņas dts failos Aarch64 arhitektūrai. Jaunos ivpu draiveros, bluetooth draiveros, skārienekrāna draiverī un Qualcomm Venus V4L2 enkodera/dekodera kodā izdzēsti blobi.
Avots: opennet.lv
