Linux 6.7 kernel kiadás

Két hónapos fejlesztés után Linus Torvalds bemutatta a Linux kernel 6.7 kiadását. A legfigyelemreméltóbb változások: a Bcachefs fájlrendszer integrációja, az Itanium architektúra támogatásának megszűnése, a Nouvea GSP-R firmware-rel való együttműködése, TLS titkosítás támogatása NVMe-TCP-ben, kivételek használatának lehetősége a BPF-ben, futex támogatása az io_uringben, az fq (Fair Queuing) ütemező teljesítményének optimalizálása, a TCP-AO bővítmény támogatása (TCP Authentication Option) és a hálózati kapcsolatok korlátozásának képessége a Landlock biztonsági mechanizmusban, hozzáadott hozzáférés-vezérlés a felhasználói névtérhez és az io_uring AppArmoron keresztül.

Az új verzió 18405 2066 javítást tartalmaz 72 fejlesztőtől, a patch mérete 13467 MB (a változtatások 906147 341048 fájlt érintettek, 15291 2058 kódsor került hozzáadásra, 39 45 sor törölve lett). Az utolsó kiadás 6.7 javítást tartalmazott 14 fejlesztőtől, a patch mérete 13 MB volt. A 5-ben bevezetett változtatások körülbelül 3%-a az eszközillesztőkkel kapcsolatos, a változtatások hozzávetőleg XNUMX%-a a hardverarchitektúrák kódjának frissítéséhez, XNUMX%-a a hálózati veremhez, XNUMX%-a a fájlrendszerekhez és XNUMX%-a. belső kernel alrendszerekhez kapcsolódnak.

