A Linux 6.8 kernel release

After two months of development, Linus Torvalds presented the release of the Linux 6.8 kernel. Among the most notable changes are: the Xe driver for Intel GPUs, a protection mode for block devices with mounted file systems, a Deadline server task scheduling mechanism, automatic optimization for merging identical memory pages, the first driver written in Rust, system calls listmount and statmount, removal of bpfilter and SLAB, the guest_memfd mechanism in KVM, and profiling of data access.

The new version includes 15,641 fixes from 2,018 developers, with a patch size of 44 MB (the changes affected 12,212 files, adding 663,864 lines of code and removing 339,094 lines). In the previous release, there were 18,405 fixes from 2,066 developers, with a patch size of 72 MB. About 42% of all changes presented in 6.8 are related to device drivers, approximately 15% concerns updates to architecture-specific code, 14% is related to the network stack, 6% to file systems, and 3% to internal kernel subsystems.

The Git repository for kernel 6.8 contains 9.996 million objects, indicating that the next kernel, 6.9, will surpass the milestone of 10 million git objects. Previously, the transition from branch numbers 3.x and 4.x correlated well with the number of git objects in the repository—kernel 3.0 was released when there were about 2 million objects in the repository, and kernel 4.0 when there were 4 million. However, in 2019, the release of 5.0 broke this logical chain, as it was formed when the repository included approximately 6.5 million git objects.

