A Linux 6.18 kernel kiadása

Két hónap fejlesztés után Linus Torvalds bemutatta a Linux 6.18 kernel kiadását. A legszembetűnőbb változások között szerepel: dm-pcache a lemezes gyorsításhoz az energiafüggetlen memóriában (PMEM), a Bcachefs eltávolítása, XFS online ellenőrzési mód, Binder (Android IPC) és Tyr (Mali GPU) meghajtók Rust nyelven, USB-meghajtók létrehozásának lehetősége Rust nyelven, a SLUB memóriakezelő gyorsítótárazásának optimalizálása, névtér címezése fájlleírók alapján, a swap gyorsítástechnika felgyorsítása, a BPF programok digitális aláírással történő ellenőrzése, az Intel CET virtualizációja KVM-en, PSP hálózati protokoll (TLS és IPsec hibrid), az IP-kiterjesztés AccECN támogatása, UDP-stack optimalizálás.

Az új verzióba 15035 javítás került be 2217 fejlesztőtől, a patch mérete 45 MB (a változások 13142 fájlt érintettek, 601897 sor kód került hozzáadásra, 355006 sor törlésre). Az előző kiadásban 14334 javítás volt 2118 fejlesztőtől, a patch mérete 46 MB. A 6.18-as verzióban bemutatott összes változás körülbelül 40%-a az eszközmeghajtókhoz kapcsolódik, körülbelül 16%-a a hardverarchitektúrákhoz specifikus kód frissítéséhez, 12%-a a hálózati stackhez, 5%-a a fájlrendszerekhez és 3%-a a kernel belső alrendszereihez.

