After two months of development, Linus Torvalds presented the release of the Linux 6.12 kernel. Among the most notable changes are the ability to enable Realtime mode, sched_ext for creating CPU schedulers via eBPF, QR code output in emergency situations, Device Memory TCP mechanism, SCHED_DEADLINE server resource reservation mechanism, improved EEVDF task scheduler, and the IPE module for defining integrity assurance policies.
The new version includes 14,607 patches from 2,167 developers, with the patch size being 37 MB (the changes affected 13,087 files, adding 507,913 lines of code and removing 234,083 lines). In the previous release, there were 15,130 patches from 2,078 developers, with a patch size of 85 MB (in the 6.10 kernel, the patch was 41 MB). About 45% of all changes presented in 6.12 are related to device drivers, around 12% relate to updates specific to hardware architectures, 13% pertain to the network stack, 6% to file systems, and 3% to the internal kernel subsystems.
Key innovations in kernel 6.12:
- Memória és rendszerszolgáltatások
- The kernel can now be compiled with the PREEMPT_RT option without additional patches for real-time operation. The last missing feature in the kernel preventing the activation of PREEMPT_RT was support for non-blocking atomic output via the printk function, which has now also been included in the kernel. PREEMPT_RT support is available for x86, x86_64, ARM64, and RISC-V architectures. Previously, the PREEMPT_RT implementation was provided as external patches, based on which some distributions, such as RHEL, SUSE, and Ubuntu, created separate Realtime editions of their products, which are in demand in areas such as financial systems, audio and video processing devices, aviation, medicine, robotics, telecommunications, and industrial systems where predictable event processing times are essential.
- A "sched_ext" (SCX) mechanism has been added, allowing the use of eBPF for creating CPU schedulers that cover nearly all aspects of task execution scheduling and CPU resource distribution. Such schedulers can be loaded dynamically and executed within the Linux kernel. virtuális gépben Az eBPF. A sched_ext mechanizmus leegyszerűsíti a feladat-specifikus ütemezők létrehozását, lehetővé teszi különböző technikák és ütemezési stratégiák kipróbálását, valamint gyors munkaprototípusok létrehozását és az ütemezők cseréjét élő munkainfrastruktúrákban. Például a sched_ext segítségével létrehozható egy ütemező, amely figyelembe veszi egy adott alkalmazás sajátosságait, és dinamikusan módosítja a végrehajtás ütemezési stratégiáját a rendszer állapota és további tényezők függvényében.
- Tartalmazza a SCHED_DEADLINE server működéséhez szükséges maradék patch-eket, amelyek megoldják a CPU erőforrásokhoz való hozzáférés problémáját, amennyiben a magas prioritású (realtime) feladatok monopolizálják a CPU-t. A CPU monopolizálásának elkerülésére a kernelben korábban Realtime throttling mechanizmust használtak, amely megpróbálta a 5%-ot fenntartani alacsonyabb prioritású feladatok számára, így 95%-ot hagyva a realtime feladatoknak. Ez a mechanizmus nem volt ideális, mivel a normál feladatok sok esetben nem kaptak elegendő CPU időt. A SCHED_DEADLINE server hatékonyabb erőforrás-elosztási mechanizmust valósít meg.
- Befejeződött az EEVDF (Earliest Eligible Virtual Deadline First) ütemező integrációja, amely a CFS (Completely Fair Scheduler) ütemező helyébe lépett, amely a 2.6.23-as kerneltől kezdődően volt elérhető. Az új ütemező a következő végrehajtásra várakozó folyamat kiválasztásakor figyelembe veszi azokat a folyamatokat, amelyek nem kaptak elegendő CPU erőforrást, vagy amelyek aránytalanul sok CPU időt kaptak. Az első esetben a vezérlés átadása kényszerített, míg a második esetben éppen ellenkezőleg, halasztott. Az öreg CFS ütemező a külön figyelmet igénylő folyamatok azonosításához heurisztikákat és finomhangolásokat használt, míg az új ütemező világosabban nyomon követi őket, és nem igényel finomhangolást. A várakozások szerint az EEVDF csökkenti a végrehajtási késedelmeket, amelyekkel a CFS ütemezés során problémák adódtak.
- A vészhelyzeti kezelő a kernelben — DRM Panic, amely a DRM (Direct Rendering Manager) alrendszert használja a „kék halál” stílusú vizuális jelentés megjelenítésére, lehetővé tette, hogy a képernyőn a logó és a kmsg jelentés QR-kódja megjelenjen vészhelyzet esetén. Mivel a QR-kódba csak 2953 byte fér el, a DRM_PANIC_SCREEN_QR_CODE_URL opció lehetővé teszi, hogy a kmsg jelentés zlib segítségével tömörítésre kerüljön és paraméterként a URL-hez csatolva legyen, így a QR-kódon keresztül körülbelül 7500 byte továbbítható V40 formátumban. A disztribúciók a kernelcsomagok összegyűjtése során alap URL hivatkozást állíthatnak be, amely lehetővé teszi a hibaüzenetek küldésére irányuló oldalra való navigálást. A QR-kód formátumának kiválasztásához a DRM_PANIC_SCREEN_QR_VERSION beállítás lett bevezetve.
- Bevezetésre került az ARM POE (Permission Overlay Extension) kiterjesztés támogatása, amely lehetővé teszi a memória területekhez való hozzáférési jogok beállítását. E kiterjesztés segítségével ARM64 processzorral rendelkező rendszereken megvalósítható a Memory Protection Keys mechanizmus, amely a memóriaoldalakhoz való hozzáférést korlátozza anélkül, hogy módosítaná a memóriaoldalak táblázatát.
- Loongarch, ARM64, PowerPC és s390 architektúrákra átkonvertálásra került a getrandom() rendszerhívás megvalósítása, amely a vDSO (virtuális dinamikus megosztott objektum) mechanizmus segítségével optimalizálva lett, lehetővé téve a rendszerhívás kezelő átkonvertálását a kernelből a felhasználói térbe és elkerülve a kontextusváltásokat. Az optimalizálás akár 15-ször gyorsabb véletlenszámok beszerzését teszi lehetővé.
- Az io_uring aszinkron bemeneti/kimeneti alrendszerhez hozzáadódott az abszolút időzítők használatának lehetősége, amelyek egy adott idő elérésekor aktiválódnak a rendszer óráján (korábban csak relatív időzítők állíthatók be, amelyek az operáció kezdetétől eltelt időt határozták meg).
- Fájlok kerültek hozzáadásra a libcpupower könyvtárhoz tartozó kötés-generáláshoz a SWIG eszközkészlet segítségével, amely lehetővé teszi C/C++ kód alapján kötés generálását különböző programozási nyelvekhez. A kötés lehetővé teszi Python és más nyelveken szkriptek létrehozását, és azok használatát a libcpupower könyvtár funkcionalitásának bővítéséhez, amely API-t nyújt a cpufreq és a felhasználói térből való vezérléshez.
- A cpuidle utility is implemented to display the "residency" state value used for real-time systems, taking into account the minimum time the processor must remain in the idle state to justify the energy costs of transitioning into and out of that state.
- The ability to use the Clang compiler to build the standard C library nolibc, included in the Linux kernel source code, has been added. Nolibc provides a wrapper over the basic system calls. When building nolibc in Clang, link-time optimization (LTO) is allowed.
- Certain cgroup1 interfaces have been deprecated, such as TCP accounting, the first version of soft limits, and management of exhausted free memory. Support for these functions is still fully maintained, and the warning has been issued to investigate the number of users who continue to utilize these features.
- The ability to configure a tracing ring buffer to retain accumulated data after a reboot has been added, allowing for the preservation of accumulated debugging information in case of a kernel crash. The data is stored in memory. Activation is done via the kernel command-line parameter trace_instance; for instance, setting "trace_instance=boot_map@0x285400000:12M" reserves 12 MB of memory at address 0x285400000 for the buffer "boot_map," which will be accessible through the file /sys/kernel/tracing/instances/boot_map.
- Folytatódik a Rust-for-Linux ágból származó változtatások átvitele, amelyek a Rust nyelv második nyelvként való alkalmazására vonatkoznak a meghajtók és a kernelmodulok fejlesztésében (a Rust támogatása alapértelmezés szerint nem aktív, és nem vezet ahhoz, hogy a Rust legyen a kötelező fordítási függőségek között a kernelhez). Hozzáadták a 'list' és 'rbtree' modulokat a kétirányú láncolt listák és a vörös-fekete keresőfák kezelésére. Kiterjesztették az 'init', 'sync', 'types' és 'error' modulok képességeit. Lehetővé tették a Rust kód használatát a kernelfordítás során a Spectre támadások ellen védett módon (MITIGATION_{RETHUNK, RETPOLINE, SLS} opciók), a KASAN hibakereső rendszer használatával, a kernel Control Flow Integrity (kCFI) és Shadow Call védelmi mechanizmusokkal, valamint további GCC pluginek alkalmazásával. Hozzáadtak egy drivert az Applied Micro QT2025 PHY Ethernet-vezérlőhöz, amelyet Rust nyelven írtak. Külön weboldal készült a dokumentáció számára — rust.docs.kernel.org.
- A kernel forráskódjában hozzáadták az xdrgen eszközt az XDR-specifikációk (eXternal Data Representation) XDR kódoló és dekódoló funkciókká való átalakítására, amelyeket a Linux kernelében használt C-stílusban írtak.
- A kernelbe elfogadták az irányelvet, amely a mutatók maszkolási mechanizmusának megvalósítását jelenti a barrier_nospec() lassú hívásainak csökkentése érdekében a 64 bites copy_from_user() funkcióban, amely az adatokat a felhasználói térből a kernelbe másolja. A maszkolás alkalmazása 2,6%-kal gyorsítja a 'per_thread_ops' tesztátjárón való áthaladást, amely az egy szálban végrehajtható műveletek számát értékeli.
- Új USB drivert adtak hozzá, amely lehetővé teszi a 9pfs protokoll használatát az USB-eszközökkel való adatátvitelhez USB-n keresztül történő fájlrendszer-montáláskor (például 'mount -t 9p -o trans=usbg,aname=\/path\/to\/fs \/mnt\/9'). Az új driver alkalmazásaként említik a NFS helyetti használatot az alapértelmezett partíció betöltésének megvalósításához beágyazott eszközök fejlesztésekor.
- Lemezszubszisztéma, bemenet/kipontozás és fájlrendszerek
- A VFS alrendszerébe hozzáadták a nagyobb tárolóeszközök működésének lehetőségét, ahol a blokk mérete nagyobb, mint a rendszer memóriában található oldal mérete. Ezt a lehetőséget jelenleg csak az XFS fájlrendszerek támogatják.
- A FUSE alrendszerhez, amely lehetővé teszi a felhasználói térben működő fájlrendszer-implementációk létrehozását, hozzáadták a felhasználói azonosítók mappálásának támogatását a csatolt fájlrendszerekhez, amelyet egy adott felhasználó fájljainak egy másik felhasználóval való összehangolására alkalmaznak a jelenlegi rendszerben.
- Új fcntl művelet, az F_CREATED_QUERY került megvalósításra, amely lehetővé teszi az alkalmazás számára, hogy meghatározza, hogy egy fájl, amelyet az O_CREAT flag-gel nyitottak meg, létrejött-e, vagy már létezett korábban.
- A name_to_handle_at() rendszerhívásba beépítették az egyedi 64 bites csatolási azonosítók használatát a versenyhelyzetek elkerülése érdekében a /proc/mountinfo elemzésénél.
- A kernelbeli "file" struktúra méretét 232 bájtól 184 bájtra csökkentették, ami lehetővé teszi a memóriafogyasztás csökkentését olyan rendszereken, amelyek aktívan dolgoznak fájlokkal.
- Tilos a fájlrendszerek csatolása a /proc hierarchiáján belüli csatolási pontokhoz, például a /proc/PID/fd-re, ami potenciális biztonsági problémákat okozott.
- A NSFS (NameSpace FS) álképzelt fájlrendszerben, amely a névterek kezelésére szolgál, további információk adására került sor a csatolási pontok névtereiről.
- Az EROFS (Extendable Read-Only File System) fájlrendszerben, amelyet csak olvasható módba állított partíciókon történő alkalmazásra terveztek, megvalósult a fájlrendszerek közvetlen mappálásának támogatása lemezképből, amely fájlok formájában van elmentve.
- Az XFS-hez új ioctl parancsokat adtak hozzá: XFS_IOC_START_COMMIT és XFS_IOC_COMMIT_RANGE az adatok cseréjére két fájl között.
- NFS-be beépítették a "LOCALIO" protokoll támogatását, amely lehetővé teszi annak meghatározását, hogy az ügyfél és az NFS ugyanazon a gazdagépen található-e, a megfelelő optimalizációk aktiválásához. szerver Az Btrfs fájlrendszerben teljesítményoptimalizálások ajánlásra kerültek, a kódot refaktorálták, csökkentették a kiterjesztési blokkolás területét olvasási műveletek során, és folytatták a memóriaoldal foliánsok használatára való átállást, valamint automatikus memóriafelszabadítást valósítottak meg a btrfs_path struktúrához.
- Az Ext4 fájlrendszerben javították a blokkok foglalásával, a kiterjesztések kezelésével, a "fast commit" mechanizmussal és a naplózással kapcsolatos hibákat.
- A fájlrendszer Ext4-hez kapcsolódó blokkjogok foglalásával, kiterjesztések kezelésével, egymásba fűzött mechanizmussal és naplózással kapcsolatos hibák javításra kerültek.
- Virtualizáció és biztonság
- Hozzáadva az IPE (Integrity Policy Enforcement) LSM-modul, amelyet a Microsoft fejlesztett, hogy kiterjessze a meglévő kötelező hozzáférés-irányítási rendszert. A modul lehetővé teszi a rendszer teljes integritási politikájának meghatározását, amely megmutatja, hogy mely műveletek engedélyezettek és hogyan kell ellenőrizni a komponensek hitelességét. Például az IPE segítségével meg lehet határozni, hogy mely végrehajtható fájlok indíthatók el, figyelembe véve a kriptográfiai hash-ekelőírt megerősítést a dm-verity rendszer által biztosított referencia verzióval.
- A kernel fordítási szakaszában lehetőség nyílt a CPU Spectre osztályú sebezhetőségeiből származó védekezési módszerek külön-külön aktiválására. A Kconfig új paramétereket ajánl fel: MITIGATE_MDS (Microarchitectural Data Sampling sebezhetőség elleni védelem), MITIGATE_TAA (TSX Asynchronous Abort sebezhetőség elleni védelem), MITIGATE_MMIO_STALE_DATA (MMIO Stale Data sebezhetőség elleni védelem), MITIGATE_L1TF (L1 Terminal Fault sebezhetőség elleni védelem), MITIGATE_RETBLEED (Retbleed sebezhetőség elleni védelem), MITIGATE_SPECTRE_V1, MITIGATE_SPECTRE_V2 (Spectre sebezhetőségek elleni védelem), MITIGATE_SRBDS (Special Register Buffer Data Sampling sebezhetőség elleni védelem), MITIGATE_SSB (Speculative Store Bypass sebezhetőség elleni védelem).
- Hozzáadva egy proc_mem.force_override parancssori paraméter és a Kconfig-ban található összeállítási beállítások (PROC_MEM_FORCE_ALWAYS, PROC_MEM_FORCE_PTRACE és PROC_MEM_FORCE_NEVER), amelyek lehetővé teszik a memória módosításának tilalmát a /proc/pid/mem segítségével.
- Az LSM (Linux security module) alrendszer statikus hívásokra váltott, ami növelte a biztonságot és javította a teljesítményt.
- Biztosították a standard kernel használatát ARM64 architektúrával rendelkező vendég környezetekben, amelyek Android rendszereken futnak módosított KVM hipervízorral (védett KVM).
- A Landlock LSM modulban, amely lehetővé teszi a folyamatcsoportok külső környezettel való interakciójának korlátozását, megvalósítva az „IPC scoping” koncepciót a sandbox környezetekkel való szelektív interakció korlátozásához Unix socketek és jelek használatával. Például meg lehet tiltani a Unix socketek használatával történő kapcsolatok létesítését a sandbox környezetből olyan folyamatokkal, ahol nincs alkalmazva izoláció, de engedélyezni a kapcsolatok létrehozását az azonos scope-területen lévő folyamatokkal.
- A KVM hipervízorban a vendég rendszerek CPUID-jában hozzáadva egy jelzés, amely az AVX10.1 kiterjesztések támogatását jelzi.
- Hálózati alrendszer
- Bevezetésre került a Device Memory TCP mechanizmus, amely lehetővé teszi a hálózati socketek használatát a periféria eszközök memória tartalmának közvetlen hálózati küldésére (zero-copy üzemmód) és a hálózati csomagok tartalmának közvetlen elhelyezésére a fogadó oldal eszközének memóriájában. A csomagokban továbbított adatok közvetlenül átkerülnek a hálózati kártyáról a periféria eszköz memóriájába, vagy az eszköz memóriájából a hálózati kártyára, megkerülve a CPU-t, míg a csomagok fejlécei a kernel szokásos pufferjeibe kerülnek.
- Több Ethernet és vezeték nélküli illesztőprogram funkciói bővültek. Például az Intel iwlwifi illesztőprogramban hozzáadódott az RLC/SMPS műveletek firmware oldali kezelésének támogatása, a RealTek rtw89 illesztőprogramban javult a teljesítmény, és hozzáadódott az RTL8852BT/8852BE-VT (WiFi 6) chip support, az Ethernet illesztőprogramban, a microchipnél, pedig a IEEE 802.3bw (100BASE-T1) és IEEE 802.3bp specifikációk támogatása, valamint a Microsoft vNIC és IBM veth virtuális Ethernet megvalósítások javítása. Új illesztőprogramok kerültek bevezetésre a Realtek RTL9054, RTL9068, RTL9072, RTL9075, RTL9068, RTL9071 és Microchip LAN8650/1 10BASE-T1S MAC-PHY Ethernet chipekhez.
- Az MPTCP (MultiPath TCP) rendszerében, amely a TCP protokoll kiterjesztése a TCP csomagok egyidejű szállítására különböző hálózati interfészeken, a routing során használt súlyozási tényezők mérete 8 bitről 16 bitre nőtt. Megvalósították a forgalom veszteség (blackhole) meghatározását és a forgalomvesztéshez vezető rendszerekkel való kapcsolatok felállítására tett kísérletek átmeneti felfüggesztését.
- IPv6 alatt megvalósult a „p” jelző támogatása a PIO (Prefix Information Option) keretében, amelyet az RA (IPv6 Router Advertisements) hirdetésekben használnak a kliensek DHCPv6-PD (DHCPv6 Prefix Delegation, RFC9663) általi telepítési modell kiválasztására, szemben a prefixumok alapján történő külön címkiosztással, SLAAC (Stateless Address Autoconfiguration) használatával. Az IPv6 IOAM6-ban hozzáadódott az új tunsrc kapszulázás támogatása, amely jobb teljesítményt tesz lehetővé.
- Javult az IPsec vezérlőcsomagok feldolgozásának teljesítménye.
- Javult a nagy nftables szabálykészletek kiürítésének (flush) teljesítménye. Az nfnetlink_queue pedig az SCTP protokoll támogatása terén fejlődött.
- Az ethtool API-ban hozzáadódott a több hálózati kártya egy hálózati interfészhez való hozzárendelésének támogatása.
- Hardver
- Az AMDGPU illesztőprogramban folyamatban van az AMD RDNA4 GPU („GFX12”) támogatásának megvalósítása. Lehetőség nyílt egyedi feladatsorok kiürítésére anélkül, hogy a teljes GPU állapotát visszaállítanánk.
- Folytatódott a DRM-illesztőprogram (Direct Rendering Manager) Xe fejlesztése az Intel Xe architektúrájú GPU-khoz, amelyeket az Arc család grafikus kártyáiban és az integrált grafikában használnak, kezdve a Tiger Lake processzorokkal. Az új verzió támogatja a Battlemage és Lunar Lake mikroarchitektúrák alapú GPU-kat. Bemutatásra került a CCS-módosítók (Color Control Surface) Xe2 támogatása a beépített és diszkrét GPU-k paramétereinek kezelésére.
- Az i915-illesztőprogramban megvalósításra került a HWMON vagy sysfs interfészen (a „fan1_input” attribútum) a ventilátor sebességéről szóló információk megjelenítése. Az „i915.modeset” paraméter elavulttá vált, helyette a „i915.nomodeset” paraméter használata javasolt.
- A DRM-illesztőprogram MSM (Qualcomm Adreno GPU) támogatása kibővült az A615, A306 és A621 GPU-k támogatásával.
- A Nouveau illesztőprogramban átdolgozásra és belső struktúrák tisztítására került sor.
- Az intel_pstate illesztőprogram, amely az Intel processzorok energiatakarékos (P-state) paramétereit kezeli, támogatást kapott a szimmetrikus (különböző teljesítménnyel rendelkező) CPU-val rendelkező hibrid rendszerekhez, valamint az Granite Rapids és Sierra Forest mikroarchitektúrákra épülő processzorok energiafogyasztásának kezeléséhez. Az intel_idle illesztőprogram támogatja a Xeon Granite Rapids CPU-kat. Az intel_rapl illesztőprogramban biztosított a 1Ah család AMD processzorok és az Intel ArrowLake-U processzorok észlelése.
- Folyamatban van a Snapdragon X Elite ARM SoC támogatásának kiterjesztése, amely saját 12-magos Qualcomm Oryon CPU-t és Qualcomm Adreno GPU-t használ. A chip notebookokban és asztali számítógépekben való felhasználásra készült, és teljesítménye sok tesztben felülmúlja az Apple M3 és Intel Core Ultra 155H chipeket.
- ARM platformok, SoC-k és eszközök támogatása került bevezetésre: 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.
- Támogatást kaptak az Anbernic RG28XX, 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 kijelzőpanelek.
- A hangrendszerhez hozzáadva az RME Digiface USB, AMD ACP 7.1, Mediatek MT6367, MT8365, Realtek RTL1320 és C-Media CM9825 chipek és kodekek támogatása. Az Intel ASoC régi hangmeghajtókat elavultnak nyilvánították, helyettük az AVS meghajtók használatát ajánlják. Számos fejlesztés történt a SoundWire meghajtóban.
Forrás: opennet.ru
