Pēc divu mēnešu izstrādes Linuss Torvalds prezentēja Linux 6.7 kodola izlaišanu. Starp izteiktākajām izmaiņām ir: Bcachefs failu sistēmas integrācija, Itanium arhitektūras atbalsta pārtraukšana, Nouvea sadarbība ar GSP-R cietvielu programmatūru, TLS šifrēšanas atbalsts NVMe-TCP, iespēja izmantot izņēmumus BPF, futex atbalsts io_uring, fq (Fair Queuing) scheduler veiktspējas optimizācija, TCP-AO (TCP Authentication Option) paplašinājuma atbalsts un iespēja ierobežot tīkla savienojumus Landlock aizsardzības mehānismā, pievienota piekļuves kontrole pie user namespace un io_uring caur AppArmor.
Jaunajā versijā ir 18405 labojumi no 2066 izstrādātājiem, plāksnes izmērs ir 72 MB (izmaiņas skāra 13467 failus, pievienoti 906147 koda rindiņas, dzēstas 341048 rindiņas). Iepriekšējā izlaidumā bija 15291 labojums no 2058 izstrādātājiem, plāksnes izmērs bija 39 MB. Apmēram 45% no visām izmaiņām 6.7 versijā ir saistītas ar ierīču draiveriem, aptuveni 14% izmaiņu attiecas uz aparatūras arhitektūrām specifisku koda atjaunināšanu, 13% saistītas ar tīkla steku, 5% ar failu sistēmām un 3% ar iekšējām kodola subsistēmām.
Galvenās jauninājumi kodolā 6.7:
- Disku apakšsistēma, I/O un failu sistēmas
- Kodolā ir iekļauts Bcachefs failu sistēmas kods, kurā ir veikta mēģinājums panākt tādu pašu veiktspējas, uzticamības un mērogojamības līmeni kā XFS, kombinējot to ar paplašinātas funkcionalitātes elementiem, kas raksturīgi Btrfs un ZFS. Piemēram, Bcachefs atbalsta tādas iespējas kā vairāku ierīču iekļaušana sadaļā, slāņveida krātuves (apakšējais slānis ar biežāk lietotiem datiem uz ātriem SSD, bet augšējais slānis ar mazāk pieprasītiem datiem no cietajiem diskiem), replicēšana (RAID 1/10), kešatmiņa, caurspīdīga datu saspiešana (LZ4, gzip un ZSTD režīmi), stāvokļa griezumi (snapshots), integritātes pārbaude ar kontrolsummām, iespēja glabāt Reed-Solomon kļūdu koriģēšanas kodus (RAID 5/6), šifrētu datu glabāšana (tiek izmantoti ChaCha20 un Poly1305). Attiecībā uz veiktspēju Bcachefs pārspēj Btrfs un citas Copy-on-Write bāzes failu sistēmas, demonstrējot veiktspēju, kas ir tuvu Ext4 un XFS.
- Btrfs failu sistēmā ir ieviests vienkāršots kvotu režīms, kas ļauj sasniegt augstāku veiktspēju, izsekojot ekstenzijas tikai tajā apakšdirektorijā, kurā tās ir izveidotas, kas būtiski atvieglo aprēķinus un palielina veiktspēju, taču neļauj ņemt vērā ekstenzijas, kas tiek kopīgi izmantotas vairākās apakšdirektorijās.
- Btrfs ir pievienota jauna datu struktūra "stripe tree", kas ir piemērota loģiskai ekstenziju kartēšanai situācijās, kad fiziskā kartēšana nesakrīt dažādos ierīcēs. Šī struktūra pašlaik tiek izmantota RAID0 un RAID1 realizācijās zonētām blokierīcēm. Nākotnē plānots šo struktūru izmantot arī augstāka līmeņa RAID, kas ļaus atrisināt vairākas problēmas, kas pastāv esošajā realizācijā.
- Ceph failu sistēmā ir ieviesta lietotāju identifikatoru kartēšanas atbalsts pievienotajās failu sistēmās, kas tiek izmantots, lai savienotu noteikta lietotāja failus pievienotajā svešā nodalījumā ar citu lietotāju pašreizējā sistēmā.
- efivarfs ir pievienota iespēja norādīt uid un gid pie montēšanas, lai nodrošinātu iespēju mainīt UEFI mainīgās, process, kas tiek izpildīts bez root tiesībām.
- exFAT ir pievienotas ioctl izsaukumi failu sistēmas atribūtu lasīšanai un maiņai. Ir pievienota nulles izmēra katalogu apstrāde.
- F2FS ir izveidota iespēja izmantot blokus ar 16K izmēru.
- Autofs automontēšanas mehānisms ir pārgājis uz jauno nodalījumu montēšanas API izmantošanu.
- OverlayFS ir piedāvātas montēšanas opcijas "lowerdir+" un "datadir+". Ir pievienots atbalsts iekšējai OverlayFS montēšanai ar xattrs.
- XFS ir optimizēta slodze uz CPU reālā laika bloku sadales kodā. Tika nodrošināta iespēja vienlaicīgi veikt lasīšanas operācijas un FICLONE.
- EXT2 kods ir pārgājis uz lapu foliju izmantošanu atmiņā.
- Atmiņa un sistēmas pakalpojumi
- Atbalsts ia64 arhitektūrai, ko izmanto Intel Itanium procesoros, ir pārtraukts, un šo procesoru tirdzniecība tika pilnībā pārtraukta 2021. gadā. Itanium procesori tika ieviesti Intel 2001. gadā, taču ia64 arhitektūra nespēja konkurēt ar AMD64, galvenokārt pateicoties AMD64 augstākajai veiktspējai un vienkāršākai pārejai no 32 bitu x86 procesoriem. Rezultātā Intel intereses pārcēlās uz x86-64 procesoriem, kamēr Itanium palika serverus HP Integrity, pasūtījumi uz kuriem tika pārtraukti pirms trim gadiem. Kodols atbalsta ia64 ir izņemts no kodola galvenokārt izstrādes ilguma dēļ, šai platformai ilgstoši nebija tehniskās apkalpes, tomēr Linus Torvalds izteica gatavību atjaunot ia64 atbalstu kodolā, bet tikai tad, ja tiks atrasts cilvēks, kurš demonstrēs kvalitatīvu šīs platformas apkalpi vismaz gada laikā ārpus galvenā kodola.
- Pievienots kodola komandrindas parametrs „ia32_emulation”, kas ļauj ielādēšanas laikā ieslēgt un izslēgt atbalstu 32 bitu režīma emulācijai kodolos, kas izstrādāti x86-64 arhitektūrai. No praktiskā viedokļa jaunais parametrs ļauj izstrādāt kodolu ar saderību ar 32 bitu lietojumprogrammām, taču pēc noklusējuma šis režīms ir izslēgts, lai samazinātu uzbrukumu virzienu uz kodolu, jo API saderībai ir mazāk testēti nekā galvenie kodola interfeisi.
- Turpināta izmaiņu pārsūtīšana no Rust-for-Linux filiāles, kas saistīta ar Rust valodas izmantošanu kā otro valodu draiveru un kodola moduļu izstrādē (Rust atbalsts pēc noklusējuma nav aktivizēts un nenoved pie Rust iekļaušanas obligāto atkarību sarakstā kodolam). Jaunajā versijā veikta pāreja uz Rust 1.73 versiju un piedāvāts saišu kopums darbam ar darba rindām (workqueues).
- Tika nodrošināta iespēja izmantot binfmt_misc mehānismu, lai pievienotu jaunu izpildāmo failu formātu (piemēram, Java vai Python kompilēto lietojumprogrammu palaišanai) atsevišķos nepārtrauktos nosaukumos (namespace).
- Cgroup kontrolieris cpuset, kas ļauj pārvaldīt CPU kodolu izmantošanu uzdevuma izpildes laikā, nodrošina vietējo un attālinātu sekcionēšanu (remote partition), kas atšķiras ar to, vai vecāku cgroup ir derīga sakņu sekcija vai nē. Cpuset ir pievienoti arī jauni iestatījumi „cpuset.cpus.exclusive” un „cpuset.cpus.exclusive.effective” ekskluzīvai saistīšanai ar CPU.
- BPF apakšsistēmā tika ieviesta izņēmumu apstrāde, kas tiek izpildīta kā steidzams izejas punkts no BPF programmas ar iespēju droši atgriezties uz iepriekšējām steka rāmjiem. Turklāt BPF programmās ir atļauts izmantot kptr rādītājus saistībā ar CPU.
- Ipasistēmā io_uring ir pievienota atbalsta operācijas ar futex, kā arī ieviestas jaunas operācijas: IORING_OP_WAITID (asinhronā waitid versija), SOCKET_URING_OP_GETSOCKOPT (getsockoptand variants), SOCKET_URING_OP_SETSOCKOPT (setsockopt variants) un IORING_OP_READ_MULTISHOT (vairāku lasīšanas operācijas, kas beidzas tikai tad, kad nav datu vai buferis ir piepildīts).
- Pievienota viegla vienvirziena FIFO rinda, kas prasa spin-lock tikai rindu noņemšanai procesa kontekstā un neprasa spin-lock atomārām pievienošanām rindā jebkurā kontekstā.
- Tika pievienots riņķveida buferis „objpool” ar mērogojamu augstā veiktspēja rindas realizāciju objektu piešķiršanai un atgriešanai.
- Pievienota sākotnējā daļa izmaiņu jaunā API futex2 realizācijai, kas atšķiras ar augstāku veiktspēju NUMA sistēmās, atbalsta izmērus, kas nav 32 bitu, un var tikt izmantota, lai aizstātu multiprogrammu sistēmisko izsaukumu futex().
- ARM32 un S390x arhitektūrām pievienots atbalsts aktuālajam BPF instrukciju kopumam (cpuv4).
- RISC-V arhitektūrā ir īstenota iespēja izmantot Clang 17 pieejamo Shadow-Call Stack pārbaudes režīmu, kas paredzēts, lai aizsargātu pret atgriezes adreses pārklāšanu funkcijā, kad ir notikusi steka pārrakstīšanās. Aizsardzības būtība ir saglabāt atgriezes adresi atsevišķā „ēnu” stekā pēc vadības nodošanas funkcijai un izvilkt šo adresi pirms izejas no funkcijas.
- Kernālas līdzīgu lapu apvienošanas mehānismā (KSM: Kernel Samepage Merging) ir pievienots jauns viedais atmiņas lapu skenēšanas režīms, kas uzrauga neizdevušos lapu skenēšanu un samazina to atkārtotas skenēšanas intensitāti. Jaunā režīma aktivizēšanai ir pievienota iestatījums /sys/kernel/mm/ksm/smart_scan.
- Ir pievienota jauna ioctl komanda PAGEMAP_SCAN, kas, izmantojot userfaultfd(), ļauj noteikt rakstīšanas faktus noteiktā atmiņas diapazonā. Šī jaunā funkcija varētu tikt izmantota sistēmā, lai saglabātu un atjaunotu procesu stāvokli CRIU vai spēļu anti-cheat sistēmās.
- Izmantošanas sistēmā ar Clang kompilatoru piemēru būvēšana ir noklusēta, iekļaujot perf apakšsistēmas piemērītus, kas rakstīti BPF programmu formātā.
- Ir noņemta vecā videobuf kārta, kas tika izmantota mediju apakšsistēmā framerūmju pārvaldīšanai un vairāk nekā pirms 10 gadiem tika aizstāta ar jauno videobuf2 realizāciju.
- Virtualizācija un drošība
- fscrypt apakšsistēmā ir pievienota iespēja šifrēt datus blokos, kas ir mazāki par failu sistēmas bloka izmēru. Šāda pieeja var būt nepieciešama, lai izmantotu aparatūras šifrēšanas mehānismus, kas atbalsta tikai mazas blokas (piemēram, UFS kontrolieri, kas atbalsta tikai 4096 izmēru, var tikt izmantoti ar failu sistēmu, kuras izmērs ir 16K).
- iommufd apakšsistēmā, kas ļauj pārvaldīt IOMMU (I/O Memory-Management Unit) atmiņas lapu tabulas caur failu descriptoriem no lietotāja telpas, ir pievienota jau neizdzēsto datu (dirty) izsekošana DMA operācijām, kas ir nepieciešama, lai noteiktu atmiņu ar neizdzēstiem datiem procesu migrācijas laikā.
- Landlock mehānismā, kas ļauj ierobežot grupas procesu mijiedarbību ar ārējo vidi, ir pievienota atbalsts TCP soketes piekļuves kontroles noteikumu definēšanai. Piemēram, var izveidot noteikumu, kas atļauj piekļuvi tikai tīkla portam 443, lai izveidotu HTTPS savienojumus.
- AppArmor apakšsistēmā ir pievienota piekļuves kontroles iespēja io_uring mehānismam un lietotāja identifikatoru (user namespaces) telpu izveidei, kas ļauj izvēles veidā atļaut piekļuvi šīm iespējām tikai noteiktiem procesiem.
- Ir pievienots apstiprināšanas API virtuālo mašīnu procesu ielādes integritātes apstiprināšanai.
- LoongArch sistēmās ir īstenota virtualizācijas atbalsts, izmantojot KVM hipervizoru.
- Izmantojot KVM hipervizoru RISC-V sistēmās, ir parādījies Smstateen paplašinājuma atbalsts, kas bloķē virtuālās mašīnas piekļuvi CPU reģistriem, kurus hipervizors acīmredzami neatbalsta. Arī viesu sistēmās ir pievienots Zicond paplašinājums, kas ļauj izmantot dažas nosacītas veselu skaitļu operācijas.
- Viesu sistēmās, kas darbojas KVM vadībā, x86 arhitektūras bāzes var izmantot līdz 4096 virtuāliem CPU.
- Tīkla subsistēma
- NVMe-TCP (NVMe pa TCP) draiverī, kas ļauj piekļūt NVMe krātuvēm caur tīklu, izmantojot TCP protokolu, ir pievienots atbalsts datu pārraides kanāla šifrēšanai, izmantojot TLS (tiek izmantots KTLS un fona process lietotāja telpā tlshd savienojuma saskaņošanai).
- Pakotņu plānotāja fq (Fair Queuing) veiktspējas optimizācija ir ļāvusi palielināt caurlaidspēju par 5% lielu slodžu apstākļos tcp_rr (TCP Request/Response) testā un par 13% ar neierobežotu UDP pakotņu plūsmu.
- TCP protokolā ir pievienota opcijas iespēja izmantot laika zīmogus (TCP TS) ar mikrosekundžu precizitāti (RFC 7323), kas ļauj precīzāk novērtēt aiztures laiku un izstrādāt progresīvākas pārslodzes kontroles moduļus. Lai to aktivizētu, var izmantot komandu 'ip route add 10/8 … features tcp_usec_ts'.
- TCP steka paplašinājumā ir pievienots TCP-AO (TCP autentifikācijas opcija, RFC 5925) atbalsts, kas ļauj verifikāciju TCP virsrakstiem, izmantojot MAC kodus, izmantojot modernākus algoritmus HMAC-SHA1 un CMAC-AES-128, nevis agrāk pieejamo TCP-MD5 opciju balstītu uz novecojušo MD5 algoritmu.
- Ir pievienots jauns virtuālo tīklu ierīču veids 'netkit', kurā datu pārsūtīšanas loģika tiek definēta ar BPF programmu.
- KSMBD, kas darbojas kā kodola līmeņa SMB serveris, ir pievienots atbalsts failu nosaukumu pārvēršanai, kas satur sastatņu pārus.
- NFS ir uzlabota plūsmu realizācija ar RPC pakalpojumiem. Ir pievienots rakstīšanas deleģēšanas atbalsts (NFSv4.1+). NFSD ir pievienots netlink apstrādātājs rpc_status. Ir uzlabots atbalsts NFSv4.x klientiem atkārtoti eksportējot knfsd.
- Aprīkojums
- Nouveau kodolaikā ir pievienota sākotnējā GSP-RM programmatūras atbalsta versija, kas tiek izmantota NVIDIA RTX 20+ GPU, lai pārvietotu GPU inicializācijas un vadības operācijas uz atsevišķu mikroprocesoru GSP (GPU System Processor). GSP-RM atbalsts ļauj Nouveau draiverim darboties, izsaucot programmatūru, nevis tieši programmējot aparatūras mijiedarbības operācijas, tādējādi ievērojami atvieglojot jaunu NVIDIA GPU atbalsta pievienošanu, izmantojot jau pieejamus izsaukumus inicializācijai un enerģijas patēriņa vadībai.
- AMDGPU draiverī ir īstenota GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 un DML2 atbalsts. Ir uzlabots bezšuvju ielādes atbalsts (bez mirgošanas, pārejot starp video režīmiem).
- i915 draiverī ir pievienots atbalsts Intel Meteor Lake čipiem un sākotnējā Intel LunarLake (Xe 2) īstenošana.
- Ir pievienots atbalsts asimetriskiem pārsūtīšanas kanāliem, kas iekļauti USB4 v2 specifikācijās (120/40G).
- Ir pievienots ARM SoC atbalsts: Qualcomm Snapdragon 720G (izmanto Xiaomi viedtālruņos), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (izmanto maršrutētājos un NAS).
- Ir pievienots Fairphone 5 viedtālruņa un ARM platformu atbalsts: Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 Powkiddy RGB30.
- Ir pievienots RISC-V platformu atbalsts Milk-V Pioneer un Milk-V Duo.
- Ir pievienots HUAWEI klēpjdatoru skaņas interfeisu atbalsts, kas tiek piegādāti ar AMD CPU. Ir pievienots atbalsts papildu skaļruņiem, kas tiek uzstādīti Dell Oasis 13/14/16 klēpjdatoros. Ir pievienots ASUS K6500ZC integrēto skaļruņu atbalsts. Ir pievienots klusuma indikatoru atbalsts HP 255 G8 un G10 klēpjdatoriem. Ir pievienots skaņu draiveru acp6.3 atbalsts. Ir pievienots profesionālo skaņu ieraksta interfeisu Focusrite Clarett+ 2Pre un 4Pre atbalsts.
Latvijas Brīvā programmatūras fonds ir izstrādājis pilnīgi brīvo Linux-libre 6.7 kodolu, no kura ir izņemti beigu programmu un draiveru elementi, kuri satur brīvas komponentes vai koda gabalus, kuru pielietojums ir ierobežots ražotāja. Versijā 6.7 ir atjaunots kods bloķēšanas operācijām dažādos draiveros un apakšsistēmās, piemēram, draiveros amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs un btqca. Tika izņemta kodu tīrīšana draiveriem localtalk un rtl8192u, jo tie tika izslēgti no kodola sastāva. Izņemti liekie tīrīšanas komponenti draiveriem xhci-pci, rtl8xxxu un rtw8822b, kas iepriekš tika pievienoti kļūdas dēļ. Vārdu tīrīšana bloķēšanas operācijās dts failos arhitektūrā Aarch64 ir veikta. Jaunajā draiverī mt7925, tps6598x, aw87390 un aw88399 ir izņemti bloķi.
Avots: opennet.lv