A 6.18-as kernel fő újításai (1, 2, 3):

  • Lemezszubszisztéma, bemenet/kipontozás és fájlrendszerek
    • A Device Mapper-be került egy dm-pcache kezelő a tartós memória (CXL memória, DAX eszközön keresztül címzett) használatához, mint további nagy teljesítményű gyorsítótár a lassabb hagyományos lemez- vagy flash-meghajtók előtt. A dm-pcache a gyorsítótár tartalmának megőrzését biztosítja balesetek (crash-safe) esetén az energiafüggetlen memória, a metaadatok duplikálása és az adatok és a metaadatok integritásának ellenőrzése CRC32 ellenőrző összegekkel való felhasználásával. Jelenleg csak írásvisszatartási módban (write-back) támogatott a gyorsítárazás.
    • A kernelből eltávolították a Bcachefs fájlrendszer kódját, amely most külső modul formájában, DKMS (Dinamikus Kernel Modul Támogatás) eszközkészlettel összeállítva lesz elérhető. A Bcachefs kód visszatérhet a kernelhez, ha Kent Overstreet ténylegesen bizonyítani tudja a más kernel fejlesztőkkel való megfelelő együttműködés lehetőségét és a kidolgozott fejlesztési szabályok betartását.
    • A pwritev2() rendszerhíváshoz hozzáadódott az RWF_NOSIGNAL zászló, amely letiltja a SIGPIPE jel küldését bontott, névtelen csatornákba vagy socketekbe való íráskor.
    • A Procfs-hez hozzáadódott a 'pidns' csatolási opció a folyamatazonosítók (PID namespace) megadása érdekében. Például: 'mount -t proc -o pidns=/proc/self/ns/pid proc /tmp/proc'.
    • Az XFS stabilnak nyilvánította és alapértelmezettként engedélyezte a fsck eszköz alkalmazását az online módban történő problémák ellenőrzésére és javítására, lemezmeghajtó leválasztása nélkül. Hozzáadták a file_getattr és file_setattr rendszerhívásokat a speciális fájlok (bármilyen inode) attribútumainak módosítására. A KConfig-ban alapértelmezés szerint letiltották az XFS_SUPPORT_V4 (XFS 4. verzió) és az XFS_SUPPORT_ASCII_CI (nagy- és kisbetűk figyelembevétel nélküli mód) opciókat, amelyek elavultnak számítanak. Elavult csatolási opciók születtek, mint az attr2, noattr2, ikeep és noikeep.
    • Az MD RAID-ben megvalósult egy új típusú bitkép — llbitmap (lockless bitmap), amely zárak nélkül működik és magasabb teljesítményt biztosít.
    • Az 'inode' általános struktúrájából kiszedték a titkosítással és ellenőrzéssel kapcsolatos információkat (i_crypt_info és i_verity_info mutatók). A változtatás lehetővé teszi a memóriafogyasztás csökkentését olyan fájlrendszerekben, amelyek nem támogatják a titkosítást és az ellenőrzést.
    • A FUSE alrendszerhez hozzáadták a copy_file_range() rendszerhívás támogatását és közvetlen másolást lehetővé tevő tartományok használatának támogatását 64 bites méret használatával (korábban csak 32 bites méret volt támogatott). Hozzáadták a szinkron kezdeményezés támogatását a csatolás során (FUSE_DEV_IOC_SYNC_INIT).
    • Az ext4 fájlrendszerben megvalósították a 32 bites felhasználói (uid) és csoportazonosítók (gid) használatát a fenntartott blokkokhoz való hozzáférés során. Hozzáadták az ioctl műveleteket a csatolt fájlrendszerek superblock paramétereinek beállításához és olvasásához (a tune2fs képes módosítani a paramétereket a superblock-ban anélkül, hogy írási jogokkal rendelkezne a blokk eszközön). Teljesen eltávolították az ext3-ra jellemző elavult beállításokat.
    • Az f2fs-hez egy „lookup_mode” mount opció került hozzáadásra a keresési mód kiválasztásához: perf – hash alapú keresés, compat – lineáris keresés, auto – automatikus kiválasztás. A módosítás értelmet nyer, ha a könyvtárak nem érzékelik a karakterek kis- és nagybetűit. Az aktuális keresési módot a „/sys/fs/f2fs//effective_lookup_mode” fájlon keresztül lehet megismerni. Lehetőség nyílt inode-ok lefoglalására, amely csak jogosultsággal rendelkező felhasználók számára elérhető.
    • Az Overlayfs-hez hozzáadódott egy kisbetűs keresés nélküli üzemmód, amely a fájlrendszer szintjén állítható be (a külön könyvtárakra való beállítás még nem támogatott).
    • A BTRFS-nél javult a párhuzamos műveletek teljesítménye magas olvasási és alacsony írási terhelés mellett, csökkent a tranzakciók rögzítési ideje, és jelentősen lerövidült a szinkronizálás ideje (percekről másodpercekre). Lehetőség nyílt olyan blokkok (bs) használatára, amelyek nagyobbak a memóriablokknál (ps).
    • A ksmbd-hez (a SMB-szerver kernel szintjén) hozzáadódott egy paraméter a maximális kapcsolatok számának korlátozására egyetlen felhasználó esetében. IP address. A smbdirect, smbclient és smbserver átálltak a tipikus kernel struktúrák használatára.
    • A SQUASHFS-hez hozzáadódott a lseek() rendszerhívásban a SEEK_DATA és SEEK_HOLE opciók használata, amely lehetővé teszi az adatok és üres helyek keresését a sparsos fájlokban. Néhány teszt során a sparas fájlok másolásának teljesítménye akár 150-szeres növekedést mutatott.
    • Az EXFAT-hoz hozzáadódott az ioctl FS_IOC_GETFSLABEL és FS_IOC_SETFSLABEL támogatása, amely lehetővé teszi a partíciók címkéinek olvasását és írását. Lehetőség nyílt a mount opciók módosítására a re-mountolás során. Felgyorsult a bitképek betöltése.
    • Az NTFS3-hoz hozzáadódott az ioctl FS_IOC_GETFSLABEL és FS_IOC_SETFSLABEL támogatása a partíciók címkéinek olvasásához és beállításához.
  • Memória és rendszerszolgáltatások
    • A csoportba bekerült a Rust nyelven írt Binder interprocess Communication mechanizmus implementációja. A Binder az Androidban a folyamatok közötti interakciók és a távoli eljárásmeghívások kezelésére szolgál (egyetlen Android folyamat hívhat meg egy módszert vagy függvényt más Android folyamatból a Binder segítségével, az azonosítás, hívás és argumentumok közötti továbbítás során). A Binder kódját a Google kezdeményezésének keretében írták át Rust nyelvre, amely a biztonság fokozására irányul Android alatt.
    • A SLUB, a memória allokáló magjában, egy opciós „sheaves” gyorsítótár réteg került bevezetésre, amely több gyorsítótárral rendelkezik, mindegyik egy külön CPU maghoz van kötve. Ez lehetővé teszi, hogy egy mag a memória allokálása vagy felszabadítása során lokálisan végezze el a műveleteket. Az ilyen típusú gyorsítótár növelni tudta a memória allokálás és felszabadítás teljesítményét, eltávolítva a különböző CPU magok bevonásához szükséges felesleges szinkronizációs primitíveket. A végzett tesztek során a teljesítménynövekedés 6,3% és 31% között változott a terheléstől függően.
    • Bevezetésre került a fájl leírók létrehozásának lehetősége, amelyek egy meghatározott névtérhez (namespace) vannak társítva. Ellentétben azzal, amikor névterekhez az azonosítók ( /proc//ns/) szerint férünk hozzá, a fájl leíró egy konkrét névtér példányhoz van hozzárendelve, így kizárva azt a helyzetet, amikor az azonosítót újra allokálják és egy másik objektumra mutat. A pidfds használatához hasonlóan, a névterekre hivatkozó fájl leírók megnyitása az open_by_handle_at() és name_to_handle_at() függvényeken keresztül történik.
    • Bevezetésre került a „Swap Table” mechanizmus, amely javítja a swap teljesítményét. A gyorsulás a swap cache-hozzáféréssel kapcsolatos verseny csökkentéséből, hatékonyabb keresési lehetőségekből és a töredezettség csökkentéséből fakad. A Swap Table alapú backend a swap cache tárolására lett alkalmazva az XArray backend helyett, és átlagosan 5-20%-kal növelte a teljesítményt. A usemem tesztben a sávszélesség 17-28%-kal nőtt, a több szálon végzett kernel újraépítési tesztben az építési idő 1,12-3,19%-kal csökkent, a redis-benchmark BGSAVE teszt 6-7%-os kérdésfeldolgozási növekedést mutatott.
    • A Zswap alrendszer közvetlenül a zsmalloc memóriaallokáló rendszer használatára lett átállítva, a zpool réteget, amely már sehol nem használatos, most eltávolították a kernből.
    • Az x86 rendszerek mikrokód betöltő viselkedésének kezelésére bevezetésre került a mikrocode=flaglist parancssori opció. Jelenlegi formájában az új lehetőség a microcode.force_minrev helyére lépett, és lehetővé teszi a mikrokód betöltéséhez szükséges legkisebb verzió megadását is.
    • Megkezdődött a túlzottan elnagyolt 'page' struktúra átszervezése, amelyet a memóriamodulok kezelésére használnak. Hozzáadva a 'memdesc_flags_t' típus az univerzális flagok mezőihez, melyeket a jövőben a 'page' struktúrából különálló slab és folio struktúrák kiemeléséhez lehet használni.
    • Az Altera Nios II (FPGA alapú soft-processzor) processzorokhoz használt nios2 architektúrához implementálva lett a clone3() rendszerhívás támogatása.
    • A kernel konfigurációba (KConfig) hozzá lett adva a 'transitional' attribútum, amelyet az olyan beállítások megjelölésére lehet használni, amelyek nem jelennek meg a felhasználói felületeken, például a 'make menuconfig'-ban, és nem kerülnek be a generált konfigurációs fájlokba. Az attribútum fő célja a lehetőségek átnevezésének megkönnyítése a visszafelé kompatibilitás megőrzésével.
    • A Clang fordító minimális verziója, amellyel a kernel összeállítható, felemelkedett az LLVM 15 eszközcsomagig. A Debian 12 és Ubuntu 22.04 az LLVM 14-et tartalmazza.
    • Folytatódott a Rust-for-Linux ágból származó módosítások átvitele, amelyek a Rust nyelv használatára vonatkoznak mint második nyelv a driverek és kernel modulok fejlesztéséhez (a Rust támogatás alapértelmezetten nincs engedélyezve, és nem vezet a Rust kötelező fordítási függőségek közé sorolásához a kernel esetében). Az új verzióban a Rust nyelvű kód számára megvalósult a memóriával végzett atomikus műveletek, a maple tree struktúra, a DebugFS fájlok létrehozásának lehetősége és bitkép manipuláló funkciók. Az API hozzáférés bővült a driverek fejlesztéséhez. Komplett absztrakciós készlet került hozzáadásra USB-eszközök driverének fejlesztéséhez (példa USB-driver). A perf segédprogramhoz hozzáadva lett a rustc fordító által generált hibakereső szimbólumok támogatása.
  • Virtualizáció és biztonság
    • Hozzáadva a letöltött BPF programok kriptográfiai aláírás általi ellenőrzésének támogatása. A jövőben ez a lehetőség bővülni fog a szabályok megadásának eszközeivel a BPF programok aláírásának ellenőrzésére, és lehetőséget biztosít a nem privilegizált felhasználók számára, hogy használják a hitelesített BPF programokat.
    • A KVM hypervisor supports Intel CET (Control-flow Enforcement Technology) virtualization, designed to protect against exploits that utilize return-oriented programming (ROP). The essence of the protection is that after control is passed to a function, the return address is saved by the processor not only in the usual stack but also in a separate shadow stack that cannot be altered directly.
    • Implemented the ability to use more than 255 CPUs in guest systems running under the Bhyve hypervisor on hosts with FreeBSD 15.
    • Added a dibs (Direct Internal Buffer Sharing) layer for controlled sharing of buffers within isolated environments such as a hypervisor or a Linux kernel instance.
    • The audit subsystem has been updated to support multiple LSM (Linux Security Module) modules enabled at the same time.
    • A virtio driver spi-virtio has been added for accessing SPI devices (Serial Peripheral Interface) from virtuális gépekhez.
    • The KVM hypervisor has added support for the SEV-SNP CipherText Hiding mode, which blocks the reading of memory ciphertext from protected guest systems on unauthorized CPUs.
    • Added the qtee driver for TEE environments (Trusted Execution Environment) of Qualcomm chips.
  • Hálózati alrendszer
    • Support for encrypting TCP connections has been added using the PSP (PSP Security Protocol), developed by Google to encrypt traffic between data centers. PSP provides encryption, cryptographic integrity verification, and source authentication, implementing a unique combination of features from TLS and IPsec protocols. PSP applies encryption at the level of individual network connections rather than the entire communication channel. It uses separate encryption keys for different tunneled TCP connections to strictly isolate traffic from different applications and handlers. To reduce CPU load, offloading of encryption and decryption operations to the network cards is supported. UDP is used as the transport protocol for data transmission, over which the content of the original TCP packet is tunneled.

      A Linux 6.18 kernel kiadása
    • Hozzáadva az AccECN (Pontos Explicit Congestion Notification) kiterjesztés kezdeti támogatása, amely az ECN kiterjesztés javított változata, lehetővé téve a hosztok számára, hogy túlterheltség esetén ahelyett, hogy az IP-csomagokat eldobnák, megjelöljék azokat, ami lehetővé teszi a kezdeti torlódások azonosítását a kommunikációs csatornákban csomagveszteség nélkül. Az eredeti ECN kiterjesztés korlátozása, hogy a TCP-n belüli egyetlen átvitel-átviteli ciklus (RTT, Round-Trip Time) során csak egy túltöltési jelzés küldése engedélyezett. Az AccECN eltávolítja ezt a korlátozást, és lehetővé teszi a fogadó számára, hogy több túltöltési címkét küldjön a TCP-csomag fejlécében a küldőnek. A tömörítési algoritmusok a kapott információkat felhasználhatják a túltöltések pontosabb kezelésére, anélkül hogy drasztikusan csökkenteni kellene a csomagok küldésének intenzitását, ha enyhe túlterhelés lép fel.
    • Az UDP-stack optimalizálva lett a bejövő csomagok kezelésére DDoS-támadások alatt, amelyek nagyszámú csomagot küldenek egy vagy több UDP-socketbe. Az elvégzett optimalizálások, mint például a versengő zárak csökkentése, a memória adatstruktúrák elhelyezésének optimalizálása és a NUMA (Non-Uniform Memory Access) architektúrával számoló zárak alkalmazása, lehetővé tették a UDP-csomagok fogadásának teljesítményének 47%-kal vagy többel való növelését szélsőséges körülmények között.
    • Lehetőség van a NFS-szerver I/O gyorsítótárazásának letiltására, ami lehetővé teszi a NFS-szerver használatát kis memória kapacitású rendszerekben (például korlátozott felhőalapú környezetekben). A gyorsítótár letiltása szintén hasznos lehet a terhelt NFS-szervereken, hogy elkerüljük a lokális tárolókhoz kapcsolódó adatok gyorsítótárból való eltávolítását, mivel memóriát szabadítunk fel az NFS gyorsítótár számára.
    • A bejövő és kimenő csomagok maximális mérete a hálózati socketekhez (net.core.rmem_max és net.core.wmem_max) 2 MB-ról 4 MB-ra nőtt. Az alapértelmezett beállított méret változatlan maradt (net.core.rmem_default és net.core.wmem_default = 2 MB).
    • Hozzáadva a Qualcomm PPE (Packet Processing Engine) hálózati műveletek gyorsítójához készült meghajtó, amely a Qualcomm IPQ9574 SoC-ban található.
  • Hardver
    • A magban szereplő mag, a Rust nyelven írt Tyr drivert tartalmaz, amely az ARM Mali GPU-k, például a Mali G310, G510 és G710, CSF (Command Stream Frontend) technológiájával való működését biztosítja. A driver egyelőre nem készült el a normál felhasználók állandó használatára, és kísérleti prototípusként szolgál a Rust nyelven írt driverek fejlesztéséhez szükséges absztrakciók tesztelésére.
    • A HID (Human Interface Device) interfésszel rendelkező bemeneti eszközökhöz hozzáadták a tapipadok haptikus visszajelzésének és nyomásérzékelők támogatását.
    • Folytatódtak a Xe DRM driver (Direct Rendering Manager) fejlesztései az Intel Xe architektúrával rendelkező GPU-khoz, amelyek az Intel Arc család grafikus kártyáiban és a Tiger Lake processzoroktól kezdődően az integrált grafikában használatosak. Az új verzióban bevezették a madvise interfészt, aktiválódott az SR-IOV PF (Single Root I/O Virtualization Physical Function) támogatása, hozzáadták az Intel PSMI üzemmód támogatását a hardver érvényesítéséhez, biztosították a firmware-ek által küldött hibainformációk feldolgozását, megvalósították az SLPC energiafogyasztási profilt, és lehetővé tették járulékos firmware-ek (például a hűtővezérlőhöz és a feszültségszabályozóhoz) betöltését a driver ellenőrzése során.
    • Az AMDGPU driverhez hozzáadták a Cyan Skillfish APU-k támogatását, javították az AMD GCN 1.0 támogatását, képessé tették a criu eszközkészlettel való kompatibilitást, a sysfs-be pedig hőmérsékleti mutatókat adtak hozzá, lehetővé téve a felhasználói térből érkező MMIO újratérképezési kérelmeket.
    • Az i915 driverhez hozzáadták a Wildcat Lake család chipeinek támogatását, valamint javították a Jasper Lake, Elkhart Lake, Gen7 és Gen6 GPU-kal való együttműködést.
    • A Nouveau driverben alapértelmezetten aktiválták a NVIDIA GSP firmware-eket, és javították a hibakezelést.
    • Folyatódott a Nova driver komponenseinek integrálása a GSP firmware-rel rendelkező NVIDIA GPU-khoz, amelyeket az NVIDIA GeForce RTX 2000 sorozattól kezdődően használnak a Turing mikroarchitektúrán. A driver Rust nyelven íródott. Az új verzióban bővítették a GSP firmware-ek támogatását, javították a 'register!' makró megvalósítását, és hozzáadták a PCI-eszközök osztályainak és gyártói azonosítóinak támogatását.
    • Hozzáadták a rocket drivert az NPU gyorsítókhoz, amelyek az RK3588 SoC Rockchip esetében alkalmazhatók.
    • Új kernel paraméter került bevezetésre, a 'boot_display', amely lehetővé teszi a kimeneti eszköz választását a több GPU-val rendelkező rendszereken a rendszerindítási folyamat megjelenítésére.
    • A vesadrm driverben megvalósították a 8-bites paletták támogatását.
    • A msm meghajtóba bekerült az Adreno 663 GPU támogatása, és megvalósult az IFPC (Inter Frame Power Collapse) energiatakarékos technológia támogatása.
    • A panthor meghajtóba bekerült a Mali-G710, Mali-G510, Mali-G310, Mali-Gx15, Mali-Gx20 és Mali-Gx25 GPU támogatása.
    • Hozzáadva a Qualcomm Glymur és PM4125, Realtek RT1321, Shanghai FourSemi FS2104/5S, Texas Instruments PCM1754 és TAS2783A, qcs615, CS35L56 B2, tas2118, tas2x20, tas5825 hangrendszerek támogatása. Továbbá hozzáadva a Tascam US-144mkII és Presonus S1824c USB hangkártyák támogatása.
    • Hozzáadva az ARM CPU Cortex-A320/A520AE/A720AE és a C1-Nano/Pro/Premium/Ultra támogatása.
    • Hozzáadva az ARM platformok, SoC-k és eszközök támogatása: Apple M2 Pro, M2 Max és 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 és RZ/N2H, Aspeed AST27xx, Meta Clemente BMC, Netcube Nagami som, Tqma91xx, Ultratronik i.MX8MP Ultra-MACH, i.MX8ULP EVK9, Buffalo WXR-1750DHP.

Közben a latin-amerikai Szabad Szoftver Alapítvány kiadta a teljesen szabad 6.18-as Linux-libre 6.18-gnu magváltozatot, amely mentes a szabadalmi és illesztőprogramok nem szabad alkotóelemeitől vagy kódra vonatkozó kitételektől, amelyeket a gyártó korlátozott. A 6.18-as kiadásban frissült a blobok tisztításának kódja a Nova-Core, Intel XE, TI PRUeth, Lantiq GSWIP, Marvell WiFi-Ex illesztőprogramokban. Tisztításra kerültek a blobok nevei az ARM Qualcomm, Mediatek és TI ARM64 chipjei számára készült dts fájlokban (devicetree). A blobok betöltése semlegesítve lett az új FourSemi fs2104/5s, TI TAS2783 és Qualcomm GENI illesztőprogramokban.

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