Main innovations in kernel 6.8:

  • Lemezszubszisztéma, bemenet/kipontozás és fájlrendszerek
    • A direct write block mode has been added for block devices with mounted file systems (once enabled, the root user will not be able to modify the file system through manipulations at the block device level). By default, the mode is off and requires specifying the BLK_DEV_WRITE_MOUNTED parameter during compilation. For Btrfs partitions, blocking is currently not operational, as necessary changes have not yet been accepted in the Btrfs code.
    • System calls listmount() and statmount() have been added, allowing detailed information about mounted file systems to be retrieved from user space.
    • Az XFS fájlrendszerben folytatódik a fsck segédprogram alkalmazási lehetőségeinek megvalósítása a felmerült problémák online módban történő ellenőrzésére és javítására, anélkül hogy a fájlrendszert le kellene csatolni.
    • Az Ext4 fájlrendszerben a memóriapage méreténél kisebb blokkok esetében a dioread_nolock hívás kerül alkalmazásra, amely javítja a teljesítményt azáltal, hogy megszabadul a felesleges zárolásoktól. Néhány funkció átkonvertálásra került a memóriapage folio használatára.
    • A Btrfs fájlrendszerhez hozzáadódott a „nospace_cache” mount flag támogatása, amely letiltja a szabadblokkok cache-ét. Néhány funkció átkonvertálásra került a memóriapage folio használatára.
    • Az EROFS (Extendable Read-Only File System) fájlrendszerben, amelyet csak olvasásra elérhető partíciókhoz terveztek, támogatást kapott a szuboldalak tömörítése, és javult a teljesítménye memóriahiányos helyzetekben.
    • Az F2FS fájlrendszerben javult a zónázott tárolóeszközök támogatása (a blokkgruppok vagy szektorok zónákra osztása, amelyekbe csak sorozatos adatbekérés engedélyezett, frissítve az egész blokkcsoportot).
    • Az SMB fájlrendszerhez megvalósították eszközblokk és szimbolikus fájlok létrehozásának lehetőségét.
    • A Bcachefs fájlrendszerhez részleges támogatás adódott a csatolt fájlrendszerek integritásának ellenőrzésére és helyreállítására.
    • A device-mapper alrendszerben megszűnt a MD_LINEAR, MD_MULTIPATH és MD_FAULTY kezelők támogatása, amelyeket 2021-ben elavultnak nyilvánítottak.
  • Memória és rendszerszolgáltatások
    • A Zswap alrendszerhez hozzáadódott egy, memóriahiány esetén aktiválható lehetőség a 'hideg' memóriablokkok valódi swap partícióba kényszerített kiürítésére, amelyeket nem érintettek, és valószínűleg nem fognak szükségessé válni. A Zswap a swap partícióba kihelyezett oldalakat cache-eli, és azokat memóriában, tömörített formában tárolja, lehetőség szerint anélkül, hogy a valódi, tömörítetlen swap partícióra írna. A memóriahiány esetén végrehajtott módosítások csökkentik a Zswap-ban tárolt memória méretét és felszabadítják a rendszert.
    • A Zswap új módot javasolt, amely teljesen kikapcsolja az elhalasztott írást (writeback) a valódi swap partícióra, ha az írási kísérlet nem volt sikeres, és nem üríti ki a Zswap poolban már meglévő oldalakat a swap partícióra.
    • A feladatütemezőbe bekerült a SCHED_DEADLINE szerver mechanizmus, amely megoldja a CPU erőforrások nem megfelelő elosztásának problémáját, melyet a magas prioritású (realtime) feladatok monopolizálnak. A CPU monopolizálásának megelőzésére korábban a Realtime throttling mechanizmus használták, amely megpróbálta a 5%-ot fenntartani az alacsony prioritású feladatok számára, míg a realtime feladatoknak 95% időt biztosított. Ez a mechanizmus azonban nem volt kielégítő, mivel a normál feladatok sok esetben nem kapták meg a szükséges processzoridőt. A SCHED_DEADLINE szerver egy hatékonyabb erőforrás-fenntartó mechanizmust valósít meg.
    • A DAMON (Data Access MONitor) alrendszerbe, amely lehetővé teszi a folyamatok adat-hozzáférésének nyomon követését a memóriában (például megállapítható, hogy mely memória területeket érintett a folyamat, és melyek maradtak kihasználatlanok), automatikus memóriafogyasztás-agresszivitás beállító mechanizmus került bevezetésre a megadott kvóták alapján.
    • Megvalósult a memória többszörös nagy lapos támogatása (mTHP - multi-size Transparent Huge Pages), amely lehetővé teszi a memória nagyobb blokkokban való allokálását, mint az alapértelmezett lap, de kisebb, mint a hagyományos THP-lap.
    • Hozzáadták a nagy füzetek (page folios, egyesített memóriastruktúrák) támogatását az anonim memória számára (amely nem társított fájlrendszerhez, például malloc-on keresztül allokált). A módosítás célja a teljesítmény növelése a nagyobb memória tömbök allokálásával a nem allokált memória lapok elérés során (page faults). Például a nagy füzetek használata 5%-kal csökkentette a kernel újraépítési idejét (a kernel szinten eltöltött idő 40%-os csökkentése mellett).
    • A kernel konfigurációs fájlhoz hozzáadódott a TRANSPARENT_HUGEPAGE_NEVER paraméter, amely lehetővé teszi a nagy memóriálapok (Transparent Huge Pages) használatának letiltását.
    • A userfaultfd() rendszerhívásba, amely lehetővé teszi a nem allokált memória lapok (page faults) felhasználói térben történő kezelését, bekerült az UFFDIO_MOVE művelet, amely lehetővé teszi a memóriálapok áthelyezését a virtuális címterületen anélkül, hogy memória allokálási műveletet hajtanánk végre a heap tömörítése (heap compaction) során. Az elvégzett tesztek alapján az UFFDIO_MOVE alkalmazása 40%-kal csökkentette a tömörítési időt az UFFDIO_COPY művelet alkalmazásához képest.
    • Hozzáadva a „KSM advisor” mechanizmusa, amely lehetővé teszi a memória azonos oldalainak egyesítésére szolgáló alrendszer paramétereinek automatikus optimalizálását (KSM – Kernel Samepage Merging).
    • Folyamatosan zajlik a Rust-for-Linux ágból érkező változtatások átültetése, amelyek a Rust nyelv második nyelvként való használatára vonatkoznak a meghajtók és a kernel modulok fejlesztésében (a Rust támogatás alapértelmezés szerint nem aktív, és nem vezeti be a Rust-ot kötelező építési függőségek közé a kernelhez). Az új verzióban olyan változtatások találhatók, amelyek Rust-borítót adnak a phylib absztrakciós szintje fölé, és felhasználják ezt a borítót az ax88796b_rust meghajtóban, amely támogatja a Asix AX88772A Ethernet vezérlő PHY interfészét (100MBit). Funkcionalitás szempontjából a Rust nyelvű meghajtó teljes mértékben megfelel a C nyelven írt régi ax88796b meghajtónak, és használható az AX88796B chip-hez tartozó X-Surf 100 hálózati kártyákkal. A LoongArch architektúrához lehetőség biztosított Rust nyelvű modulok írására. Átálltak a Rust 1.74.1 kiadásának használatára.
    • Hozzáadva a BPF token mechanizmusa, amely lehetővé teszi a BPF egyes képességeinek, például a BPF program betöltésének vagy a BPF map létrehozásának kiválasztó delegálását a felhasználói területen lévő, speciális tokennel hitelesített nem privilegizált folyamatok számára.
    • A BPF programok verifikátorának funkcionalitása kibővült.
    • A perf utilitáshoz hozzáadva a profilozási adatok támogatása, amely nyomon követi az adatszerkezetekbe való olvasást és írást, például a legaktívan módosított mezők azonosítása érdekében. Az olyan rendszereken, ahol a processzorok támogatják a memóriaoperációk információinak gyűjtését (Intel, AMD, ARM), a statisztikák gyűjtésére a „perf mem record” parancsot kell használni, míg az adatszerkezetek hozzáférési jelentésének kiírásához a „perf annotate —data-type” parancs ajánlott.
    • Optimalizálták a rendszerhívások teljesítményének feldolgozását az s390 (IBM Z) architektúrán, ami a tesztek szerint körülbelül 11%-os gyorsulást eredményezett a rendszerhívásba való belépés során.
    • Lehetőség biztosított a nyomkövető bufferek méretének megváltoztatására, amelyeket a nyomkövetési események felhasználói térbe történő átvitelére használnak.
    • A korábban elavultnak nyilvánított SLAB memóriaelosztó mechanizmust eltávolították, mostantól csak a SLUB található a kernelben. Az okok között szerepel a karbantartási problémák, a kódhibák jelenléte és a funkciók duplikációja a fejlettebb SLUB allokátorral.
    • A kernel fordításakor a „-Wmissing-prototypes” zászlót bekapcsolták, amely figyelmeztetéseket generál globális függvényhívásokra, amelyeknek nincs prototípusuk.
    • A RISC-V architektúrához, a SUSP kiterjesztés támogatásával rendelkező rendszerekben megvalósították az állapot mentésével történő alvó módba való váltás támogatását. Lehetővé vált a riscv_hwprobe() rendszerhívás használata a RISC-V utasításkészlet támogatott kiterjesztéseinek információinak megszerzésére.
  • Virtualizáció és biztonság
    • Új rendszerhívások, mint a lsm_list_modules(), lsm_get_self_attr() és lsm_set_self_attr() lettek hozzáadva a betöltött LSM modulok (Linux Security Modules) listájának megjelenítésére és a LSM modul attribútumainak megszerzésére/beállítására. Új lsm_ctx struktúra került bevezetésre a felhasználói tér és a kernel közötti LSM kontextuson belüli kommunikációhoz.
    • Az AppArmor alrendszert átállították, hogy a SHA-256 algoritmus használatával ellenőrzze a szabályokat, a SHA-1 hash-ek helyett.
    • A kernelből eltávolították az strlcpy() függvény implementációját, amely nyáron került be a Glibc 3.38 C könyvtárba. Az strlcpy alternatívája az strncpy() függvénynek, amely védelmet nyújt a puffertúlcsordulás ellen, és kötelezően beállítja a záró null byte-ot.
    • A hypervisorban KVM támogatást kaptak a guest_memfd (guest-first memory) alrendszerhez, amely memória kezelési funkciókat biztosít, lehetővé téve olyan képességek és optimalizálások megvalósítását, amelyek nem érhetők el a közös memória kezelő alrendszer használatával. Például a guest_memfd lehetővé teszi, hogy egy memóriaterületet, amely nem elérhető a gazdaberendezés számára, hozzáadjunk és visszatükrözzünk a vendég rendszerre, ami felhasználható titkosított számítások végrehajtására.
    • A KVM hypervisor alatt futó vendég rendszerek támogatják az Intel processzorokban elérhető LAM (Linear Address Masking) módot, amely lehetővé teszi a 64 bites mutatók egyes bitjeinek (57-62. bitjei) felhasználását címadás nélküli metaadatok tárolására.
    • A KVM hypervisor has added support for 52-bit (LPA2) physical addresses for systems based on the ARM64 architecture. For x86 architecture systems, the possibility of building without emulation of Hyper-V hypercalls has been provided, allowing for a smaller kernel size.
    • The iaa driver (IAA Compression Accelerator) has been added to speed up compression and decompression operations using the DEFLATE method, utilizing the cryptographic accelerators of the Intel Analytics Accelerator (IAA).
    • Support for the Intel TDX (Trusted Domain Extensions) mechanism has been implemented on the host environment, allowing the creation of secure guest environments using the KVM hypervisor, which utilizes memory encryption. virtuális gépekhez.
    • In SELinux, the SID identifier 'init' has been added to highlight processes that are launched early in the boot process, before SELinux policies are applied. The interface /sys/fs/selinux for managing SELinux has been improved.
  • Hálózati alrendszer
    • A low-level reorganization of basic network data structures has been carried out to improve caching efficiency. Previously, fields in network stack structures such as socks, netdev, netns, and mibs were located sequentially as they were added, which limited CPU cache usage. The reconfiguration of variable placement in these structures has led to a noticeable increase in TCP performance, minimizing cache line usage during data transmission and optimizing variable access. In cases dealing with multiple parallel TCP connections, acceleration can reach up to 40%.
    • The bpfilter subsystem, which used BPF for packet filtering, has been removed. Bpfilter was introduced starting from release 4.18 but was never brought to a level suitable for widespread use. In recent years, the bpfilter code in the kernel has not been developed, while development continued by Facebook in a separate repository.
  • Hardver
    • A csomagba beletartozik az új DRM-illesztőprogram (Direct Rendering Manager) Xe, amelyet az Intel Xe architektúrára alapozva készítettek, és amelyet az Intel Arc grafikus kártyák és az integrált grafika érhető el a Tiger Lake processzoroktól kezdve. Az Xe illesztőprogramot az új chipek működtetésének alapjaként pozicionálják, függetlenül a régi platformok támogatásához szükséges kódtól. Az illesztőprogram egy új architektúrára épül, amelyben aktívan kihasználják a DRM alrendszer már meglévő komponenseit, valamint az i915 illesztőprogramra jellemző, a konkrét GPU-któl független elemeket, például a képernyőkkel való interakciókhoz használt kódot, a memória modellt és az execbuf megvalósítását. A Mesa alatt az OpenGL és Vulkan működése az Xe illesztőprogram küszöbén a meglévő Mesa-illesztőprogramok, mint az Iris és ANV, által végrehajtott változások szintjén valósul meg.
    • Az i915 illesztőprogramban folytatódik az Intel LunarLake (Xe 2) chipek támogatásának megvalósítása. Javították az Intel Meteor Lake chipek támogatását.
    • A Nouveau illesztőprogramban bevezették az alapértelmezett beállítást a GSP firmware funkciók használatára az NVIDIA GPU-k kezelésére, amelyek a Turing és Ampere mikroarchitektúrák alapjain működnek, ahol a GPU inicializálását és vezérlését egy külön GSP (GPU System Processor) mikrokontroller végzi. A beállítás aktiválásakor az illesztőprogram a firmware hívásával fog működni, ahelyett hogy közvetlenül programozná a hardverinterakciós műveleteket.
    • Az AMDGPU illesztőprogramban megvalósították az ACPI WBRF és VPE DPM támogatását, módosították a PCIe csatorna sebességének kezelését, a szinkronizálásra alkalmazott sorokban 64-bites sorrendű számokat használtak, hozzáadták az AMD specifikus színkezelési mechanizmusok támogatását, megoldották a készenléti állapotba való átvitel problémáját.
    • Hozzáadták az elsődleges illesztőprogram megvalósítását a Broadcom VideoCore 7.1 GPU-hoz, amelyet a Raspberry Pi 5 lapkákban használnak.
    • Hozzáadták a PowerVR 6 sorozatú GPU-hoz tartozó illesztőprogramot, amely az Imagination Technologies Rogue mikroarchitektúrájára épül.
    • Hozzáadták a Thunderbolt/USB4 vezérlők támogatását, amelyek az Intel Lunar Lake mikroarchitektúrára épülő chipekben integrálva találhatók.
    • Hozzáadták a Starfive SoC-ban használt kamerákhoz, mint például a GalaxyCore GC2145/GC0308, a Chips&Media Wave és a THine THP7312, kapcsolódó illesztőprogramokat.
    • Hozzáadták az NSO (Nintendo Switch Online) játékvezérlők támogatását – régi SNES (Super Nintendo), Genesis és N64 (Nintendo 64) vezérlők Nintendo Switch-re adaptált változatai. Hozzáadták az Adafruit Seesaw játékgombokhoz tartozó illesztőprogramot. Az xpad illesztőprogramhoz hozzáadták a Lenovo Legion Go vezérlők támogatását.
    • A dts driver támogatja a Powkiddy RK2023, Powkiddy X55 és Anbernic RG351V játékgépeket.
    • Támogatás került bevezetésre az NXP i.MX8m MICFIL, Qualcomm SM8250, AMD ACP5x, Intel Arrow Lake, SM8550, SM8650 és X1E80100 chipekben használt hangrendszerekhez.
    • Az AMD módosításokat eszközölt a jövőbeli processzorcsalád támogatása érdekében, amely az új Zen 5 mikroarchitektúrára épül.
    • ARM64 SoC támogatása került bevezetésre: Qualcomm SM8650 (Snapdragon 8 Gen 3), Qualcomm X1E80100 (Snapdragon X Elite), Samsung Exynos Auto v920, Google GS101 (Tensor G1), MediaTek MT8188 és Unisoc UMS9620 (Tanggula 7).
    • ARM platformok és eszközök támogatása került bevezetésre: Huashan Pi, Microsoft Lumia, HTC One Mini 2, Motorola MotoG 4G, Huawei Honor 5X/GR5, Anbernic RG351V, Powkiddy RK2023, Powkiddy X55, ComXpress Marvell CN913x alapú, Lenovo Chromebook, Asus és Acer Mediatek MT8183 alapú, Toradex Verdin AM62, Allwinner H616/H618 alapú táblák.
    • Az ARM11 ARMv6K SMP processzorok támogatása megszűnt.

Közben a Latin-amerikai Szabad Szoftver Alapítvány kiadott egy teljesen szabad 6.8-as kernelt - Linux-libre 6.8-gnu, amely tisztított a nem szabad összetevőket vagy korlátozott gyártó által használt kódot tartalmazó firmware-któl és driverektől. A 6.8-as verzióban frissítve lett a blobok tisztításáért felelős kód több driverben és alrendszerben. Tisztításra került az Intel qat_420xx, Imagination PowerVR, Intel Xe, Chips&Media Wave5, Intel VSC, Aquantia PHY és Realtek rtw8922a driverek. A kerneltől való eltávolítás következtében megszűnt a atmel, hermes, orinoco_usb, libertas_cs és zd1201 driverek tisztítása. Blobnevek tisztítása történt dts fájlokban (devicetree) ARM és Aarch64 architektúrákhoz. Megoldásra kerültek az i915 driverrel kapcsolatos tisztítási problémák.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster