Linux 6.3 kernel kiadás

Két hónapos fejlesztés után Linus Torvalds bemutatta a Linux kernel 6.3 kiadását. A legfigyelemreméltóbb változások közé tartozik: a régi ARM platformok és grafikus illesztőprogramok megtisztítása, a Rust nyelvi támogatás folyamatos integrációja, a hwnoise segédprogram, a vörös-fekete fastruktúrák támogatása BPF-ben, BIG TCP mód IPv4-hez, beépített Dhrystone benchmark, letiltási lehetőség végrehajtás memfd-ben, támogatja a HID illesztőprogramok létrehozását BPF használatával, a Btrfs-ben változtatások történtek a blokkcsoportok töredezettségének csökkentése érdekében.

Az új verzió 15637 javítást fogadott el 2055 fejlesztőtől; javítás mérete - 76 MB (a változások 14296 fájlt érintettek, 1023183 kódsor került hozzáadásra, 883103 sor törölve). Összehasonlításképpen, az előző verzióban 16843 javítást javasoltak 2178 fejlesztőtől; patch mérete - 62 MB. A 39-as kernelben bevezetett változtatások körülbelül 6.3%-a az eszközillesztőkkel kapcsolatos, a változtatások körülbelül 15%-a a hardverarchitektúrák kódjának frissítéséhez, 10%-a a hálózati veremhez, 5%-a a fájlrendszerekhez kapcsolódik, és 3 % a belső kernel alrendszerekhez.

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

  • Memória- és rendszerszolgáltatások
    • A régi és használaton kívüli ARM kártyákhoz kapcsolódó kód jelentős megtisztítására került sor, ami lehetővé tette a kernel forráskódjának 150 ezer soros csökkentését. Több mint 40 régi ARM platformot távolítottak el.
    • Megvalósult a BPF programok formájában megvalósított HID (Human Interface Device) interfésszel rendelkező beviteli eszközök illesztőprogramjainak létrehozásának képessége.
    • Folytatódott a Rust-for-Linux ágból az illesztőprogramok és kernelmodulok fejlesztéséhez a Rust nyelv második nyelvként való használatához kapcsolódó további funkciók átvitele. A Rust támogatása alapértelmezés szerint nincs engedélyezve, és nem eredményezi, hogy a Rust szerepeljen a szükséges kernel-felépítési függőségként. A korábbi kiadásokban kínált funkcionalitást kibővítettük, hogy támogassa az Arc (mutatók megvalósítása hivatkozási számmal), a ScopeGuard (tisztítás, ha kilép a hatókörből) és a ForeignOwnable (mutatók mozgatását biztosítja a C és Rust kódok között) típusok támogatására. A „kölcsön” modul (típus „Cow” és „ToOwned” tulajdonság) eltávolítva az „alloc” csomagból. Megjegyzendő, hogy a rendszermagban a Rust támogatás állapota már közel áll ahhoz, hogy elfogadja az első Rust nyelven írt modulokat a kernelbe.
    • A felhasználói módú Linux (a rendszermag felhasználói folyamatként fut) x86-64 rendszereken támogatja a Rust nyelven írt kódot. Támogatás hozzáadva a felhasználói módú Linux felépítéséhez, csengéssel, kapcsolódási optimalizálással (LTO).
    • Hozzáadott hwnoise segédprogram a hardver okozta késések nyomon követésére. A műveletek végrehajtási idejének eltérései (jitter) akkor kerülnek meghatározásra, ha a megszakítási feldolgozás le van tiltva, és ez meghaladja az egy mikroszekundumot 10 perc számításonként.
    • Hozzáadott egy kernelmodul, amely megvalósítja a Dhrystone benchmarkot, amely felhasználható a CPU teljesítményének értékelésére olyan konfigurációkban, amelyek nem tartalmazzák a felhasználói terület összetevőit (például az új SoC-k portolási szakaszában, amelyek csak kernel betöltését valósítják meg).
    • Hozzáadtuk a kernel „cgroup.memory=nobpf” parancssori paraméterét, amely letiltja a memóriafelhasználás elszámolását a BPF-programoknál, ami hasznos lehet elszigetelt tárolókkal rendelkező rendszerek esetén.
    • A BPF programok esetében a piros-fekete fa adatstruktúra megvalósítása javasolt, amely a kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) parancsot használja új leképezési típus hozzáadása helyett.
    • Az újraindítható szekvenciák (rseq, újraindítható szekvenciák) mechanizmusa lehetővé tette a párhuzamos végrehajtási azonosítók (memóriatérkép párhuzamossági azonosító) átvitelét a CPU-számmal azonosított folyamatokhoz. Az Rseq lehetőséget biztosít a műveletek gyors atomi végrehajtására, amelyeket ha egy másik szál megszakít, a rendszer megtisztítja és újra megkísérli.
    • Az ARM processzorok támogatják az SME 2 (Scalable Matrix Extension) utasításait.
    • Az s390x és RISC-V RV64 architektúrák esetében a "BPF trambulin" mechanizmus támogatása valósul meg, amely lehetővé teszi a többletterhelés minimalizálását a kernel és a BPF programok közötti hívások átvitelekor.
    • A RISC-V architektúrán alapuló processzorokkal rendelkező rendszereken a „ZBB” utasítások használata a karakterlánc-műveletek felgyorsítása érdekében történik.
    • A LoongArch utasításkészlet architektúrán alapuló rendszerek (a Loongson 3 5000 processzorokban használatos és az új RISC ISA-t implementálva, hasonlóan a MIPS-hez és a RISC-V-hez), a kernel címterének véletlenszerűsítésének (KASLR) támogatása, a kernelmemória elhelyezésének megváltoztatása (áthelyezés) ), a hardverpontok stop és kprobe mechanizmust valósítottak meg.
    • A DAMOS (Data Access Monitoring-based Operation Schemes) mechanizmus, amely lehetővé teszi a memória felszabadítását a memóriaelérés gyakorisága alapján, támogatja a szűrőket, amelyek kizárnak bizonyos memóriaterületeket a DAMOS-ban történő feldolgozásból.
    • A Nolibc minimális szabványú C könyvtára támogatja az s390 architektúrát és az Arm Thumb1 utasításkészletet (az ARM, AArch64, i386, x86_64, RISC-V és MIPS támogatása mellett).
    • Az Objtool-t úgy optimalizálták, hogy felgyorsítsa a kernel összeállítását és csökkentse a csúcsmemória-felhasználást az összeállítás során (a kernel „allyesconfig” módban történő felépítésekor már nincs probléma a folyamatok kényszerített leállításával a 32 GB RAM-mal rendelkező rendszereken).
    • Megszűnt az Intel ICC fordító általi kernel-összeállítás támogatása, amely sokáig nem működik, és senki sem fejezte ki a javítását.
  • Lemez alrendszer, I/O és fájlrendszerek
    • A tmpfs támogatja a felcsatolt fájlrendszerek felhasználói azonosítóinak leképezését, amellyel egy adott felhasználó fájljait egy felcsatolt idegen partíción egy másik felhasználóval egyeztetik az aktuális rendszeren.
    • A Btrfs-ben a blokkcsoportok töredezettségének csökkentése érdekében a kiterjedéseket elosztják a mérettel a blokkok kiosztása során, azaz. a blokkok bármely csoportja mostantól kicsire (128 KB-ig), közepesre (legfeljebb 8 MB) és nagyra korlátozódik. A raid56 implementációja át lett alakítva. Az ellenőrző összegek ellenőrzésére szolgáló kódot átdolgoztuk. Teljesítményoptimalizálásra került sor, hogy a küldési műveletet akár 10-szeresére is felgyorsítsák azáltal, hogy gyorsítótárazza a könyvtárak utime-jét, és csak szükség esetén hajtja végre a parancsokat. A Fiemap műveletei most háromszor gyorsabbak, mivel kihagyják a megosztott adatok (pillanatképek) backlink ellenőrzését. A metaadatokkal végzett műveletek 10%-kal felgyorsultak a kulcsok keresésének optimalizálásával a b-fa struktúrákban.
    • Az ext4 fájlrendszer teljesítménye javult azáltal, hogy lehetővé tette több folyamat számára, hogy egyidejűleg közvetlen I/O-műveleteket hajtsanak végre az előre lefoglalt blokkon, exkluzív zárolások helyett megosztott inode-zárak használatával.
    • Az f2fs-ben dolgoztak a kód olvashatóságának javításán. Javítva az atomírással és az új kiterjedésű gyorsítótárral kapcsolatos fontos problémák.
    • Az EROFS (Enhanced Read-Only File System) fájlrendszer, amelyet csak olvasható partíciókban való használatra terveztek, lehetővé teszi a tömörített fájltartalom kibontási műveleteinek a CPU-hoz való kötését, hogy csökkentse a késleltetést az adatok elérésekor.
    • A BFQ I/O ütemező támogatja a fejlett forgó lemezmeghajtókat, például azokat, amelyek több külön vezérelt fejmeghajtót (Multi Actuators) használnak.
    • Az AES-SHA2 algoritmust használó adattitkosítás támogatása hozzáadásra került az NFS-kliens és -kiszolgáló megvalósításához.
    • A lekérdezésbővítési mechanizmus támogatása hozzáadásra került a FUSE (Filesystems In User Space) alrendszerhez, amely lehetővé teszi további információk elhelyezését a lekérdezésben. Ezen szolgáltatás alapján lehetőség van csoportazonosítók hozzáadására az FS kéréshez, amelyek a hozzáférési jogok figyelembevételéhez szükségesek az FS-ben lévő objektumok létrehozásakor (create, mkdir, symlink, mknod).
  • Virtualizáció és biztonság
    • Az x86 rendszerekhez készült KVM hypervisor támogatja a Hyper-V kiterjesztett hiperhívásait, és biztosította azok továbbítását a gazdakörnyezetben futó kezelőhöz a felhasználói térben. A változtatás lehetővé tette a Hyper-V hypervisor beágyazott indításának támogatását.
    • A KVM megkönnyíti a vendég hozzáférésének korlátozását a teljesítményméréssel kapcsolatos PMU (Performance Monitor Unit) eseményekhez.
    • A memfd mechanizmus, amely lehetővé teszi a memóriaterület azonosítását a folyamatok között átadott fájlleírón keresztül, lehetőséget kapott olyan területek létrehozására, ahol a kód végrehajtása tilos (nem végrehajtható memfd), és nem lehet végrehajtási jogokat beállítani a jövő.
    • Egy új PR_SET_MDWE prctl-művelet került hozzáadásra, amely blokkolja az írást és a végrehajtást egyidejűleg lehetővé tevő memória-hozzáférési jogok engedélyezésére irányuló kísérleteket.
    • A Spectre osztályú támadások elleni védelem hozzáadásra került és alapértelmezés szerint engedélyezve van az AMD Zen 4 processzorokban javasolt automatikus IBRS (Enhanced Indirect Branch Restricted Speculation) mód alapján, amely lehetővé teszi az utasítások spekulatív végrehajtásának adaptív engedélyezését és letiltását megszakítási feldolgozás, rendszerhívások és kontextuskapcsolók. A javasolt védelem alacsonyabb rezsiköltséget eredményez a Retpoline védelemhez képest.
    • Kijavítottunk egy biztonsági rést, amely lehetővé teszi a Spectre v2 támadások elleni védelem megkerülését egyidejű többszálú technológia (SMT vagy Hyper-Threading) használatakor, és amelyet az STIBP (Single Thread Indirect Branch Predictors) mechanizmus letiltása okozott az IBRS védelmi mód kiválasztásakor.
    • Az ARM64 architektúrán alapuló rendszerek esetében egy új összeállítási cél, a „virtconfig” került hozzáadásra, amikor kiválasztásra kerül, csak a virtualizációs rendszerekben a rendszerindításhoz szükséges minimális kernelösszetevők aktiválódnak.
    • Az m68k architektúra esetében a rendszerhívások seccomp mechanizmussal történő szűrésének támogatása hozzáadásra került.
    • Az AMD Ryzen processzorokba épített CRB TPM2 (Command Response Buffer) eszközök támogatása a Microsoft Pluton technológián alapul.
  • Hálózati alrendszer
    • Egy netlink interfész került hozzáadásra a PLCA (Physical Layer Collision Avoidance) alréteg konfigurálásához, amelyet az IEEE 802.3cg-2019 specifikáció határoz meg, és a 802.3cg (10Base-T1S) Ethernet-hálózatokban használnak, amelyek az Internet of Things eszközök és ipari rendszerek összekapcsolására optimalizáltak. A PLCA használata javítja a teljesítményt a megosztott médiát használó Ethernet hálózatokban.
    • A WiFi 7 (802.11be) vezeték nélküli interfészek kezelésére szolgáló „wireless extensions” API támogatása megszűnt, mivel ez az API nem fedi le az összes szükséges beállítást. Amikor megpróbálja használni a "vezeték nélküli bővítmények" API-t, amely továbbra is emulált rétegként támogatott, a legtöbb jelenlegi eszközön figyelmeztetés jelenik meg.
    • A netlink API-ról részletes dokumentáció készült (a központi fejlesztők és a felhasználói tér alkalmazásfejlesztői számára). Az ynl-gen-c segédprogram a Netlink protokoll YAML specifikációi alapján C kódot generál.
    • Az IP_LOCAL_PORT_RANGE opció támogatása hozzáadásra került a hálózati aljzatokhoz, hogy leegyszerűsítse a kimenő kapcsolatok konfigurálását a címfordítókon keresztül, SNAT használata nélkül. Ha egy IP-címet több gazdagépen használ, az IP_LOCAL_PORT_RANGE lehetővé teszi a kimenő hálózati portok eltérő tartományának használatát minden gazdagépen, és az átjáró portszámai alapján csomagok továbbítását.
    • Az MPTCP (MultiPath TCP) esetében lehetőség van a vegyes adatfolyamok IPv4 és IPv6 protokollok használatával történő feldolgozására. Az MPTCP a TCP protokoll kiterjesztése a TCP kapcsolat működésének megszervezésére a csomagok egyidejű, több útvonalon történő kézbesítésével, különböző IP-címekhez társított különböző hálózati interfészeken keresztül.
    • Az IPv4 esetében a BIG TCP bővítmény használatának lehetősége van megvalósítva, amely lehetővé teszi a maximális TCP-csomagméret 4 GB-ig történő növelését az adatközpontok nagy sebességű belső hálózatainak működésének optimalizálása érdekében. A csomagméret 16 bites fejlécmezővel történő növelése olyan "nagy" csomagok megvalósításával érhető el, amelyek IP-fejlécének mérete 0-ra van állítva, és a tényleges méret egy külön 32 bites mezőben, egy külön csatolt fejlécben kerül továbbításra.
    • Hozzáadásra került egy új sysctl paraméter, default_rps_mask, amelyen keresztül beállítható az alapértelmezett RPS (Receive Packet Steering) konfiguráció, amely a bejövő forgalom feldolgozásának CPU-magok között történő elosztásáért felelős megszakításkezelő szinten.
    • A CBQ (osztály alapú sorban állás), az ATM (ATM virtuális áramkörök), a dsmark (differenciált szolgáltatásjelölő), a tcindex (forgalomirányítási index) és az RSVP (erőforrásfoglalási protokoll) forgalom korlátozására szolgáló sorbanállási szabályok megszűnt. Ezek a tudományágak már régóta felhagytak, és senki sem volt hajlandó továbbra is támogatni őket.
  • Оборудование
    • Az összes DRI1 alapú grafikus illesztőprogram eltávolítása: i810 (régebbi integrált Intel 8xx grafikus kártyák), mga (Matrox GPU), r128 (ATI Rage 128 GPU, beleértve a Rage Fury, XPERT 99 és XPERT 128 kártyákat), savage (S3 Savage GPU), sis (Crusty SiS GPU), tdfx (3dfx Voodoo) és via (VIA IGP), amelyek 2016-ban elavultak, és a Mesa 2012 óta nem támogatott.
    • Eltávolították a korábbi framebuffer illesztőprogramokat (fbdev) omap1, s3c2410, tmiofb és w100fb.
    • Az Intel Meteor Lake (14. generációs) CPU-kba integrált VPU-hoz (Versatile Processing Unit) DRM-illesztőprogram került, amelyet a számítógépes látás és a gépi tanulási műveletek felgyorsítására terveztek. Az illesztőprogramot az "accel" alrendszerrel valósítják meg, amelynek célja a számítási gyorsítók támogatása, amelyek külön ASIC-ek formájában és IP-blokkként is szállíthatók az SoC-n és a GPU-n belül.
    • Az i915 (Intel) illesztőprogram kiterjeszti a diszkrét Intel Arc (DG2/Alchemist) grafikus kártyák támogatását, előzetes támogatást biztosít a Meteor Lake GPU-khoz, és támogatja az Intel Xe HP 4tile GPU-kat.
    • Az amdgpu illesztőprogram támogatja az AdaptiveSync technológiát, és lehetővé teszi a Secure Display mód használatát több képernyőn. Frissített támogatás a DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x és DP 2.1 számára.
    • Az msm-illesztőprogram (Qualcomm Adreno GPU) kiegészítette az SM8350, SM8450 SM8550, SDM845 és SC8280XP platformok támogatását.
    • A Nouveau illesztőprogram már nem támogatja a régi ioctl hívásokat.
    • Az NPU VerSilicon (VeriSilicon Neural Network Processor) kísérleti támogatása hozzáadásra került az etnaviv illesztőprogramhoz.
    • A pata_parport illesztőprogramot párhuzamos porton keresztül csatlakoztatott IDE meghajtókhoz valósították meg. A hozzáadott illesztőprogram lehetővé tette, hogy eltávolítsuk a régi PARIDE illesztőprogramot a kernelből, és modernizáljuk az ATA alrendszert. Az új illesztőprogram korlátja, hogy nem lehet egyidejűleg nyomtatót és lemezt csatlakoztatni a párhuzamos porton keresztül.
    • Hozzáadott ath12k illesztőprogram vezeték nélküli kártyákhoz a Wi-Fi 7-et támogató Qualcomm chipekhez. Hozzáadott vezeték nélküli kártyák támogatása a RealTek RTL8188EU chipeken.
    • 46 kártya támogatása ARM64 architektúrán alapuló processzorokkal, köztük Samsung Galaxy tab A (2015), Samsung Galaxy S5, BananaPi R3, Debix Model A, EmbedFire LubanCat 1/2, Facebook Greatlakes, Orange Pi R1 Plus, Tesla FSD és SoC Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 és SDM632, Rockchips RK3128 TV-doboz, RV1126 Vision, RK3588, RK3568, RK3566, RK3588, RK3328, RK3, 642 654/ AM68/AM69).

Ezzel egy időben a Latin American Free Software Foundation létrehozta a teljesen ingyenes kernel 6.3 - Linux-libre 6.3-gnu változatát, amely megtisztította a firmware elemeitől és a nem szabad komponenseket vagy kódrészleteket tartalmazó illesztőprogramoktól, amelynek hatóköre a gyártó korlátozza. A 6.3-as kiadásban a blobok megtisztításra kerültek az új ath12k, aw88395 és peb2466 illesztőprogramokban, valamint az AArch64 architektúrán alapuló qcom eszközök új eszköztára fájljaiban. Frissített blobtisztító kód az amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110 illesztőprogramokban és alrendszerekben, valamint a szoftveres dekódolású DVB-kártyák illesztőprogramjaiban és az előre lefordított BPF-fájlokban. Az mga, r128, tm6000, cpia2 és r8188eu illesztőprogramok tisztítása leállt, mióta eltávolították őket a kernelből. Továbbfejlesztett i915 illesztőprogram-blob-tisztítás.

Forrás: opennet.ru

Hozzászólás