Pärast kahe kuu arengut tutvustas Linus Torvalds Linux 6.12 tuuma väljaandmist. Peamised muudatused hõlmavad Realtime-režiimi aktiveerimise võimalust, sched_ext'i CPU planeerijate loomise jaoks eBPF kaudu, QR-koodi väljastamist kriitilistes olukordades, seadme mälu TCP mehhanismi, SCHED_DEADLINE serveri ressursside reserveerimise mehhanismi, EEVDF ülesannete planeerija täiustusi ja poliitikate määramiseks IPE moodulit.
Uude versiooni on sisse viidud 14607 parandust 2167 arendajalt, plaastri suurus on 37 MB (muudatused mõjutavad 13087 faili, lisatud on 507913 koodirida, eemaldatud 234083 rida). Eelmises väljaandes oli 15130 parandust 2078 arendajalt, plaastri suurus oli 85 MB (tuuma 6.10 plaastri suurus oli 41 MB). Umbes 45% kõigist 6.12-s esitatud muudatustest on seotud seadme draiveritega, umbes 12% muudatustest on seotud riistvaraga spetsiifilise koodi uuendamisega, 13% on seotud võrgu stardiga, 6% - failisüsteemidega ja 3% - tuuma sisemiste alamsüsteemidega.
Peamised uuendused tuumas 6.12:
- Mälu ja süsteemiteenused
- Keenuse koostamine võimaldab nüüd kasutada PREEMPT_RT asetamiseks lisapatchideta reaalajas režiimis. Viimane puuduv funktsioon, mis takistas PREEMPT_RT aktiveerimist, oli mittetakistava aatomoutput'i tugi funktsiooni printk kaudu, mis on nüüd ka tuumasse lisatud. PREEMPT_RT tugi on saadaval arhitektuuridele x86, x86_64, ARM64 ja RISC-V. Varem tarniti PREEMPT_RT režiimi rakendust väliste patchide kujul, mille alusel kohandasid mõned distributsioonid, näiteks RHEL, SUSE ja Ubuntu, oma toodete eraldi reaalaja versioone, mida nõuavad valdkonnad nagu rahasüsteemid, audio- ja videostrateegia, lennundus, meditsiin, robootika, telekommunikatsioon ja tööstussüsteemid, kus on hädavajalik tagada sündmuste töötlemise ennustatav aeg.
- Lisatud on „sched_ext“ (SCX) mehhanism, mis võimaldab kasutada eBPF-i CPU planeerijate loomiseks, katab praktiliselt kõik ülesannete täitmise ja CPU ressursside jaotamise planeerimise aspektid. Sellised planeerijad saavad dünaamiliselt laadida ja töötada Linuxi tuumas. virtuaalmasinas eBPF. sched_ext mehhanism lihtsustab ülesandele spetsiifiliste ajakava koostamist, võimaldades katsetada erinevaid tehnikasid ja strateegiaid, samuti võimaldab kiirelt luua tööprototüüpe ja asendada ajakavade rakendusi töötavates infrastruktuurides. Näiteks sched_ext abil saab luua ajakava, mis arvestab konkreetse rakenduse spetsiifikat ja muudab selle täitmise ajakava dünaamiliselt vastavalt süsteemi olekule ja muudele teguritele.
- Komplekti kuuluvad vajalikud täienduspatched, mis on vajalik SCHED_DEADLINE serveri mehhanismi tööks, lahendades probleemid, mis tulevad tavapäraste ülesannete CPU ressursside saamatajätmisest kõrgprioriteetsete (realtime) ülesannete CPU monopoliseerimise tingimustes. CPU monopoliseerimise vältimiseks kasutas eespool arendatud Realtime throttle'imise mehhanismi, mis püüdis reserveerida 5% madala prioriteediga ülesannetele, jättes 95% aega realtime-ülesannetele. See mehhanism jättis siiski soovida, kuna tavapärased ülesanded ei saanud paljudes olukordades piisavalt protsessoriaega. SCHED_DEADLINE server rakendab tõhusamat ressursside reserveerimise mehhanismi.
- EEVDF (Earliest Eligible Virtual Deadline First) planeerija integreerimine on lõpule viidud, asendades CFS (Completely Fair Scheduler), mida oli tarnitud alates tuumast 2.6.23. Uus planeerija arvestab järgmise protsessi valimisel neid protsesse, mis on saanud liiga vähe või liiga palju protsessorivõimsust. Esimeses juhul sunnitakse juhtimise üleandmist protsessile, samas kui teisel juhul, vastupidi, edasi lükatakse. Vana CFS planeerija kasutas protsesside tuvastamiseks, mis nõudsid erilist tähelepanu, heuristikat ja peeneid seadistusi, samas kui uus planeerija jälgib neid selgemalt ja ei vaja häälestust. Eeldatakse, et EEVDF võimaldab vähendada viivitusi ülesannete täitmisel, millega CFS-l oli planeerimise osas probleeme.
- Yt kernelisüsteemi viga käitlev - DRM Panic, mis kasutab DRM (Direct Rendering Manager) alamsüsteemi visuaalse aruande kuvamiseks stiilis 'sinine ekraan surma', on lisatud võimalus kuvada ekraanil logo ja QR-kood kmsg aruande jaoks, kui juhtumianalüüs esineb. Kuna QR-kood mahutab ainult 2953 baiti, on olemas DRM_PANIC_SCREEN_QR_CODE_URL valik, mille korral kmsg aruanne kompresseeritakse zlib abil ja lisatakse URL-i parameetrina, mis võimaldab QR-koodi kaudu V40 edasi anda umbes 7500 baiti. Pakettide koostamisel saavad distributsioonid määrata baassõlme URL-ile, mis võimaldab suunamist veateate saatmise lehele. QR-koodi formaadi valimiseks on olemas DRM_PANIC_SCREEN_QR_VERSION seadistus.
- Lisatud tugi ARM POE (Permission Overlay Extension) laiendusele, mis võimaldab määrata mälu alade juurdepääsuõigusi. Selle laienduse abil saab ARM64 protsessoritega süsteemides rakendada mälu kaitsevõtmete mehhanismi, mis piirab juurdepääsu mälu lehtedele ilma mälulehtede tabeli muutmiseta.
- Loongarch, ARM64, PowerPC ja s390 arhitektuuride jaoks on viidud ellu getrandom() süsteemikõne rakendus, optimeeritud vDSO (virtuaalne dünaamiline jagatud objekt) mehhanismi abil, mis võimaldab süsteemikõne töötlejat kernelist kasutajaruumi viia ja vältida konteksti vahetusi. Optimeerimine võimaldab randomusute tootmist kiirusel kuni 15 korda kiiremini.
- Asünkroonse sisendi/väljundi io_uring alamisse on lisatud absoluutsete ajataimerite kasutamise võimalus, mis aktiveeruvad teatud aja saavutamise korral süsteemi kelladel (varem olid saadaval ainult suhtelised ajataimerid, kus määrati kestus operatsiooni algusest).
- On lisatud failid libcpupower raamatukogu sidete genereerimiseks SWIG tööriistakomplekti abil, mis võimaldab sidemeid luua C/C++ koodist erinevatele programmeerimiskeeltele. Sidemed võimaldavad luua skripte Pythonis ja teistes keeltes ning kasutada neid libcpupower raamatukogu funktsionaalsuse laiendamiseks, pakkudes API-d cpufreq ja draiverite haldamiseks kasutajaruumis.
- Cpuidle utiliidis on implementeritud oleku hindamine "residency", mis on mõeldud reaalajas süsteemide jaoks ning arvestab minimaalse ajaga, mille jooksul protsessor peab olekus olema, et õigustada energia kulusid selle olekusse sisenemisel ja sealt väljumisel.
- Lisatud on võimalus kasutada Clang kompilatsiooni standardse C-teegi nolibc koostamiseks, mis kuulub Linuxi tuumast väljakujunenud allikakoodide hulka ning annab baassüsteemi väljakutsete peale sidumise. Nolibci koostamisel Clangis on lubatud kasutada sidumise optimeerimist (LTO).
- Mõned cgroup1 liidesed, nagu TCP arvestamine, esimene versioon pehmete piirangute (soft limit) ja vaba mälu ammendamiskohtade haldamine on kuulutatud aegunuks. Nende funktsioonide toetamine jääb siiski täielikult alles, ja hoiatust tehakse, et uurida kasutajate arvu, kes neid võimalusi endiselt kasutavad.
- Lisatud on võimalus konfigureerida jälgimise ringbuffer, et salvestada kogunenud andmed pärast taaskäivitamist, mis võimaldab vältida kogutud silumisinfot tuuma ootamatu lõpetamise korral kadumist. Andmed salvestatakse mällu. Lülitamine toimub tuuma käsurea parameetri kaudu trace_instance, näiteks "trace_instance=boot_map@0x285400000:12M" reserveerib 12 MB mälu aadressil 0x285400000 "boot_map" bufferi jaoks, mis on kättesaadav failist "/sys/kernel/tracing/instances/boot_map."
- Eelmise sage Rust-for-Linux haru muutuste edasiviimine, mis on seotud Rust-i kasutamisega teise keele kui tuumadriverite ja moodulite arendamiseks (Rust-i tugi ei ole vaikimisi aktiveeritud ja ei too kaasa Rust-i kaasamist tuuma kohustuslikesse ehitus sõltuvustesse). Lisatud moodulid 'list' ja 'rbtree' kahe suunaga lingitud nazwodide ning punase-mustaga otsingupuu (red-black tree) töötlemiseks. Moodulite 'init', 'sync', 'types' ja 'error' võimalusi on laiendatud. Pakutud on võimalus kasutada Rust-koodi tuuma kokkupanemisel Spectre-i rünnakute kaitsega (valikud MITIGATION_{RETHUNK, RETPOLINE, SLS}), KASAN-i silumis süsteemi kasutamine, kCFI (kernel Control Flow Integrity) ja Shadow Call kaitsemmehanismide, samuti GCC täiendavate pluginatega kasutamine. Lisatud on Ethernet-kontrolleri Applied Micro QT2025 PHY draiver, mis on kirjutatud Rust-is. Valmistatud on eraldi veebileht dokumentatsiooni jaoks — rust.docs.kernel.org.
- Tuumas tekstides on lisatud utiliit xdrgen, mis transformeerib XDR-spetsifikatsioonid (eXternal Data Representation) koderdas ja dekodeerimise funktsioonideks, kirjutatud Linuxi tuumas vastu võetud C-stiilis.
- Südamikusse on lisatud muudatus, mis rakendab viitsete peitmise mehhanismi, et vähendada aeglaste kutsungite arvu barrier_nospec() 64-bitises funktsioonis copy_from_user(), mida kasutatakse andmete kopeerimiseks südamikku kasutaja ruumist. Peitmise rakendamine kiirendab 'per_thread_ops' testi läbimist 2,6%, hindamas operatsioonide arvu, mis võivad ühes lõimes toimuda.
- Lisatud on uus USB-draiver, mis võimaldab kasutada 9pfs protokolli andmete edastamiseks ja vastuvõtmiseks USB-seadmest, kui 9p failisüsteem on USB peal montitud (näiteks 'mount -t 9p -o trans=usbg,aname=/path/to/fs /mnt/9'). Uue draiveri kasutamise näitena tuuakse välja NFS asendamine juurdumise sektsiooni laadimiseks, kui arendatakse sisse-ehitatud seadmeid.
- Disski alamsüsteem, sisend/väljund ja failisüsteemid
- VFS alamsüsteemi on lisatud tugi salvestusseadmetele, mille plokkide suurus on suurem kui süsteemi mälulehtede suurus. Failisüsteemides toetatakse seda võimalust hetkel ainult XFS-is.
- FUSE-alajasse on lisatud tugi failisüsteemide rakenduste jaoks, mis töötavad kasutaja ruumis, lisades toete kasutajaidentifikaatorite kaardistamist monteeritud failisüsteemides, et siduda teatud kasutaja failid monteeritud välises jaotises praeguse süsteemi teise kasutajaga.
- Rakendatud on uus fcntl-opatsioon F_CREATED_QUERY, mis annab rakendusele võimaluse määrata, kas fail, mis avati O_CREAT-i lipuga, loodi või oli see enne juba olemas.
- Süsteemi süsteemikutsesse name_to_handle_at() on lisatud võimalus kasutada unikaalseid 64-bitiseid monteerimispunktide identifikaatoreid, et vältida võidusõidutingimust /proc/mountinfo parsimisel.
- Jätkustruktuuri "file" suurus tuumas on vähenenud 232 baitilt 184 baidini, mis vähendab mälu kasutust süsteemides, mis töötavad aktiivselt failide kallal.
- Failisüsteemide monteerimine on keelatud /proc hierarhiasse monteerimispunktidele, näiteks /proc/PID/fd, mis võiks luua potentsiaalseid turbeprobleeme.
- Pseudofail süsteemis NSFS (NameSpace FS), mis on mõeldud nimede ruumidega töötamiseks, on ellu viidud täiendava teabe esitamine montaažipunktide nimede ruumide kohta.
- Failisüsteemis EROFS (Extendable Read-Only File System), mis on mõeldud ainult lugemisrežiimis loodud sektsioonide jaoks, on lisandunud tugi failisüsteemide montaažiks otse kettapiltidest, mis on salvestatud failidena.
- XFS-ile on lisatud uued ioctl-käsud XFS_IOC_START_COMMIT ja XFS_IOC_COMMIT_RANGE kaks faili sisu vahetamiseks.
- NFS-ile on lisatud tugi protokollile "LOCALIO", mis võimaldab määrata, kas klient ja server NFS asuvad ühel ja samal hostil, et rakendada vastavaid optimeerimisi.
- Failisüsteemis Btrfs on pakutud jõudluse optimeerimisi, kood on refaktoreeritud, vähendatud on ekstreemide lukustamisala lugemisoperatsioonide ajal, jätkatakse tööd mälilehtede (page folios) kasutusele võtmiseks ja ellu on viidud automaatne mäluhalduse vabastamine btrfs_path struktuuri jaoks.
- Ext4 failersüsteemis on kõrvaldatud blokki jaotamisega, ulatuste haldusega, „kiire kohandamine“ mehhanismi ja logimisega seotud vead.
- Virtualiseerimine ja turvalisus
- Lisatud on LSM-moodul IPE (Integrity Policy Enforcement), mille on välja töötanud Microsoft, et laiendada olemasolevat kohustuslikku juurdepääsuhaldussüsteemi. Moodul võimaldab määrata terviklikkuse tagamise üldpoliitika kogu süsteemi jaoks, näidates, millised toimingud on lubatud ja kuidas tuleb komponentide autentimist kontrollida. Näiteks saab IPE abil määrata, milliseid täidetavaid faile on lubatud käivitada, arvestades nende vastavust kontrollversioonile krüptograafiliste räsi abil, mida pakub dm-verity süsteem.
- Kernit kompileerimise etapis on võimalik eraldi lubada erinevate Spectre klassi haavatavuste kaitsemeetodeid CPU-s. Kconfigis on ettepanekud uued seadistused: MITIGATE_MDS (Microarchitectural Data Sampling haavatavuse kaitse), MITIGATE_TAA (TSX Asynchronous Abort haavatavuse kaitse), MITIGATE_MMIO_STALE_DATA (MMIO Stale Data haavatavuse kaitse), MITIGATE_L1TF (L1 Terminal Fault haavatavuse kaitse), MITIGATE_RETBLEED (Retbleed haavatavuse kaitse), MITIGATE_SPECTRE_V1, MITIGATE_SPECTRE_V2 (Spectre haavatavuste kaitse), MITIGATE_SRBDS (Special Register Buffer Data Sampling haavatavuse kaitse), MITIGATE_SSB (Speculative Store Bypass haavatavuse kaitse).
- Lisatud on käsurea parameeter proc_mem.force_override ja rida Kconfigi seadistusi (PROC_MEM_FORCE_ALWAYS, PROC_MEM_FORCE_PTRACE ja PROC_MEM_FORCE_NEVER), mis võimaldavad keelata mälu muutmise läbi /proc/pid/mem.
- LSM (Linuxi turvamoodul) alamsüsteem on viidud üle staatilistele kõnedele, mis on võimaldanud tugevdada turvalisust ja suurendada jõudlust.
- Tagatud on kohalike kernide kasutamise võimalus ARM64 arhitektuuri jaoks külaliskeskkondades, mis töötavad Android-süsteemidel kohandatud hüperviisori KVM (protected KVM) all.
- LSM-mooduli Landlock, mis võimaldab piirata protsessigruppide suhtlemist väliskeskkonnaga, on rakendatud kontseptsioon „IPC skopeerimine”, et valikuliselt piirata suhtlemist liivakasti keskkondadega, kasutades Unix-sokete ja signaale. Näiteks on võimalik keelata Unix-soketitega ühenduste loomine liivakasti keskkonnast protsessidega, kus isolatsiooni ei rakendata, kuid lubada ühendusi protsessidega samas skopeerimisteemas.
- KVM hüperviisoris on CPUID-sse lisatud lipp, mis signaali toetuse AVX10.1 laiendustele külalissüsteemides.
- Võrgu alamsüsteem
- Lisatud on seadme mälu TCP mehhanism, mis võimaldab kasutada võrgusokette perifeerse seadme mälu sisu otse saatmist (zero-copy režiim) ning otse seadme mälupiirkonda võrgupakettide sisu paigutamist vastuvõtja poolel. Pakettides edastatavad andmed edastatakse võrguadapterist perifeerse seadme mällu või seadmest võrguadapterisse otse, mööda CPU-d, samas kui pakettide päised jõuavad tavalistesse kernelibufritesse.
- Paljude Etherneti ja traadita draiverite võimalusi on laiendatud. Näiteks on Intel iwlwifi draiverisse lisatud RLC/SMPS toimingute edastamine püsivara poole, RealTek rtw89 draiveris on parendatud jõudlust ja lisatud tugi RTL8852BT/8852BE-VT (WiFi 6) kiipidele, Etherneti draiveris Microchip on lisatud tugi IEEE 802.3bw (100BASE-T1) ja IEEE 802.3bp spetsifikatsioonidele, samuti on täiustatud Microsoft vNIC ja IBM veth virtuaalsete Etherneti rakenduste teostusi. Uued draiverid on lisatud Realteki Etherneti kiipide jaoks RTL9054, RTL9068, RTL9072, RTL9075, RTL9068, RTL9071 ja Microchip LAN8650/1 10BASE-T1S MAC-PHY jaoks.
- MPTCP-s (MultiPath TCP), TCP protokolli laienduses, mis võimaldab TCP-pakettide saatmist samaaegselt üle mitme marsruudi erinevate võrguliideste kaudu, on marsruutimises kasutatavate kaalu koefitsientide suurus suurendatud 8 bitti 16 bitini. Rakendatud on ka musta augu (blackhole) liikluse määramine ning ühenduse loomise katseid kaotavaid süsteemidega on ajutiselt peatatud.
- IPv6 jaoks on rakendatud "p" lipu tuge PIO-s (Prefix Information Option), mida kasutatakse RA (IPv6 Router Advertisements) kuulutustes klientide käivitamise mudeli valimiseks DHCPv6-PD (DHCPv6 Prefix Delegation, RFC9663) kaudu, selle asemel, et määrata eraldi aadresse prefiksite alusel, kasutades SLAAC-i (Stateless Address Autoconfiguration). IPv6 IOAM6-s on lisatud tunsrc uue kapseldusrežiimi tugi, mis võimaldab saavutada kõrgemat jõudlust.
- IPsec juhtimispakettide töötlemise jõudlust on suurendatud.
- Suurendatud on suurte nftables reeglite kogumite tühjendamise (flush) jõudlust. nfnetlink_queue-s on parendatud SCTP protokolli tuge.
- API-s ethtool on lisatud mitme võrkarte kasutamine ühe võrknimega.
- Seadmed
- AMDGPU draiveris jätkatakse AMD RDNA4 GPU ("GFX12") toe rakendamist. Lisatud on võimalus tühjendada eraldiseisvaid tööde järjekordi ilma kogu GPU oleku tühjendamiseta.
- Jätkatakse Intel Xe arhitektuuril põhineva GPU drm-juhikuga (Direct Rendering Manager) töötamise jätkumist, mida kasutatakse Intel Arc-seeria graafikakaartides ja integreeritud graafikas alates Tiger Lake'i protsessoritest. Uues versioonis on lisatud toetus Battlemage ja Lunar Lake mikroarhitektuuridele. Esmakordselt on toeks CCS-modifikaatorid (Color Control Surface) Xe2, et hallata integreeritud ja diskreetsete GPU-de seadeid.
- i915 juhikus on rakendatud võimalus edastada ventilaatori pöörlemiskiiruse teavet HWMON või sysfs liidese kaudu (atribuut «fan1_input»). Parameeter «i915.modeset» on kuulutatud aegunuks ja selle asemel tuleks kasutada parameetrit «i915.nomodeset».
- DRM-juhikus msm (Qualcomm Adreno GPU) on lisatud toetus GPU-dele A615, A306 ja A621.
- Nouveau juhikus on tehtud sisemise struktuuri ümberkorraldus ja puhastamine.
- Intel'i p-state'i draiverisse, mis haldab energia kasutamise parameetreid Intel'i protsessoritega süsteemides, on lisatud tugi hübriidsüsteemidele, millel on asümmeetrilised (omavahel erinevad) CPU'd, samuti energiahalduse toetamine Granite Rapids ja Sierra Forest mikroarhitektuuri põhjal valmistatud protsessoritele. Intel_idle draiverisse on lisatud tugi Xeon Granite Rapids CPU-dele. Intel_rapl draiveris on tagatud AMD 1Ah seeria protsesside ja Intel ArrowLake-U protsessorite tuvastamine.
- Jätkatakse muudatuste sisestamist ARM SoC Snapdragon X Elite toetamiseks, mis sisaldab Qualcomm Oryon'i 12- tuumalist CPU-d ja Qualcomm Adreno GPU-d. Kiip on suunatud kasutamiseks sülearvutites ja lauaarvutites ning ületab paljudes jõudlustes Apple M3 ja Intel Core Ultra 155H kiipe.
- Lisatud tugi ARM-plaatidele, SoC dele ja seadmetele: Broadcom bcm2712 (Raspberry Pi 5), Renesas R9A09G057 (RZ/V2H), Qualcomm Snapdragon 414 (MSM8929), Lenovo ThinkPad T14s Gen 6, Lenovo A6000/A6010, Surface Laptop 7, Anbernic RG35XXSP, Firefly Core-PX30-JD4, Lunzn Fastrhino R68S, Aspeed Riser, AGX Orin, Rockchip Qnap-TS433, Huashan Pi, Meta Catalina, BeagleY-AI, NanoPi R2S Plus, ExynosAuto v920, SOPHGO SG2002, Qualcomm IPQ5332, LG G4 (h815), Cool Pi CM5 GenBook, Anbernic RG35XXSP, GameForce Ace, IBM P11, Kontron i.MX93 OSM-S, NanoPC-T6.
- Tugiteapea toetamine Anbernic RG28XX, On Tat Industrial Company KD50G21-40NT-A1, Innolux G070ACE-LH3, Melfas lmfbx101117480, Densitron DMT028VGHMCMI-1D, Microchip AC40T08A, AOU B116XTN02.3, AUO B116XAN06.1, AOU B116XAT04.1, BOE TV101WUM-LL2, BOE NV140WUM-N41, BOE NV133WUM-N63, BOE NV116WHM-A4D, BOE NE140WUM-N6G, CMN N116BCA-EA2, CMN N116BCP-EA2, CSW MNB601LS1-4, Starry er88577.
- Helisüsteemis on lisatud toimetajate ja koodektili RME Digiface USB, AMD ACP 7.1, Mediatek MT6367, MT8365, Realtek RTL1320, C-Media CM9825. Vanad helidraiverid ASoC Intel jaoks on vananenud, soovitatakse kasutada AVS draivereid. Helidraiveris on tehtud palju täiustusi.
Allikas: opennet.ru
