Pärast kahte kuud arendust esitles Linus Torvalds Linuxi kernelit versioonis 6.7. Märkimisväärsemad muudatused hõlmavad: Bcachefs failisüsteemi integreerimist, Itanium arhitektuuri toe lõpetamist, Nouvea töötamise võimalust GSP-R püsivara kasutamisel, TLS-krüpteerimise toetamist NVMe-TCP-s, erandite kasutamise võimalust BPF-is, futexi toe io_uring-is, fq (Fair Queuing) ajakava jõudluse optimeerimist, TCP-AO (TCP Authentication Option) laienduse toe ja võimalust piirata võrgukohtumisi Landlocki kaitsemehhanismis, samuti juurdepääsuhalduse lisamist user namespace ja io_uringi kaudu AppArmor-i.
Uude versiooni on vastu võetud 18405 parandust 2066 arendajalt, plaastri suurus on 72 MB (muudatused puudutasid 13467 faili, lisati 906147 koodirida, kustutati 341048 rida). Eelmises väljaandes oli 15291 parandust 2058 arendajalt, plaastri suurus oli 39 MB. Umbes 45% kõigist 6.7 esitatud muudatustest on seotud seadme draiveritega, umbes 14% muudatustest on seotud riistvaraspetsiifilise koodi uuendamisega, 13% on seotud võrgu kihiga, 5% failisüsteemidega ja 3% tuuma sisemiste süsteemidega.
Peamised uuendused kerneli 6.7-s:
- Diskisüsteem, sisend/väljund ja failisüsteemid
- Kerneli koosseisu on aktsepteeritud Bcachefs failisüsteemi kood, kus püütakse saavutada XFS-le omane jõudlus, usaldusväärsus ja skaleeritavus, kombineerituna laienenud funktsionaalsuse elementidega, mis on olemas Btrfs ja ZFS-s. Näiteks toetab Bcachefs selliseid võimalusi nagu mitme seadme kaasamine ja mitmekihilised salvestuse seadistused (alumine kiht kiiresti kasutatavate andmete jaoks kiirete SSD-de alusel, ülemine kiht vähem nõutud andmete jaoks kõvakettadelt), replikatsioon (RAID 1/10), vahemälu, andmete läbipaistvad tihendamisrežiimid (LZ4, gzip ja ZSTD), olekuseisundite lõiked (snapshotid), kontrollsummade kaudu terviklikkuse verifitseerimine, võimalus salvestada Reed-Solomoni paranduskoodid (RAID 5/6) ja teabe salvestamine krüpteeritud kujul (kasutatakse ChaCha20 ja Poly1305). Jõudluse poolest ületab Bcachefs Btrfs-i ja teisi Copy-on-Write mehhanismil põhinevaid failisüsteeme ning näitab jõudlust, mis on lähedane Ext4-ile ja XFS-ile.
- Btrfs faili süsteemis on saadaval lihtsustatud kvoodirežiim, mis võimaldab saavutada kõrgemat jõudlust, jälgides ekstensioone ainult seal, kus need on loodud, mis oluliselt lihtsustab arvutusi ja suurendab jõudlust, kuid ei võimalda arvestada ekstensioone, mida jagavad mitmed osad.
- Btrfs-s on lisatud uus andmestruktuur "stripe tree", mis sobib loogiliseks ekstensioonide kaardistamiseks olukordades, kus füüsiline kaardistamine ei ühti erinevatel seadmetel. Struktuuri kasutatakse praegu RAID0 ja RAID1 rakendustes tsoonitud plokiseadmete jaoks. Tulevikus plaanitakse kasutada seda struktuuri ka kõrgema taseme RAIDis, mis lahendab mitmeid praegusest rakendusest tulenevaid probleeme.
- Ceph faili süsteemis on rakendatud kasutajate identifikaatorite kaardistamise tugi monteeritud faili süsteemide jaoks, mida kasutatakse konkreetse kasutaja failide seostamiseks monteeritud võõrasse partitsiooni teise kasutajaga praeguses süsteemis.
- efivarfs-s on lisatud võimalus määrata uid ja gid monteerimise ajal, et võimaldada UEFI muutujaid muuta protsesside poolt, mis on käivitatud ilma root õigusteta.
- exFAT-s on lisatud ioctl-kutsed faili süsteemi atribuutide lugemiseks ja muutmiseks. Null-suurusega kataloogide töötlemine on lisatud.
- F2FS-s on rakendatud 16K suuruste plokkide kasutamise võimalus.
- autofs automonteerimise mehhanism on üle viidud uue partitsioonide monteerimise API kasutamisele.
- OverlayFS-is on ettepanekud monteerimise valikute "lowerdir+" ja "datadir+" osas. Lisatud tugi OverlayFS sisemise monteerimise jaoks koos xattrs-iga.
- XFS-is on optimeeritud CPU koormust reaalajas plokkide jaotamise koodis. Tagatud on samal ajal lugemise ja FICLONE toimingute teostamise võimalus.
- EXT2 kood on üle viidud mälu lehtede folioide kasutamisele.
- Mälu ja süsteemiteenused
- Ia64 arhitektuuri tugi on lõpetatud, mida kasutasid Intel Itanium protsessorid, mille müük lõpetati täielikult 2021. aastal. Itanium protsessorid esitles Intel 2001. aastal, kuid ia64 arhitektuur ei suutnud konkureerida AMD64-ga, peamiselt tänu AMD64 kõrgemale jõudlusele ja sujuvama üleminekule 32-bitistelt x86 protsessoritelt. Lõpuks nihkus Intel'i huvi x86-64 protsessorite suunas, samas kui Itanium jäi kõrvale. serverid HP Integrity, mille tellimuste vastuvõtt lõpetati kolm aastat tagasi. Kood ia64 toe jaoks on eemaldatud tuumast pikkade hooldamispauside tõttu selle platvormi puhul; samas on Linus Torvalds väljendanud valmisolekut taastada ia64 tugi tuumas, kuid ainult siis, kui leitakse hooldaja, kes näitab selle platvormi kvaliteetset hooldust vähemalt aasta jooksul väljaspool peatuuma.
- Tuumakäskude read on täiendatud parameetriga "ia32_emulation", mis võimaldab käivitamisel sisse ja välja lülitada 32-bitise režiimi emulatsiooni toe x86-64 arhitektuuril valmistatud tuumades. Praktikas võimaldab uus parameeter ehitada tuuma, mis toetab ühilduvust 32-bitiste rakendustega, kuid vaikimisi on see režiim välja lülitatud, et vähendada tuuma ründevõttu, kuna ühilduvuse API-d on vähem testitud kui põhituuma liidesed.
- Jätkub muudatuste üleviimine Rust-for-Linux harust, mis on seotud Rust keele kasutamisega teise keelena draiverite ja tuuma moodulite arendamisel (Rust tugi ei ole vaikimisi aktiivne ja ei too Rust'i arendust sõltuvuste kohustuslikuks tuuma koostisosaks). Uues versioonis on üleminek loodud Rust 1.73 väljaanne ja pakutud sidumise komplekt tööde järjekordadega (workqueues).
- Kasutamiseks on võimaldatud binfmt_misc mehhanismi toetamine uuteks täidesaatvate failide formaatide jaoks (näiteks Java või Python keeles kompileeritud rakenduste käivitamiseks) eraldi privileege mitteomavates nimede ruumides (namespace).
- Cgroup-kontrolleris cpuset, mis võimaldab hallata CPU tuumade kasutamist ülesande täitmisel, on tagatud kohaliku ja eemaloleva sektsioonimise (remote partition) jagamine, mis erineb selle poolest, kas vanem cgroup on õige juuresektsioon või mitte. Cpusetisse on lisatud ka uued seaded „cpuset.cpus.exclusive“ ja „cpuset.cpus.exclusive.effective“ eksklusiivseks sidumiseks CPU-le.
- BPF-alamsüsteemis on rakendatud erandi tugi, mis töödeldakse kui hädavajalik väljumine BPF-programmist koos ohutu stacki raamide avamise võimalusega. Lisaks on BPF-programmides lubatud kptr-punktide kasutamine CPU sidumisel.
- Alamsüsteemi io_uring on lisatud toe operatsioonide jaoks futexitega, samuti on rakendatud uusi operatsioone: IORING_OP_WAITID (asünkroonne versioon waitid), SOCKET_URING_OP_GETSOCKOPT (getsockopt variatsioon) ja SOCKET_URING_OP_SETSOCKOPT (setsockopt variatsioon) ning IORING_OP_READ_MULTISHOT (korduvad lugemistoimingud, mis ei peatu, kuni andmed on olemas või puhver on täis).
- Lisatud on kergekaaluliste ühekaupa FIFO-järjekordade rakendamine, mis nõuab spin-lock'i vaid järjekorrast eemaldamiseks protsessi kontekstis ja mitte nõudvat spin-lock'i aatomseks lisamiseks järjekorda igas kontekstis.
- Lisatud on ringpuhver „objpool“ koos skaleeritava kõrge jõudlusega järjekorra rakendusega objektide eraldamiseks ja tagastamiseks.
- Lisatud on muudatuste algne osa uue API futex2 rakendamiseks, mis paistab silma kõrgema jõudlusega NUMA-süsteemides, toetab mitte 32-bitiseid suurusi ja võib asendada multiplexer-süsteemikutsungi futex().
- ARM32 ja S390x arhitektuuride jaoks on lisatud toetus ajakohastele BPF käsu kogumitele (cpuv4).
- RISC-V arhitektuuri jaoks on rakendatud võimalus kasutada Clang 17-s saadaval olevat Shadow-Call Stack kontrollimise režiimi, mis on ette nähtud tagasipööramise aadressi kaitsmiseks funktsioonist väljumisel, kui siiras on ületatud. Kaitse olemus seisneb selles, et pärast funktsioonile kontrolli üleandmist salvestatakse tagasipööramise aadress eraldi „varjatud“ stekkis ning see aadress kaevatakse välja enne funktsioonist väljapääsu.
- KSM-i (Kernel Samepage Merging) mehhanismi on lisatud uus nutikas mälulehtede skaneerimise režiim, mis jälgib skaneerimisest ebaõnnestunud lehti ja vähendab nende taasoskansimise intensiivsust. Uue režiimi aktiveerimiseks on lisatud seade /sys/kernel/mm/ksm/smart_scan.
- Lisatud uus ioctl-käsk PAGEMAP_SCAN, mis kasutamisel koos userfaultfd()-ga võimaldab määrata kirjutamiste faktid kindlasse mäluribasse. Uut funktsionaalsust saab näiteks kasutada CRIU protsesside oleku salvestamiseks ja taastamiseks või mängude anti-petmissüsteemides.
- Ehitusüsteemis on vaikimisi, kui kasutusel on Clang kompilaator, aktiveeritud perf alamsüsteemi kasutusnäidete kogumine, mis on kirjutatud BPF-programmidena.
- Eemaldatud on vana videobuf kiht, mis oli kasutusel raamivoo juhtimiseks meediaalamsüsteemis ja asendatud üle 10 aasta tagasi uue videobuf2 teostusega.
- Virtualiseerimine ja turvalisus
- Fscrypt alamsüsteemi on lisatud võimalus krüpteerida andmeid plokkides, mille suurus on väiksem kui failisüsteemi ploki suurus. Seda võib vajada riistvaraliste krüpteerimismehhanismide rakendamiseks, mis toetavad ainult väikseid plokke (näiteks UFS-kontrollerid, mis toetavad ainult 4096 ploki suurust, saavad kasutada FS-i, mille ploki suurus on 16K).
- Iommufd alamsüsteemi, mis võimaldab hallata sisse-/väljundmälu IOMMU (I/O Memory-Management Unit) leheküljed läbi kasutaja ruumi failide descriptorite, on lisatud mitte veel vahemälust kustutatud (dirty) andmete jälgimine DMA operatsioonide jaoks, mis on vajalik mälu määratlemiseks, millel on kustutamata andmed protsesside migratsiooni ajal.
- Landlock mehhanismi, mis võimaldab piirata protsessigruppide suhtlemist väliskeskkonnaga, on lisatud tugi TCP-sokettide juurdepääsu reeglite määratlemiseks. Näiteks võib luua reegli, mis lubab juurdepääsu ainult 443 võrguporti kaudu HTTPS-ühenduste loomisel.
- AppArmore alamsüsteemi on lisatud võimalus hallata juurdepääsu io_uring mehhanismile ja luua kasutaja identifikaatori (user namespace) nimesid, mis võimaldab valikuliselt lubada juurdepääsu nendele võimalustele ainult teatud protsessidele.
- Lisatud on atesteerimise API virtuaalmasinate protsesside laadimise terviklikkuse kinnitamiseks.
- LoongArch-süsteemides on rakendatud virtualiseerimise tugi KVM-hüperviisori abil.
- RISC-V süsteemides, kus kasutatakse KVM-hüperviisorit, on lisatud Smstateen laiend, mis blokeerib virtuaalmasina juurdepääsu CPU register'itele, mida hüperviisor selgelt ei toeta. Samuti on lisatud tugi Zicond laiendusele, mis võimaldab teatud tingimuslike täisarvutegevuste kasutamist külgsete süsteemide sees.
- KVM-hüperviisori all töötavates x86 arhitektuuriga külgsete süsteemide puhul on lubatud kasutada kuni 4096 virtuaalset CPU-d.
- Võrgusüsteem
- NVMe-TCP (NVMe üle TCP) draiverisse, mis võimaldab juurdepääsu NVMe-kettale üle võrgu, on lisatud andmeedastuskanali krüpteerimise tugi TLS-i abil (kasutatakse KTLS-i ja kasutaja ruumi tausta protsessi tlshd ühendumise kokkuleppimiseks).
- Pakettide plaanijate fq (Fair Queuing) jõudluse optimeerimisel on saavutatud 5% suurune läbilaskevõime tõus suure koormuse korral tcp_rr (TCP Request/Response) testis ja 13% piiramatute UDP-pakkide voogudes.
- TCP-protokolli on lisatud valikuline ajamärkide (TCP TS) kasutamise võimalus mikrosekundi täpsusega (RFC 7323), mis võimaldab täpsemalt hinnata viivitusi ja luua täiustatud ülekandeülesande mooduleid. Lubamiseks võib kasutada käsku „ip route add 10/8 … features tcp_usec_ts“.
- TCP-kihis on lisatud tugi TCP-AO (TCP Authentication Option, RFC 5925) laiendusele, mis võimaldab verifitseerida TCP-pealkirju MAC-koodide (Message Authentication Code) abil, kasutades kaasaegseid algoritme HMAC-SHA1 ja CMAC-AES-128, jättes kõrvale vananenud MD5 põhise TCP-MD5 valiku.
- Lisatud on uus virtuaalsete võrgu seadmete tüüp „netkit“, mille andmeedastuslogika on määratud BPF-programmi abil.
- KSMBD-s, mis töötab tuumatasandil SMB-serverina, on lisatud toetust kaheosalistest sümbolitest koosnevate failinimede muutmiseks.
- NFS-is on parandatud RPC-teenustega voogude rakendust. Lisatud on kirjutamise delegeerimise tugi (NFSv4.1+ jaoks). NFSD-s on lisatud netlink-töötleja rpc_status. Parandatud on NFSv4.x klientide toetust korduvatel eksportimistel knfsd-s.
- Varustus
- Nouveau tuuma moodulisse on lisatud esmase tugi GSP-RM firmware'ile, mida kasutatakse NVIDIA RTX 20+ GPU-de puhul GPU initsialiseerimise ja haldamise operatsioonide edastamiseks eraldi GSP (GPU System Processor) mikrokontrollerile. GSP-RM tugi võimaldab Nouveau draiveril töötada läbi firmware'i, mitte otse riistvaraga suhtlemise operatsioonide programmeerimise kaudu, mis lihtsustab uute NVIDIA GPU-de toe lisamist, kasutades juba olemasolevaid kutseid initsialiseerimiseks ja energiatarbimise haldamiseks.
- AMDGPU draiverisse on rakendatud tugi GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 ja DML2. Üksikasjalikku tuge on parandatud sujuva laadimise (ilma vilkuvuseta videorežiimi vahetamisel) osas.
- i915 draiverisse on lisatud tugi Intel Meteor Lake kiipidele ja algne rakendus Intel LunarLake (Xe 2).
- On lisatud tugi asümmeetriliste edastuskanalite jaoks, mis on lisatud USB4 v2 spetsifikatsiooni (120/40G).
- On lisatud ARM SoC tugi: Qualcomm Snapdragon 720G (kasutatakse Xiaomi nutitelefonides), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (kasutatakse ruuteri ja NAS jaoks).
- On lisatud tugi nutitelefonile Fairphone 5 ja ARM-plaatidele Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 Powkiddy RGB30.
- On lisatud tugi RISC-V plaatidele Milk-V Pioneer ja Milk-V Duo.
- On lisatud HUAWEI sülearvutite heliliidese tugi, mis on varustatud AMD CPU-dega. On lisatud tugi täiendavatele kõlaritele, mis on paigaldatud Dell Oasis 13/14/16 sülearvutitele. On lisatud tugi ASUS K6500ZC integreeritud kõlaritele. On lisatud tugi HP 255 G8 ja G10 sülearvutite vaikuseindikaatorile. On lisatud tugi helidraiveritele acp6.3. On lisatud tugi professionaalsetele helisalvestusliidesele Focusrite Clarett+ 2Pre ja 4Pre.
Samaaeg Latin-Ameerika Vaba Tarkvara Fond esitas täielikult tasuta südamiku variandi 6.7 — Linux-libre 6.7-gnu, kustutatud kindla tootja poolt piiratult kasutatavatest mittetäiustavatest koostisosadest ja koodilõikudest. Väljalaskes 6.7 on värskendatud blobs-puhastuskoode erinevates draiverites ja alamsüsteemides, nagu amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs ja btqca. Eemaldatud on localtalk ja rtl8192u draiverite puhastuskoode, kuna need on tuumast välja jäetud. Ülejäänud xhci-pci, rtl8xxxu ja rtw8822b draiverite puhastuskomponendid, mis olid varem vale lisandid, on eemaldatud. Aarch64 arhitektuuri dts-failides on tehtud blobide nimede puhastus. Uute draiverite mt7925, tps6598x, aw87390 ja aw88399 blobs on eemaldatud.
Allikas: opennet.ru