Főbb újítások a 6.7-as kernelben:

  • Lemez alrendszer, I/O és fájlrendszerek
    • A kernel a Bcachefs fájlrendszer kódját veszi át, amely megkísérli elérni az XFS teljesítményét, megbízhatóságát és méretezhetőségét, kombinálva a Btrfs és ZFS fejlett funkcióinak elemeivel. Például a Bcachefs olyan funkciókat támogat, mint például több eszköz elhelyezése egy partícióban, többrétegű meghajtóelrendezés (az alsó réteg a gyakran használt adatokkal gyors SSD-k alapján, a felső réteg pedig a merevlemezekről származó kevésbé használt adatokkal), replikáció (RAID). 1/10), gyorsítótárazás, átlátszó adattömörítés (LZ4, gzip és ZSTD módok), állapotszeletek (pillanatképek), integritás-ellenőrzés ellenőrző összegekkel, Reed-Solomon hibajavító kódok tárolásának képessége (RAID 5/6), információk tárolása titkosított formában (ChaCha20 és Poly1305 használatos). A Bcachefs teljesítményét tekintve megelőzi a Btrfs-t és más, a Copy-on-Write mechanizmuson alapuló fájlrendszereket, és az Ext4-hez és az XFS-hez közeli működési sebességet mutat.
    • A Btrfs fájlrendszer egy egyszerűsített kvóta módot vezet be, amely lehetővé teszi, hogy nagyobb teljesítményt érjen el a kiterjedések nyomon követésével csak abban az alpartícióban, amelyben létrejöttek, ami jelentősen leegyszerűsíti a számításokat és javítja a teljesítményt, de nem teszi lehetővé a több területen megosztott kiterjedések figyelembevételét. alpartíciók.
    • A Btrfs egy új "csíkfa" adatstruktúrát adott hozzá, amely alkalmas logikai kiterjedés-leképezésre olyan helyzetekben, amikor a fizikai leképezések nem egyeznek az eszközök között. A struktúrát jelenleg a RAID0 és RAID1 zónás blokkeszközökhöz való implementációiban használják. A jövőben ezt a struktúrát tervezik használni a magasabb szintű RAID-ekben, ami számos, a jelenlegi megvalósításban meglévő problémát megold majd.
    • A Ceph fájlrendszer támogatja a felcsatolt fájlrendszerek felhasználói azonosítóinak leképezését, amelyet arra használnak, hogy egy adott felhasználó fájljait egy felcsatolt idegen partíción egy másik felhasználóval párosítsák az aktuális rendszeren.
    • Hozzáadtuk az uid és gid on mount megadásának lehetőségét az efivarfs-hoz, hogy a nem root folyamatok módosíthassák az UEFI-változókat.
    • Ioctl-hívások hozzáadva az exFAT-hoz az FS-attribútumok olvasásához és módosításához. Hozzáadott nulla méretű könyvtárak kezelése.
    • Az F2FS megvalósítja a 16K blokkok használatának lehetőségét.
    • Az autofs automatikus csatlakoztatási mechanizmusa át lett állítva az új partícióillesztő API használatára.
    • Az OverlayFS „lowerdir+” és „datadir+” csatolási lehetőségeket kínál. Hozzáadott támogatás az OverlayFS beágyazott csatlakoztatásához xattrs-szel.
    • Az XFS optimalizálta a CPU terhelését a valós idejű blokkkiosztási kódban. Lehetőség van olvasási és FICLONE műveletek egyidejű végrehajtására.
    • Az EXT2 kódot oldalfóliók használatára alakították át.
  • Memória- és rendszerszolgáltatások
    • A 64-ben teljesen megszűnt Intel Itanium processzorokban használt ia2021 architektúra támogatása megszűnt. Az Itanium processzorokat 2001-ben vezette be az Intel, de az ia64 architektúra nem tudta felvenni a versenyt az AMD64-gyel, elsősorban az AMD64 nagyobb teljesítménye és a 32 bites x86 processzorokról való simább átállás miatt. Ennek eredményeként az Intel érdeklődése az x86-64-es processzorok javára tolódott el, az Itaniumban pedig továbbra is a HP Integrity szerverek maradtak, amelyek megrendelését három éve leállították. Az ia64 támogatás kódja elsősorban a platform hosszú távú támogatásának hiánya miatt került eltávolításra a rendszermagból, míg Linus Torvalds kifejezte készségét, hogy visszaadja az ia64 támogatását a kernelnek, de csak akkor, ha van olyan karbantartó, aki képes bemutatni a magas minőséget. legalább egy évig támogatja ezt a platformot a fő kernelen kívül.
    • Hozzáadtuk az „ia32_emulation” kernelsori parancsparamétert, amely lehetővé teszi a 32 bites módú emuláció támogatásának engedélyezését vagy letiltását az x86-64 architektúrára épített kernelekben a rendszerindítási szakaszban. Gyakorlati szempontból az új opció lehetővé teszi a kernel felépítését a 32 bites alkalmazásokkal való kompatibilitás támogatásával, de alapértelmezés szerint tiltsa le ezt a módot, hogy csökkentse a kernel támadási vektorát, mivel a kompatibilitási API kevésbé tesztelt, mint a fő kernel. interfészek.
    • A Rust-for-Linux ágból a Rust nyelvnek második nyelvként való használatához kapcsolódó változtatások folyamatos migrációja az illesztőprogramok és kernelmodulok fejlesztéséhez (a Rust támogatás alapértelmezés szerint nem aktív, és nem vezet a Rust felvételéhez a szükséges összeállítási függőségek a kernelhez). Az új verzió áttér a Rust 1.73 kiadás használatára, és egy sor kötést kínál a munkasorokkal való munkavégzéshez.
    • Használhatja a binfmt_misc mechanizmust új futtatható fájlformátumok támogatásához (például lefordított Java vagy Python alkalmazások futtatásához) különálló, nem jogosult névtereken belül.
    • A cgroup vezérlő cpuset, amely lehetővé teszi a CPU magok használatának szabályozását egy feladat végrehajtása során, felosztást biztosít helyi és távoli particionálásra, amelyek különböznek attól, hogy a szülő cgroup a megfelelő gyökér szakasz-e vagy sem. A „cpuset.cpus.exclusive” és a „cpuset.cpus.excluisve.effective” új beállításokat is hozzáadtuk a cpusethez az exkluzív CPU-kötés érdekében.
    • A BPF alrendszer támogatja a kivételeket, amelyek vészkijáratként dolgoznak fel egy BPF programból, és képesek biztonságosan letekerni a veremkockákat. Ezenkívül a BPF programok lehetővé teszik a kptr mutatók használatát a CPU-val kapcsolatban.
    • A futex-szel végzett műveletek támogatása hozzáadásra került az io_uring alrendszerhez, és új műveletek kerültek bevezetésre: IORING_OP_WAITID (a waitid aszinkron verziója), SOCKET_URING_OP_GETSOCKOPT (getsockoptand opció), SOCKET_URING_OP_SETSOCKOPT (setsockopt opció) és IORING_sm (többnyire nem olvasási művelet) van adat vagy nincs teljes puffer).
    • Könnyű, egyszeresen összekapcsolt FIFO-sorok hozzáadott megvalósítása, amelyek csak a folyamatkörnyezetben történő sorkiürítéshez igényelnek spinlockot, és mellőzik a spinlock-ot a sor atomi hozzáadásához bármilyen környezetben.
    • Hozzáadott egy "objpool" gyűrűs puffert egy nagy teljesítményű sor méretezhető megvalósításával az objektumok kiosztásához és visszaküldéséhez.
    • A változtatások kezdeti része az új futex2 API megvalósításához került hozzáadásra, amely jobb teljesítményt nyújt a NUMA rendszereken, támogatja a 32 bittől eltérő méreteket, és a multiplexelt futex() rendszerhívás helyett is használható.
    • Az ARM32 és S390x architektúrákhoz hozzáadták a BPF utasítások jelenlegi készletének (cpuv4) támogatását.
    • A RISC-V architektúrához lehetőség van a Clang 17-ben elérhető Shadow-Call veremellenőrzési mód használatára, amely megvédi a függvény visszatérési címének felülírását a verem puffertúlcsordulása esetén. A védelem lényege, hogy a visszaküldési címet egy külön „árnyék” verembe mentjük, miután a vezérlést átadtuk egy függvénynek, és a függvényből való kilépés előtt lekérjük ezt a címet.
    • Az azonos memóriaoldalak egyesítésére szolgáló mechanizmus (KSM: Kernel Samepage Merging) új intelligens memórialap-szkennelési móddal bővült, amely nyomon követi a sikertelenül beolvasott oldalakat, és csökkenti azok újraszkennelésének intenzitását. Az új mód engedélyezéséhez hozzáadtuk a /sys/kernel/mm/ksm/smart_scan beállítást.
    • Hozzáadott egy új ioctl PAGEMAP_SCAN parancsot, amely a userfaultfd() mellett lehetővé teszi egy adott memóriatartományba való írás tényeinek meghatározását. Az új funkció például a rendszerben használható a CRIU folyamatok állapotának mentésére és visszaállítására, vagy a játék csalás elleni rendszereiben.
    • Az összeállítási rendszerben, ha elérhető a Clang fordító, a perf alrendszer használatára vonatkozó példák összeállítása, BPF programként írva, alapértelmezés szerint engedélyezett.
    • A régi videobuf réteget, amelyet a média alrendszerben a framebufferek kezelésére használtak, és több mint 10 éve a videobuf2 új implementációja váltotta fel, eltávolították.
  • Virtualizáció és biztonság
    • Az fscrypt alrendszerhez hozzáadták a fájlrendszer blokkméreténél kisebb blokkokban lévő adatok titkosításának lehetőségét. Erre a csak kis blokkokat támogató hardveres titkosítási mechanizmusok engedélyezéséhez lehet szükség (például a csak 4096-os blokkméretet támogató UFS-vezérlők használhatók 16K blokkméretű fájlrendszerrel).
    • Az „iommufd” alrendszer, amely lehetővé teszi az IOMMU (I/O Memory-Management Unit) memórialaptáblázatok kezelését a felhasználói térből származó fájlleírókon keresztül, hozzáadta a DMA gyorsítótárból még nem törölt (piszkos) adatok nyomon követését. műveletek, amelyek a folyamatmigráció során kiürítetlen adatokkal rendelkező memória meghatározásához szükségesek.
    • A TCP socketekhez való hozzáférés-vezérlési szabályok meghatározásának támogatása hozzáadásra került a Landlock mechanizmushoz, amely lehetővé teszi a folyamatok egy csoportjának a külső környezettel való interakciójának korlátozását. Létrehozhat például egy olyan szabályt, amely csak a 443-as hálózati porthoz engedélyezi a hozzáférést HTTPS-kapcsolatok létrehozásához.
    • Az AppArmor alrendszer hozzáadta az io_uring mechanizmushoz való hozzáférés szabályozásának és a felhasználói névterek létrehozásának lehetőségét, amely lehetővé teszi, hogy szelektíven csak bizonyos folyamatok számára engedélyezze a hozzáférést ezekhez a képességekhez.
    • Virtuálisgép-igazolási API hozzáadva a virtuális gép rendszerindítási folyamatának integritásának ellenőrzéséhez.
    • A LoongArch rendszerek támogatják a KVM hypervisor segítségével történő virtualizációt.
    • A KVM hypervisor használatakor RISC-V rendszereken megjelent az Smstateen bővítmény támogatása, amely megakadályozza, hogy a virtuális gép hozzáférjen a hypervisor által kifejezetten nem támogatott CPU-regiszterekhez. Ezenkívül hozzáadtuk a Zicond kiterjesztés használatának támogatását a vendégrendszerekben, amely lehetővé teszi néhány feltételes egész művelet használatát.
    • A KVM alatt futó x86-alapú vendégrendszerekben legfeljebb 4096 virtuális CPU engedélyezett.
  • Hálózati alrendszer
    • Az NVMe-TCP (NVMe over TCP) illesztőprogram, amely lehetővé teszi az NVMe meghajtók hálózaton keresztüli elérését (NVM Express over Fabrics) a TCP protokoll használatával, kiegészítette az adatátviteli csatorna TLS használatával történő titkosítását (KTLS és háttérfolyamat használatával). a felhasználói térben a tlshd a kapcsolat egyeztetéséhez).
    • Az fq (Fair Queuing) csomagütemező teljesítményét optimalizálták, ami lehetővé tette az átviteli sebesség növelését nagy terhelés mellett a tcp_rr (TCP Request/Response) tesztben 5%-kal, UDP-csomagok korlátlan áramlásával pedig 13%-kal.
    • A TCP egy opcionális mikroszekundumos pontosságú időbélyegző (TCP TS) képességet (RFC 7323) ad hozzá, amely pontosabb késleltetési becslést és fejlettebb torlódásvezérlő modulokat tesz lehetővé. Az engedélyezéséhez használja az „ip route add 10/8 ... features tcp_usec_ts” parancsot.
    • A TCP verem támogatja a TCP-AO kiterjesztést (TCP Authentication Option, RFC 5925), amely lehetővé teszi a TCP-fejlécek MAC-kódok (Message Authentication Code) segítségével történő ellenőrzését, modernebb HMAC-SHA1 és CMAC-AES- algoritmusok segítségével. 128 helyett korábban elérhető TCP-MD5 opció, amely az örökölt MD5 algoritmuson alapul.
    • Egy új típusú virtuális hálózati eszközök „netkit” kerültek hozzá, amelyekben az adatátviteli logika egy BPF programmal van beállítva.
    • A KSMBD, az SMB-kiszolgáló rendszermag-szintű megvalósítása, kiegészítette az összetett karakterek helyettesítő párjait tartalmazó fájlnevek feloldását.
    • Az NFS javította a szálak megvalósítását az RPC szolgáltatásokkal. Az írási delegálás támogatása hozzáadva (NFSv4.1+ esetén). Az NFSD hozzáadta az rpc_status netlink kezelő támogatását. Továbbfejlesztett támogatás az NFSv4.x kliensekhez a knfsd-be való újraexportáláskor.
  • Оборудование
    • A GSP-RM firmware kezdeti támogatása hozzáadásra került a Nouveau kernel modulhoz, amelyet az NVIDIA RTX 20+ GPU-ban használnak, hogy az inicializálást és a GPU vezérlési műveleteket egy külön GSP mikrokontroller (GPU rendszerprocesszor) oldalára helyezzék át. A GSP-RM támogatás lehetővé teszi, hogy a Nouveau illesztőprogram firmware-hívásokon keresztül működjön, ahelyett, hogy közvetlenül programozná a hardveres interakciókat, így sokkal könnyebbé válik az új NVIDIA GPU-k támogatásának hozzáadása az inicializáláshoz és az energiagazdálkodáshoz előre beépített hívások használatával.
    • Az AMDGPU illesztőprogram támogatja a GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 és DML2 szabványokat. Továbbfejlesztett támogatás a zökkenőmentes betöltéshez (nincs villogás videomód váltáskor).
    • Az i915 illesztőprogram támogatja az Intel Meteor Lake chipeket, és hozzáadja az Intel LunarLake (Xe 2) kezdeti megvalósítását.
    • Az aszimmetrikus átviteli csatornák támogatása hozzáadva az USB4 v2 (120/40G) specifikációhoz.
    • Hozzáadott támogatás az ARM SoC-hoz: Qualcomm Snapdragon 720G (Xiaomi okostelefonokban használatos), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (routerekben és NAS-ban használatos).
    • Támogatás hozzáadva a Fairphone 5 okostelefonhoz és az Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 Powkiddy RGB30 ARM kártyákhoz.
    • Hozzáadott támogatás a Milk-V Pioneer és Milk-V Duo RISC-V kártyákhoz.
    • Az AMD CPU-kkal szállított HUAWEI laptopok hanginterfészeinek támogatása. A Dell Oasis 13/14/16 laptopokra telepített további hangszórók támogatása. Hozzáadott támogatás az ASUS K6500ZC beépített hangszórókhoz. Hozzáadott támogatás a némításjelzőhöz a HP 255 G8 és G10 laptopokon. Az acp6.3 audio-illesztőprogramok támogatása hozzáadva. Hozzáadott támogatás a Focusrite Clarett+ 2Pre és 4Pre professzionális rögzítési felületekhez.

Ezzel egy időben a Latin American Free Software Foundation létrehozta a teljesen ingyenes kernel 6.7 - Linux-libre 6.7-gnu verzióját, amely megtisztította a firmware elemeitől és a nem szabad komponenseket vagy kódrészleteket tartalmazó illesztőprogramoktól, amelyek hatóköre korlátozott. a gyártó által. A 6.7-es kiadásban a blob-tisztító kód frissítésre került különböző illesztőprogramokban és alrendszerekben, például az amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs és btqca illesztőprogramokban. A localtalk és rtl8192u illesztőprogramok tisztítására szolgáló kódot eltávolítottuk, mivel kizárták őket a kernelből. Eltávolítottuk a korábban véletlenül hozzáadott xhci-pci, rtl8xxxu és rtw8822b illesztőprogramok tisztításához szükséges felesleges összetevőket. A blobnevek megtisztítása a dts-fájlokban az Aarch64 architektúrához. Eltávolították a blobokat az új mt7925, tps6598x, aw87390 és aw88399 illesztőprogramokból.

Forrás: opennet.ru

Hozzászólás