Kaks kuud kestnud arendustööd pärast esitles Linus Torvalds Linuxi tuuma versiooni 6.18. Peamised muudatused hõlmavad: dm-pcache diskikappi kasutamist energianeutraalses mälus (PMEM), Bcachefs'i eemaldamist, XFS online-reeglite kontrollimist, Binder'i (Android IPC) ja Tyr (GPU Mali) draivereid Rustis, USB-draiverite loomise võimalust Rustis, SLUB mäluhalduri vahemälu optimeerimist, ruumide nimede adresseerimist failidesse, vahetusuuringute (swap) kiirendamist, BPF-programmide digitaalallkirja kontrollimist, Intel CET virtualiseerimist KVM-is, PSP võrguprotokolli (TLS ja IPsec hübriid), IP laienduse AccECN toetust ja UDP-steki optimeerimist.
Uude versiooni on lisatud 15035 parandust 2217 arendajalt, patši suurus on 45 MB (muudatused hõlmasid 13142 faili, lisatud 601897 koodirida, eemaldatud 355006 rida). Eelmises väljaandes oli 14334 parandust 2118 arendajalt, patši suurus oli 46 MB. Ligikaudu 40% kõigist 6.18 esitatud muudatustest puudutavad seadme draivereid, umbes 16% muudatusi on seotud seadme arhitektuuriga, 12% on seotud võrgu vahemälu, 5% failisüsteemidega ja 3% tuuma sisemiste alamsüsteemidega.
Peamised uuendused tuumas 6.18 (1, 2, 3):
- Disski alamsüsteem, sisend/väljund ja failisüsteemid
- Seadmestikukaardile on lisatud dm-pcache töötleja, et kasutada püsivamat mälu (CXL-mälu, mis on adresseeritud DAX-seadmest) lisakõrge jõudlusega vahemäluna madalama kiirusest tavalisest ketast või mälupulgast. Dm-pcache tagab vahemälu sisu säilimise avariide korral (crash-safe) energianeutraalse mälu, metainformatsiooni kopeerimise ja andmete ning metainformatsiooni terviklikkuse kontrollimise kaudu CRC32 kontrollsummade abil. Hetkel on toetatud ainult vahemälu viivitusega kirjutamise režiimis (write-back).
- Tuuma koodist on eemaldatud Bcachefs failisüsteem, mis nüüd jaotatakse välise moodulina, mida koostatakse DKMS (Dynamic Kernel Module Support) tööriistade abil. Bcachefs kood võib tagasi tuuma tuua, kui Kent Overstreet tõestab tõeliselt võimalust suhelda teiste tuuma arendajatega ja järgida väljakujunenud arenduseeskirju.
- Süsteemi kutses pwritev2() on lisatud lipp RWF_NOSIGNAL, mis keelab SIGPIPE signaali saatmise katkestatud anonüümsete torude või socketite kirjutamisel.
- Procfsisse on lisatud mountimisvalik «pidns» protsessi identifikaatori (PID namespace) ruumide näitamseks. Näiteks: «mount -t proc -o pidns=/proc/self/ns/pid proc /tmp/proc».
- XFS-is on kuulutatud stabiilseks ja vaikimisi sisselülitatud online-režiimis fsck tööriista kasutamise võimalus, et kontrollida ja parandada tuvastatud probleeme ilma failisüsteemi lahti monteerimata. Uued süsteemikutsed file_getattr ja file_setattr on lisatud, et muuta erifailide atribuutide (iga inode) määratlusi. KConfigis on vaikimisi välja lülitatud XFS_SUPPORT_V4 (XFS versioon 4) ja XFS_SUPPORT_ASCII_CI (ASCII-tähemärkide suuruse arvestamise režiim), mis on kuulutatud aegunuks. Aegunud mountimise valikud attr2, noattr2, ikeep ja noikeep on eemaldatud.
- MD RAID-sse on sisse viidud uus bitikaardi tüüp — llbitmap (lockless bitmap), mis töötab lukustusteta ja tagab kõrgema jõudluse.
- Üldstruktuurist «inode» on eraldatud teave, mis on seotud krüpteerimise ja kontrollimisega (näitajad i_crypt_info ja i_verity_info). See muudatus võimaldab vähendada mälutarvet failisüsteemides, mis ei toeta krüpteerimist ja kontrollimist.
- FUSE süsteemis on lisatud funktsioon copy_file_range() ja vahetu kopeerimise toetamine, kasutades 64-bitist suurust (varem oli toetatud ainult 32-bitine suurus). Lisatud on ka synchroniseerimise režiiinitu sisselülitamine mountimise ajal (FUSE_DEV_IOC_SYNC_INIT).
- ext4 failisüsteemis on realiseeritud 32-bitiste kasutajaidentifikaatorite (uid) ja grupiidentifikaatorite (gid) kasutamise võimalus reservitud plokkide juurdepääsul. Lisatud on ioctl-tegevused, et määrata ja lugeda mountitud failisüsteemide superploki parameetreid (tune2fs saab muuta parameetreid superplokis ilma kirjutamisõiguseta plokiseadmisse). Aegunud seaded, mis olid spetsiifilised ext3-le, on täielikult eemaldatud.
- f2fs-ile on lisatud mountimisvalik «lookup_mode», et valida otsimise režiim: perf — vahekaartide põhjal, compat — lineaarne otsing, auto — automaatne valik. Režiimi muutmine on mõttekas konfiguratsioonides, kus kaustade otsingus ei arvestata sümbolite suurust. Praegust otsimisrežiimi saab teada failist «/sys/fs/f2fs/<device>/effective_lookup_mode». Lisatud on inode'i reserveerimise võimalus, mis on saadaval ainult privileegitud kasutajatele.
- Overlayfs-s on lisatud märguanne, et õiguste kontrollimise režiim käivitada FS-i tasemel (spetsiifiliste kaustade seade pole veel toetatud).
- BTRFS-is on parandatud operatsioonide paralleelse töö korraldamist, kui lugemise koormus on kõrge ja kirjutamise koormus madal, lühendatud tehingute kinnitamise aega ning suurenenud sünkroonimise kiirus (minutist kümne sekundi juurde). Samuti on antud võimalus kasutada plokke (bs), mis on suuremad kui mälu lehekülje (ps) suurus.
- KSMBD (SMB-server, mis töötab kernel-tasandil) on lisatud parameeter, et piirata maksimaalset ühenduste arvu ühest. IP-aadressidsmbdirect, smbclient ja smbserver on üle viidud tüüpiliste kernel-struktuuride kasutamisele.
- SQUASHFS-is on implementeeritud võimalus kasutada süsteemi kutse lseek() jaoks SEEK_DATA ja SEEK_HOLE valikute kaudu, et otsida andmeid ja tühimoosi hõreda failides. Mõnede testide käigus on leitud, et hõredate failide kopeerimise jõudlus on suurenenud kuni 150 korda.
- EXFAT-is on lisatud toetust ioctl FS_IOC_GETFSLABEL ja FS_IOC_SETFSLABEL jaoks sektsioonimärgete lugemiseks ja kirjutamiseks. Pakutakse võimalust muuta mountimise valikuid remontimise ajal. Kiirus on suurenenud bitikaartide laadimisel.
- NTFS3-s on lisatud toetus ioctl FS_IOC_GETFSLABEL ja FS_IOC_SETFSLABEL jaoks sektsioonimärgete lugemiseks ja seadmiseks.
- Mälu ja süsteemiteenused
- Sisestatud on Binder-i mehhanismi rakendus, mis on kirjutatud Rusti keeles. Binderit kasutatakse Androidis protsesside vahelise suhtluse ja kaugkutsete korraldamiseks (üks Androidi protsess saab kutsuda meetodi või funktsiooni teises Androidi protsessis, kasutades Binderit tuvastamiseks, kutsumiseks ja argumentide edastamiseks protsesside vahel). Binderi kood on kirjutatud Rusti keeles Google’i algatuse raames, et suurendada Androidi turvalisust.
- SLUB-is, südamiku mälu allocatoris, on teostatud valikuline kihi cache 'sheaves', mis kasutab mitut vahemälu, millest igaüks on seotud ühele CPU tuumale, mis võimaldab ühe tuuma poolt mälu eraldamise või vabastamise operatsioonide lokaliseerimist. Selline cache on suurendanud südamiku mälu eraldamise ja vabastamise jõudlust, vähendades südamike vahelise sünkroniseerimise primitiivide ülemineku vajadust. Testide käigus on leitud jõudluse tõusu vahemikus 6,3% kuni 31%, sõltuvalt koormuse tüübist.
- On lisatud võimalus luua failide deskriptorid, mis on seotud spetsiifilise nimetsükli (namespace) tasemega. Erinevalt nimetsüklite juurde pääsemisest identifikaatorite kaudu (/proc//ns/), on failide deskriptor seotud konkreetse nimetsükliga ja lõpetatakse olukord, kus identifikaatori korduv väljaandmine ja viitamine teisel objektile. Koos PIDFD-de kasutamisega toimub nimetsüklit viitavate failides deskriptorite avamine open_by_handle_at() ja name_to_handle_at() funktsioonide kaudu.
- Teostatud on „Swap Table“ mehhanismi rakendus, mis suurendab vahetuse jõudlust. Kiirus saavutatakse tänu vahetust lacache’i kasutamise konkurentsi vähendamisele, tõhusamale otsimisele vahemälus ja fraktsioneerimise vähenemisele. Swap Table'i baasil olev backend on kasutusel vahetuse vahemälu jaoks, asendades XArray baasi, mis on keskmiselt suurenenud 5-20% võrra jõudlust. Testis usemem suurenes läbisõit 17-28% võrra ja mitmeotstarbelise südamiku kokkupanemise teste kestus vähenes 1,12-3,19% võrra; redis-benchmark testi töötlusnumbrid kasvasid 6-7%.
- Zswap alamsüsteem on viidud otse zsmalloc süsteemi mällu eraldamise kasutamisele, asendades zpooli kihi, mida enam ei kasutata ja on nüüd kernast eemaldatud.
- x86 süsteemide mikrokoodi laadurite käitumise juhtimiseks on rakendatud kaheastmeline käsk 'microcode=flagide loend'. Uus võimalus on nüüd asendanud 'microcode.force_minrev' ja võimaldab ka määrata minimaalset versiooni, mida soovitakse laadida.
- On alustatud üleminekutehnika organisatsiooni reformimist, et vähendada ära jäänud „page“ struktuuri, mis on mõeldud mälu lehekülgede haldamiseks. Lisatud on tüüp 'memdesc_flags_t' üldiselt kasutada märke, mida saab kasutada pärast oodatavat tulevikus välja määrama teistsuguseid struktuure slab ja foliantide (folio) jaoks.
- Altera Nios II (FPGA baasil olev pehme protsessor) protsessorite nios2 arhitektuurile on rakendatud clone3() süsteemi kutse toetamine.
- KConfig'i tuumiku konfiguratsiooni on lisatud 'transitional' atribuut, mida saab kasutada seadete märkimiseks, mis ei ole nähtavad kasutajaliidestes, nagu 'make menuconfig', ja ei kuulu genereeritud konfiguratsioonifailidesse. Atribuudi peamine eesmärk on lihtsustada valikute ümbernimetamise protsessi tagades samal ajal tagasiühilduvuse.
- Clang kompilaatori minimaalne versioon, millega tuum saab kokku panna, on tõstetud LLVM tööriistakomplekti versioonini 15. Debian 12 ja Ubuntu 22.04 pakuvad LLVM versiooni 14.
- Eelmise versiooni muudatuste üleviimine Rust-for-Linux harust jätkub, mis on seotud Rust'i keele kasutamisega teise keele allikana draiverite ja tuumamoodulite arendamiseks (Rust'i tugi ei ole vaikimisi aktiivne ja see ei muuda Rust'i tuuma kohustuslikuks koostuskomponendiks). Uues versioonis on Rust'i koodile rakendatud mäluhaldusoperatsioone, maple tree struktuuri, DebugFS failide loomise võimalust ja bitiväljade manipuleerimise funktsioone. Draiverite arendamiseks on laiendatud API juurdepääsu. USB-seadmete draiverite arendamiseks on lisatud täielik abstraktsioonide komplekt (näide USB-draiverist). Perf utiliiti on lisatud toetus rustc kompilaatori genereeritud silte.
- Virtualiseerimine ja turvalisus
- Lisatud on krüptograafilise allkirjastamise kontrollimise tugi laaditavatele BPF-programmidele. Edaspidi laiendatakse seda võimalust vahenditega, mis määravad reeglid allkirjastatud BPF-programmide laadimiseks ja pakuvad piiramatutulijatele juurdepääsu tõendatud BPF-programmidele.
- KVM hüperviisoris on rakendatud Intel CET (Control-flow Enforcement Technology) virtuaalituse tugi, mis on mõeldud kaitsma ekspluateerimise vastu, mis kasutab tagasi-otsitud programmeerimise (ROP) meetodeid. Kaitse olemus seisneb selles, et pärast juhtimise edastamist funktsioonile salvestab protsessor tagasisuunade aadressi mitte ainult tavapärases virnas, vaid ka eraldi varjuvirnas, mida ei saa otse muuta.
- Lisatud on võimalus kasutada rohkem kui 255 CPU-d külgkontrollitavates süsteemides, mis töötavad Bhyve hüperviisori all FreeBSD 15 hostides.
- Lisatud on dibs (Direct Internal Buffer Sharing) kiht hallatud jagatud mälubufferite jaoks isoleeritud keskkonnas, näiteks hüperviisis või Linuxi tuuma eksemplaris.
- Auditi allosas on lisatud tugi mitmete samaaegselt aktiveeritud LSM (Linux Security Module) moodulite töötamiseks.
- Lisatud on virtio-draiver spi-virtio SPI-seadme (Serial Peripheral Interface) juurdepääsuks. virtuaalmasinad.
- KVM hüperviisoresse on lisatud SEV-SNP CipherText Hiding režiimi tugi, mis blokeerib kaitstud külgkontrollitavate süsteemide mälu krüptoteksti lugemise mitteautorisatsiooniga CPU poolt.
- Lisatud on qtee draiver TEE-ökosüsteemidele (Trusted Execution Environment) Qualcommi kiipide jaoks.
- Võrgu alamsüsteem
- Lisatud on TCP-ühenduste krüptimise tugi, kasutades Google'i välja töötatud PSP (PSP Security Protocol) protokolli, et krüpteerida liiklust andmekeskuste vahel. PSP tagab krüptimise, krüptograafilise terviklikkuse kontrolli ja allika autentimise, rakendades teatud moodust pidev TLS ja IPsec protokollide võimekuste kombinatsiooni. PSP rakendab krüptimist individuaalsetes võrguühendustes, mitte kogu sidekanalis. PSP kasutab erinevaid krüpteerimisvõtmeid erinevatele tunnustatud TCP-ühendustele, et tagada liikluse rangem isoleerimine erinevate rakenduste ja töötlejate vahel. CPU koormuse vähendamiseks on toeks krüpteerimisvõimetuse ja dekrüpteerimise ülesanne ühenduskaartide (offload) poole. Andmete edastamiseks kasutatakse UDP protokolli, mille kohal edastatakse originaal TCP-paketi sisu.

- Lisatud on esmane tugi AccECN (Accurate Explicit Congestion Notification) laiendusele, mis on täiustatud versioon ECN laiendusest, mis võimaldab hostidel koormuse korral IP-pakette märgistada, selle asemel et need kõrvaldada, mis võimaldab määrata ummistuse esialgse etapi sidekanalites ilma pakettide kadudeta. Originaalses ECN-i laienduses on piirang, mis lubab ühel TCP andmeedastus-tsüklil (RTT, Round-Trip Time, päringu saatmine ja vastuse vastuvõtt) edastada ainult ühte koormuse signaali. AccECN eemaldab selle piirangu ja võimaldab saajal edastada saatjale mitmeid koormusmärgiseid TCP-paketi päises. Koormuse juhtimise algoritmid saavad saadud teavet kasutada, et täpsemalt reageerida koormusele ja mitte kasutada järsku pakettide edastamise vähendamist kerge koormuse tekkimisel.
- UDP-stekis on optimeeritud sissetulevate pakettide töötlemine DDoS-rünnakute korral, mis toovad kaasa suure hulga paketid ühe või mitme UDP-soketi. Optimeerimised, nagu konkurentsi tõkete vähendamine, andmestruktuuride paigutuse optimeerimine mälus ja NUMA (Non-Uniform Memory Access) arhitektuuri arvestavad lukustused, on suurendanud UDP-pakettide vastuvõtu tulemuslikkust 47% ja enam äärmuslikes tingimustes.
- NFS-serveris on rakendatud võimalus keelata sissetuleva/kohtuvahetuse vahemälu, mis võimaldab kasutada NFS-serverit väikesemälu süsteemides (näiteks vähendatud pilvesüsteemides). Vahemälu keelamine võib samuti olla kasulik koormatud NFS-serverites, et vältida kohalike salvestite andmete vahemälust eemaldamist NFS vahemälu jaoks mälu vabastamise tõttu.
- Sissetulevate ja väljuvate pakettide maksimaalne suurus võrgu sokettide jaoks (net.core.rmem_max ja net.core.wmem_max) on suurendatud 2 MB-lt 4 MB-le. Vaikimisi suurus ei ole muutunud (net.core.rmem_default ja net.core.wmem_default = 2 MB).
- Lisatud draiver Qualcomm PPE (Packet Processing Engine) võrgutegevuse kiirendamiseks, mida rakendatakse Qualcomm SoC IPQ9574-s.
- Lisatud on TCP-ühenduste krüptimise tugi, kasutades Google'i välja töötatud PSP (PSP Security Protocol) protokolli, et krüpteerida liiklust andmekeskuste vahel. PSP tagab krüptimise, krüptograafilise terviklikkuse kontrolli ja allika autentimise, rakendades teatud moodust pidev TLS ja IPsec protokollide võimekuste kombinatsiooni. PSP rakendab krüptimist individuaalsetes võrguühendustes, mitte kogu sidekanalis. PSP kasutab erinevaid krüpteerimisvõtmeid erinevatele tunnustatud TCP-ühendustele, et tagada liikluse rangem isoleerimine erinevate rakenduste ja töötlejate vahel. CPU koormuse vähendamiseks on toeks krüpteerimisvõimetuse ja dekrüpteerimise ülesanne ühenduskaartide (offload) poole. Andmete edastamiseks kasutatakse UDP protokolli, mille kohal edastatakse originaal TCP-paketi sisu.
- Seadmed
- Ytu core'isse on võetud Rustis kirjutatud Tyr draiver, mis tagab GPU ARM Mali toimimise, kus rakendatakse CSF (Command Stream Frontend) tehnoloogiat, näiteks Mali G310, G510 ja G710. Draiver ei ole veel valmis tavakasutajate pidevaks kasutamiseks ja seda käsitletakse eksperimentaalse prototüübina, et testida Rust-programmeerimiseks draiverite arendusabstraktsioone.
- HID (Inimese sisendi seade) liidese draiveritesse on lisatud toetus taktiiliselt tagasisidet andvatele puuteplaatidele ja vajutusjõu anduritele.
- Tööd on jätkatud Intel Xe arhitektuuri GPU-de drm-draiveri (Direct Rendering Manager) Xe kallal, mida kasutatakse Intel Arc seeria graafikakaartides ja integreeritud graafikas alates Tiger Lake protsessoritest. Uues versioonis on lisatud madvise liides, välja on lülitatud SR-IOV PF (Single Root I/O Virtualization Physical Function) toetus, saavutatud on seadme valideerimiseks Intel PSMI režiimi toetus, haldussüsteemide vigade edastamiseks on rakendatud tarkvarasideemete töötlemine, rakendatud SLPC energia tarbimise profiil, lisatud on toega lavaliste vahemälude laadimine (näiteks jahutuskontrollerile ja pingeste regulaatorile) draiveri kontrollimise ajal.
- AMDGPU draiveris on lisatud tuge Cyan Skillfish APU seadmetele, parandatud on AMD GCN 1.0 tuge, saavutatud on ühilduvus criu tööriistadega, sysfs-s on lisatud temperatuuri mõõdikud, MMIO remapimise päringud kasutajaruumi on lubatud.
- i915 draiveris on lisatud Wildcat Lake pereliikmete toetus ja parendatud töötlemist GPU-dega Jasper Lake, Elkhart Lake, Gen7 ja Gen6.
- Nouveau draiveris on vaikimisi kasutusele võetud NVIDIA GSP-pakettide ja parendatud on vigade töötlemist.
- NVIDIA GSP-pakettide draiveri Nova komponentide integreerimist on jätkatud, mida rakendatakse alates NVIDIA GeForce RTX 2000 seeriast, millel on Turing mikroarhitektuur. Draiver on kirjutatud Rustis. Uues versioonis on laiendatud GSP-paketide tuge, parendatud on makro «register!» teostamist, lisatud on PCI-seadmete klasside ja tootjate identifikaatorite toetus.
- Lisatud draiver rocket NPU kiirendite jaoks, mida rakendatakse Rockchip RK3588 SoC-s.
- Draiverisse on lisatud kernel'i parameeter «boot_display», et valida väljundseade, mis kuvaks laadimisprotsessi mitme GPU süsteemides.
- vesadrm draiveris on rakendatud 8-bitiste palettide tugi.
- msm draiverisse on lisatud Adreno 663 GPU toetus ja rakendatud energiatõhususe vähendamise tehnoloogia IFPC (Inter Frame Power Collapse).
- panthor draiverisse on lisatud Mali-G710, Mali-G510, Mali-G310, Mali-Gx15, Mali-Gx20 ja Mali-Gx25 GPU toetus.
- Lisatud on toetus ASoC Qualcomm Glymur ja PM4125 helisüsteemidele, Realtek RT1321, Shanghai FourSemi FS2104/5S, Texas Instruments PCM1754 ja TAS2783A, qcs615, CS35L56 B2, tas2118, tas2x20, tas5825 helikaartidele. Lisatud on USB helikaartide tugi Tascam US-144mkII ja Presonus S1824c.
- Lisatud ARM CPU Cortex-A320/A520AE/A720AE ja C1-Nano/Pro/Premium/Ultra toetus.
- Lisatud ARM-plaatide, SoC ja seadmete tugi: Apple M2 Pro, M2 Max ja M2 Ultra, Sony Xperia SP, Samsung Galaxy S22, Samsung Galaxy S20 FE, ASUS Eee Pad Slider SL101, Lenovo ThinkBook 16, HP Omnibook X14 X1P42100, Dell Inspiron 7441 / Latitude 7455, Sige1, NanoPi Zero2, Axis Artpec8, NXP i.MX91, ROCK 2A/2F, Qualcomm Lemans Auto, Renesas RZ/T2H, RZ/N2H, RZ/T2H ja RZ/N2H, Aspeed AST27xx, Meta Clemente BMC, Netcube Nagami som, Tqma91xx, Ultratronik i.MX8MP Ultra-MACH, i.MX8ULP EVK9, Buffalo WXR-1750DHP.
Latiino-Ameerika Vaba Tarkvara Fond on koostanud täiesti vaba tuuma variandi 6.18 — Linux-libre 6.18-gnu, mis on puhastatud firmware ja draiveritest, millel on tootja poolt piiratud vabade osade või koodi lõikude puhul. Versioonis 6.18 on täiendatud blobide puhastusprojekti koodi Nova-Core, Intel XE, TI PRUeth, Lantiq GSWIP, Marvell WiFi-Ex draiverites. Puhastatud on blobide nimed dts-failides (devicetree) Qualcommi, Mediateki ja TI ARM64 ARM-kiipide jaoks. Uutes FourSemi fs2104/5s, TI TAS2783 ja Qualcomm GENI draiverites on neutraliseeritud blobide laadimine.
Allikas: opennet.ru

