Két hónapos fejlesztés után Linus Torvalds bemutatta a Linux 6.7 kernel kiadását. A legfontosabb változások között szerepel a Bcachefs fájlrendszer integrálása, az Itanium architektúra támogatásának megszüntetése, a Nouvea működése GSP-R firmware-rel, a TLS-enkódolás támogatása az NVMe-TCP-ben, kivételek használatának lehetősége a BPF-ben, a futex támogatása az io_uring-ban, a fq (Fair Queuing) ütemező teljesítményének optimalizálása, a TCP-AO (TCP Authentication Option) kiterjesztés támogatása és a Landlock védelem mechanizmusán belüli hálózati kapcsolatok korlátozásának lehetősége, valamint a hozzáférés kezelésének bevezetése a user namespace-hez és az io_uring-hoz AppArmor-on keresztül.
Az új verzióba 18405 javítást fogadtak el 2066 fejlesztőtől, a patch mérete 72 MB (a változások 13467 fájlt érintettek, 906147 sor kódot adtak hozzá, 341048 sort töröltek). A korábbi kiadásban 15291 javítást fogadtak el 2058 fejlesztőtől, a patch mérete 39 MB volt. A 6.7-es verzióban bemutatott összes változás körülbelül 45%-a az eszközmeghajtókhoz kapcsolódik, körülbelül 14%-a a hardverarchitektúrákhoz kapcsolódó kódfrissítésekkel kapcsolatos, 13%-a a hálózati stackhez kapcsolódik, 5%-a a fájlrendszerekhez, és 3%-a a kernel belső alrendszereihez.
A 6.7 kernel fő újdonságai:
- Lemezszubszisztéma, bemenet/kipontozás és fájlrendszerek
- A kernelbe befogadott Bcachefs fájlrendszer kódja megpróbálja elérni az XFS-re jellemző teljesítményt, megbízhatóságot és skálázhatóságot, ötvözve a Btrfs és ZFS kibővített funkcionalitásának elemeivel. Például a Bcachefs támogatja az olyan lehetőségeket, mint több eszköz egy partícióban való használata, többrétegű tárolórétegek (alsó réteg a gyakran használt adatok számára gyors SSD alapokon, míg a felső réteg a kevésbé igényelt adatok számára merevlemezeken), replikáció (RAID 1/10), gyorsítótárazás, átlátható adatkompresszió (LZ4, gzip és ZSTD üzemmódok), állapotmentések (snapshot), integritás-ellenőrzés ellenőrző összegekkel, a Reed-Solomon kódok (RAID 5/6) tárolásának lehetősége, valamint az adatok titkosított formában történő tárolása (ChaCha20 és Poly1305 használatával). Teljesítményben a Bcachefs megelőzi a Btrfs-t és más, Copy-on-Write mechanizmusra alapozott fájlrendszereket, és működési sebessége közel áll az Ext4 és XFS sebességéhez.
- A Btrfs fájlrendszerben egy egyszerűsített kvóta mód került bevezetésre, amely lehetővé teszi a nagyobb teljesítmény elérését azáltal, hogy csak abban az almappában követi a kiterjedéseket, ahol azok létrejöttek, ami jelentősen egyszerűsíti a számításokat és növeli a teljesítményt, de nem engedi figyelembe venni a több almappában közösen használt kiterjedéseket.
- A Btrfs-ben új adatszerkezet, a «stripe tree» került bevezetésre, amely a kiterjedések logikai leképezésére alkalmas olyan helyzetekben, amikor a fizikai leképezés eltérő eszközökön nem egyezik. A struktúra egyelőre a RAID0 és RAID1 megvalósításokban kerül felhasználásra zónázott blokkeszközök esetében. A jövőben tervezik ennek a struktúrának a felhasználását magasabb szintű RAID megoldásokban is, ami lehetővé teszi számos, a jelenlegi megvalósításban lévő probléma megoldását.
- A Ceph fájlrendszerben megvalósították a csatolt fájlrendszerek felhasználói azonosítók leképezésének támogatását, amely a fájlok egy adott felhasználóval való összehangolására szolgál, ha egy másik felhasználó csatolt részén találhatók.
- Az efivarfs-be hozzáadták az uid és gid megadásának lehetőségét a csatoláskor, ezáltal lehetővé téve az UEFI változók módosítását olyan folyamatok számára, amelyek nem rendelkeznek root jogosultsággal.
- Az exFAT-hoz ioctl-hívások kerültek bevezetésre a fájlrendszer attribútumainak olvasására és módosítására. Nulla méretű könyvtárak feldolgozása is megvalósult.
- Az F2FS-ben megvalósították a 16K méretű blokkok használatának lehetőségét.
- Az automatikus csatolási mechanizmust, az autofs-t, átállították az új partíciós csatolási API használatára.
- Az OverlayFS-ben bevezetésre kerültek a «lowerdir+» és a «datadir+» csatolási lehetőségek. Támogatott az OverlayFS belső csatolása xattrs-nal.
- Az XFS optimalizálta a CPU terhelését a valós idejű blokk elosztási kódjában. Lehetővé vált az olvasási és FICLONE műveletek egyidejű végrehajtása.
- Az EXT2 kódját átállították a memóriaoldalak folyamataira (page folios) való használatra.
- Memória és rendszerszolgáltatások
- Megszűnt az ia64 architektúra támogatása, amelyet az Intel Itanium processzorok alkalmaztak, amelyek értékesítése 2021-ben teljesen leállt. Az Itanium processzorokat az Intel 2001-ben mutatta be, de az ia64 architektúra nem tudta felvenni a versenyt az AMD64-el, főként az AMD64 magasabb teljesítménye és a zökkenőmentesebb átállás miatt a 32 bites x86 processzorokról. Ennek eredményeként az Intel érdekei az x86-64 processzorok felé tolódtak, míg az Itanium sorsa szerverek HP Integrity, melynek megrendelése három évvel ezelőtt megszűnt. Az ia64 támogatásához szükséges kódot eltávolították a kernből, főként a platform hosszan tartó támogatásának hiánya miatt. Linus Torvalds kifejezte hajlandóságát az ia64 támogatásának visszaállítására a kernben, de csak akkor, ha találkozik egy olyan karbantartóval, aki legalább egy évig demonstrálni tudja a platform megfelelő támogatását a fő kernel felett.
- Hozzáadták a kern parancssori paraméterét, az «ia32_emulation»-t, amely lehetővé teszi a 32 bites emulációs mód támogatásának bekapcsolását és kikapcsolását az x86-64 architektúrára készült kern-ek bootolása során. Gyakorlatilag az új paraméter lehetővé teszi a kern 32 bites alkalmazásokkal való kompatibilitásának támogatására történő összeállítását, de alapértelmezés szerint kikapcsolja ezt a módot a kern támadási felületének csökkentése érdekében, mivel a kompatibilitás biztosításához szükséges API-k kevésbé teszteltek, mint a kern fő interfészei.
- Folyamatosan átkerülnek a Rust-for-Linux ágból származó változások, amelyek a Rust nyelv másodlagos nyelvként való használatára vonatkoznak a driverek és kern modulok fejlesztésében (a Rust támogatás alapértelmezés szerint nem aktív, és nem teszi kötelezővé a Rustot a kern építési függőségei közé). Az új verzióban a Rust 1.73 kiadásának használatára való átállás történt, és egy kötegkezelési (workqueues) API javasolt.
- Lehetővé vált a binfmt_misc mechanizmus használata új végrehajtható fájlformátumok (például Java vagy Python alkalmazások futtatása) támogatására, elkülönült nem privilégizált névterekben (namespace).
- A cpuset csoport-vezérlő lehetővé teszi a CPU magok kiadásának kezelését a feladat végrehajtása során, és biztosítja a helyi és távoli szekciók (remote partition) elkülönítését, amelyek abban különböznek, hogy a szülő cgroup érvényes gyökérszakasz-e vagy sem. A cpuset új beállításokat is kapott: „cpuset.cpus.exclusive” és „cpuset.cpus.exclusive.effective” az exkluzív CPU hozzárendeléshez.
- A BPF alrendszerben megvalósították a kivételek támogatását, amelyeket a BPF programból sürgősségi kilépésként dolgoznak fel, lehetővé téve a biztonságos veremkeresést. Ezen kívül a BPF programokban engedélyezték a kptr mutatók használatát a CPU-hoz való kötődés során.
- Az io_uring alrendszerhez hozzáadták a futex műveletek támogatását, valamint új műveleteket valósítottak meg: IORING_OP_WAITID (aszimmetrikus waitid verzió), SOCKET_URING_OP_GETSOCKOPT (getsockoptand változat), SOCKET_URING_OP_SETSOCKOPT (setsockopt változat) és IORING_OP_READ_MULTISHOT (többszöri olvasási műveletek, amelyek nem állnak le, amíg vannak adatok vagy a puffert meg nem töltik).
- Könnyűsúlyú, egyirányú FIFO sorok megvalósítása került hozzáadásra, amelyek csak a sorból való eltávolítás esetén igényelnek spin-lockot a folyamat kontextusában, és atomikus sorba helyezés esetén nem igényelnek spin-lockot bármilyen kontextusban.
- Hozzáadva az „objpool” körkörös puffer, amely skálázható megvalósítással rendelkezik a nagy teljesítményű sorok számára az objektumok hozzáadásához és visszaadásához.
- Hozzáadták a futex2 új API-jának kezdeti változásait, amely a NUMA rendszerekben magasabb teljesítménnyel rendelkezik, támogat más, mint 32 bites méreteket, és a multiplex rendszerhívás, a futex() helyett használható.
- ARM32 és S390x architektúrákhoz hozzáadták a BPF utasításkészlet (cpuv4) támogatását.
- A RISC-V architektúra számára megvalósították a Clang 17-ben elérhető Shadow-Call Stack ellenőrzési mód használatát, amely a verem túlcsordulása esetén véd a visszatérési cím felülírásától. A védelem lényege, hogy a funkciónak átadott vezérlés után a visszatérési címet egy külön „árnyék” veremben tárolják, és ezt a címet a funkcióból való kilépés előtt vonják ki.
- A KSM (Kernel Samepage Merging) mechanizmushoz új intelligens memóriaoldalak szkennelési mód került bevezetésre, amely nyomon követi a sikertelenül szkennelet oldalakat, és csökkenti azok ismételt szkennelésének intenzitását. Az új mód aktiválásához új beállítást adtak hozzá: "/sys/kernel/mm/ksm/smart_scan".
- Bevezetésre került egy új ioctl parancs, a PAGEMAP_SCAN, amely a userfaultfd() használatával lehetővé teszi a memóriaterület írásainak azonosítását. Ez az új funkció például használható a CRIU folyamatállapotának mentésére és helyreállítására, vagy játékokhoz kapcsolódó csalásgátló rendszerekben.
- A build rendszerben, ha Clang fordító van telepítve, alapértelmezetten engedélyezve van a perf alrendszert használó példák, BPF programok formájában történő fordítása.
- Eltávolították a videobuf régi rétegét, amelyet a média alrendszer keretbufferei kezelésére használtak, és amelyet több mint 10 évvel ezelőtt cseréltek le az új videobuf2 implementációra.
- Virtualizáció és biztonság
- Az fscrypt alrendszerhez hozzáadták a blokkokkal történő adatmegtartás lehetőségét, amely kisebb, mint a fájlrendszer blokkja. Ez szükséges lehet olyan hardveres titkosítási mechanizmusok aktiválásához, amelyek csak kis blokkokat támogatnak (például a 4096-os blokkméretű UFS vezérlők használhatóak 16K blokk méretű fájlrendszerekhez).
- Az iommufd alrendszerhez, amely lehetővé teszi az IOMMU (Bemeneti/Kimeneti Memóriakezelő Egység) memóriaoldal táblák kezelését felhasználói térből származó fájl leírókon keresztül, hozzáadták a még nem törölt (dirty) adatok nyomon követését DMA műveletekhez, ami szükséges a folyamatok migrációs memóriaadatainak azonosításához.
- A Landlock mechanizmushoz, amely lehetővé teszi a folyamatcsoportok külső környezettel való interakciójának korlátozását, hozzáadták a TCP socketekhez való hozzáférés szabályainak definiálásának támogatását. Például létrehozhatunk egy szabályt, amely csak a 443-as port elérését engedélyezi HTTPS kapcsolatok létrehozásához.
- Az AppArmor alrendszerhez hozzáadták a io_uring mechanizmushoz való hozzáférés kezelését és a felhasználói azonosítók helynév (user namespaces) létrehozását, lehetővé téve, hogy bizonyos folyamatok számára csak egyes funkciókhoz legyen hozzáférés.
- API került bevezetésre az autentikálásra virtuális gépekhez a folyamatok betöltésének integritásának megerősítésére.
- A LoongArch rendszereken a KVM hypervisor használatával történő virtualizáció támogatása valósult meg.
- A KVM hypervisor használatával RISC-V rendszereken megjelent a Smstateen bővítmény támogatása, amely blokkolja a virtuális gép CPU regiszterekhez való hozzáférését, amelyeket a hypervisor kifejezetten nem támogat. Emellett megjelent a vendég rendszerekben a Zicond bővítmény használatának támogatása, amely lehetővé teszi bizonyos feltételes egész számű műveletek alkalmazását.
- A KVM által kezelt x86 architektúrával rendelkező vendég rendszerekben legfeljebb 4096 virtuális CPU használata engedélyezett.
- Hálózati alrendszer
- Az NVMe-TCP meghajtó (NVMe over TCP), amely lehetővé teszi az NVMe tárolók elérését hálózaton keresztül (NVM Express over Fabrics) TCP protokoll használatával, támogatást nyújtott az adatátviteli csatorna titkosításának TLS használatával (KTLS és a háttérfolyamat a felhasználói térben, tlshd, a kapcsolatok koordinálásához).
- A fq (Fair Queuing) csomagütemező teljesítményének optimalizálását hajtották végre, ami 5%-os növekedést eredményezett a TCP Request/Response (tcp_rr) tesztnél magas terhelések mellett, valamint 13%-os növekedést a korlátlan UDP csomagáramlás esetén.
- A TCP protokollhoz opcionális időbélyegzés (TCP TS) került hozzáadásra mikroszekundumos pontossággal (RFC 7323), amely lehetővé teszi a késleltetések pontosabb értékelését és fejlettebb túlterheléskezelő modulok létrehozását. Az aktiváláshoz használható a parancs: „ip route add 10/8 … features tcp_usec_ts”.
- A TCP veremben hozzáadtak egy TCP-AO (TCP Authentication Option, RFC 5925) bővítmény támogatását, amely lehetővé teszi a TCP fejléc MAC-kódok (Message Authentication Code) általi ellenőrzését, modern HMAC-SHA1 és CMAC-AES-128 algoritmusok használatával, a régebbi MD5 algoritmus alapú TCP-MD5 opció helyett.
- Új virtuális hálózati eszköz típus lett hozzáadva, a „netkit”, amelynek adatátviteli logikáját BPF-program segítségével határozzák meg.
- A KSMBD, ami egy kernel szintű SMB szerver megvalósítás, támogatást kapott a kombinált karakterek szurrogátpárait tartalmazó fájlnevek átkonvertálásához.
- Az NFS-ben javították a folyamatok megvalósítását RPC-szolgáltatásokkal. Hozzáadva a írási delegálás támogatása (NFSv4.1+). Az NFSD-be beépítették a netlink feldolgozót rpc_status néven. Javult az NFSv4.x kliensek támogatása a knfsd-n való újbóli exportálás alkalmával.
- Hardver
- A Nouveau kernel module has been added to provide initial support for GSP-RM firmware, which is used in NVIDIA RTX 20+ GPUs to offload initialization and GPU management tasks to a separate GSP (GPU System Processor) microcontroller. GSP-RM support allows the Nouveau driver to operate through firmware calls, rather than direct hardware interaction coding, significantly simplifying the addition of support for new NVIDIA GPUs by using existing calls for initialization and power management.
- The AMDGPU driver has implemented support for GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1, and DML2. Improved support for seamless booting (no flickering when switching video modes) has been added.
- The i915 driver has implemented support for Intel Meteor Lake chips and added initial support for Intel LunarLake (Xe 2).
- Support for asymmetric data transfer channels introduced in the USB4 v2 specifications (120/40G) has been added.
- Support for ARM SoCs has been added: Qualcomm Snapdragon 720G (used in Xiaomi smartphones), AMD Pensando Elba, Renesas R8A779F4 (R-Car S4-8), USRobotics USR8200 (used in routers and NAS).
- Support for the Fairphone 5 smartphone and ARM boards Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 Powkiddy RGB30 has been added.
- Support for RISC-V boards Milk-V Pioneer and Milk-V Duo has been added.
- Support for audio interfaces of HUAWEI laptops equipped with AMD CPUs has been added. Support for additional speakers installed on Dell Oasis 13/14/16 laptops has been added. Support for built-in speakers of ASUS K6500ZC has been added. Support for mute indicators on HP 255 G8 and G10 laptops has been added. Support for audio drivers acp6.3 has been added. Support for professional recording interfaces Focusrite Clarett+ 2Pre and 4Pre has been added.
Eközben a latin-amerikai Szabad Szoftver Alapítvány bemutatta a teljesen szabad 6.7-es kernel verziót — a Linux-libre 6.7-gnu-t, amely mentes a gyártók által korlátozott, nem szabad komponenseket vagy kóddarabokat tartalmazó firmware-ektől és illesztőprogramoktól. A 6.7-es kiadásban frissült a blobok tisztítási kódja különböző illesztőprogramokban és alrendszerekben, például az amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs és btqca illesztőprogramok esetében. A driver localtalk és rtl8192u tisztító kódját eltávolították, mivel ezeket kizárták a kernelből. Eltávolították a xhci-pci, rtl8xxxu és rtw8822b illesztőprogramok felesleges tisztítási komponenseit, amelyek korábban tévedésből lettek hozzáadva. A dts-fájlokban Aarch64 architektúrához tartozó blobok neveit is megtisztították. Eltávolították a blobokat az új mt7925, tps6598x, aw87390 és aw88399 illesztőprogramokban.
Forrás: opennet.ru
