Linux 6.8 kernel kiadás

Két hónapnyi fejlesztés után Linus Torvalds kiadta a Linux kernel 6.8-as verzióját. A legjelentősebb változások közé tartozik az Xe illesztőprogram az Intel GPU-khoz, a csatolt fájlrendszerekkel rendelkező blokkeszközök védelmi módja, a Deadline szerver feladatütemezője, az azonos memórialapok egyesítésének automatikus optimalizálása, az első Rust illesztőprogram, a listmount és statmount rendszerhívások, a bpfilter és a SLAB eltávolítása, a guest_memfd mechanizmus a KVM-ben, valamint az adathozzáférési profilalkotás.

Az új verzió 15 641 javítást tartalmaz 2018 fejlesztőtől, a javítás mérete 44 MB (a változtatások 12 212 fájlt érintettek, 663 864 kódsort adtak hozzá és 339 094 sort távolítottak el). Az előző kiadás 18 405 javítást tartalmazott 2066 fejlesztőtől, a javítás mérete 72 MB volt. A 6.8-as verzióban található összes változás körülbelül 42%-a eszközillesztőkkel, a változások körülbelül 15%-a hardverarchitektúrákra jellemző kódfrissítésekkel, 14%-a a hálózati veremmel, 6%-a fájlrendszerekkel, 3%-a pedig a belső kernel alrendszerekkel kapcsolatos.

A 6.8-as kernellel rendelkező Git repository 9.996 millió objektumot tartalmaz, ami azt jelzi, hogy a következő kernel, a 6.9, át fogja lépni a 10 milliós Git objektumot. Korábban a 3.x és 4.x ágszámai jól korreláltak a repositoryban található Git objektumok számával – a 3.0-s kernel megjelenésekor a repository körülbelül 2 millió objektumot, a 4.0-s kernel pedig 4 millió objektumot tartalmazott. Az 5.0-s 2019-es kiadás azonban megszakította ezt a logikai láncot, mivel a repository létrehozásakor körülbelül 6.5 millió Git objektumot tartalmazott.

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

  • Lemez alrendszer, I/O és fájlrendszerek
    • Hozzáadtak egy módot, amely blokkolja a közvetlen írási hozzáférést a csatolt fájlrendszerrel rendelkező blokkeszközökhöz. Engedélyezés után a root felhasználó nem tud majd módosításokat végezni a fájlrendszeren blokkeszköz-szintű manipulációval. Ez a mód alapértelmezés szerint le van tiltva, és a fordítás során meg kell adni a BLK_DEV_WRITE_MOUNTED paramétert. Ez a blokkolás még nem működik Btrfs partíciók esetén, mivel a szükséges módosítások még nincsenek implementálva a Btrfs kódba.
    • Hozzáadtuk a listmount() és statmount() rendszerhívásokat, amelyek lehetővé teszik a felhasználói térben a felcsatolt fájlrendszerek részletes információinak elérését.
    • Az XFS fájlrendszerben továbbra is folyik a munka az fsck segédprogram használatával az azonosított problémák online ellenőrzésére és kijavítására a fájlrendszer leválasztása nélkül.
    • Az Ext4-ben a dioread_nolock hívást a memóriaoldalnál kisebb blokkokhoz használják, ami a felesleges zárolások kiküszöbölésével javítja a teljesítményt. Néhány függvényt migráltak az oldalfóliók használatára.
    • A Btrfs mostantól támogatja a „nospace_cache” csatolási jelzőt a szabad blokk gyorsítótár letiltásához. Néhány függvény átkerült az oldalfóliók használatára.
    • Az EROFS (Extendable Read-Only File System), egy írásvédett partíciókon való használatra tervezett fájlrendszer, támogatást kapott az aloldalak tömörítéséhez és javította a teljesítményt alacsony memória esetén.
    • Az F2FS fájlrendszer továbbfejlesztett támogatást kapott a zónázott tárolóeszközökhöz (blokkok vagy szektorok csoportjainak zónákra osztásával, amelyekbe csak az adatok egymást követő hozzáadása engedélyezett, a teljes blokkcsoport frissítésével).
    • Az SMB FS esetében implementálták a blokk- és szimbolikus eszközfájlok létrehozásának lehetőségét.
    • A Bcachefs mostantól részleges támogatást nyújt a csatlakoztatott fájlrendszerek integritásának ellenőrzéséhez és visszaállításához.
    • Az eszközleképező alrendszer megszüntette az MD_LINEAR, MD_MULTIPATH és MD_FAULTY kezelők támogatását, amelyeket 2021-ben elavulttá tettek.
  • Memória- és rendszerszolgáltatások
    • A Zswap alrendszer frissült egy olyan funkcióval, amely alacsony RAM-szint esetén a hideg, nem hozzáférhető memórialapok áthelyezését a valódi swap partícióra kényszeríti. A Zswap gyorsítótárazza a kicserélt lapokat, és lehetőség szerint tömörített formában tárolja azokat a RAM-ban anélkül, hogy átmásolná őket a lemezen lévő valódi, tömörítetlen swap partícióra. Ezek a változások, amikor alacsony memóriaszint lép fel, csökkentik a RAM-ban tárolt Zswap készlet méretét, és memóriát szabadítanak fel a rendszer számára.
    • A Zswap egy új módot vezet be, amely teljesen letiltja a visszaírást a valódi swap partícióra, ha az írási kísérlet sikertelen, és nem írja át a zswap poolban már lévő oldalakat a swap partícióra.
    • A SCHED_DEADLINE szervermechanizmus bekerült a feladatütemezőbe. Ez megoldja azt a problémát, hogy a normál feladatok nem kapnak CPU-erőforrásokat, amikor a magas prioritású (valós idejű) feladatok monopolizálják a CPU-t. A CPU-monopolizáció megakadályozása érdekében a kernel korábban egy valós idejű szabályozási mechanizmust használt, amely a CPU-idő 5%-át próbálta lefoglalni az alacsony prioritású feladatok számára, 95%-ot hagyva a valós idejű feladatoknak. Ez a mechanizmus sok kívánnivalót hagyott maga után, mivel a normál feladatok gyakran nem kaptak elegendő CPU-időt. A SCHED_DEADLINE szerver egy hatékonyabb erőforrás-foglalási mechanizmust valósít meg.
    • A DAMON (Data Access MONitor) alrendszer, amely lehetővé teszi egy folyamat RAM-ban lévő adatokhoz való hozzáférésének nyomon követését (például megtudhatja, hogy a memória mely területeit érte el egy folyamat, és mely memóriaterületek maradtak kihasználatlanul), kiegészült egy mechanizmussal, amely automatikusan beállítja a memória-felhasználás agresszivitását a megadott kvóták alapján.
    • Hozzáadott támogatás a több méretű átlátszó hatalmas oldalakhoz (mTHP), amelyek lehetővé teszik a memória lefoglalását az alapoldalnál nagyobb, de a hagyományos THP-oldalnál kisebb blokkokban.
    • A névtelen memória (fájlrendszerhez nem kötött memória, például a malloc-on keresztül lefoglalt memória) támogatása nagyméretű oldalfóliókhoz (egyesített memóriaoldalak) került hozzáadásra. Ez a módosítás a teljesítmény javítását célozza azáltal, hogy nagyobb memóriablokkokat foglal le az oldalhiba-hozzáférések során. A nagyméretű oldalfóliók használata például 5%-kal csökkentette a kernel újraépítési idejét (miközben a kernel szintű időt 40%-kal csökkentette).
    • A TRANSPARENT_HUGEPAGE_NEVER paraméter bekerült a kernel konfigurációs fájljába, amely lehetővé teszi a nagy memórialapok (Transparent Huge Pages) használatának letiltását.
    • A userfaultfd() rendszerhívás, amely lehetővé teszi kezelők létrehozását a felhasználói térben található nem lefoglalt memórialapok (laphibák) eléréséhez, frissült az UFFDIO_MOVE művelettel. Ez a művelet lehetővé teszi a memórialapok mozgatását a virtuális címtartományon belül a heap tömörítés során anélkül, hogy lapfoglalási műveletet kellene végrehajtani. Tesztekben az UFFDIO_MOVE használata 40%-kal csökkentette a csomagolási időt az UFFDIO_COPY művelet használatához képest.
    • Hozzáadva a „KSM tanácsadó” mechanizmus, amely lehetővé teszi a Kernel Samepage Merging (KSM) alrendszer paramétereinek automatikus optimalizálását.
    • Folytattuk a Rust-for-Linux ágból a Rust második nyelvként való használatával kapcsolatos változtatások migrálását illesztőprogramok és kernel modulok fejlesztéséhez (a Rust támogatás alapértelmezés szerint nem aktív, és nem eredményezi azt, hogy a Rust bekerül a kötelező kernel build függőségek közé). Az új verzió olyan változtatásokat tartalmaz, amelyek egy Rust wrappert adnak hozzá a phylib absztrakciós réteg fölé, valamint az ezt a wrappert használó ax88796b_rust illesztőprogramot, amely támogatást nyújt az Asix AX88772A (100MBit) Ethernet vezérlő PHY interfészéhez. Funkcionalitását tekintve a Rust illesztőprogram teljesen egyenértékű a C nyelven írt régi ax88796b illesztőprogrammal, és használható az AX88796B chippel felszerelt X-Surf 100 hálózati kártyákkal. A LoongArch architektúra esetében biztosított a modulok írása Rustban. Átálltunk a Rust 1.74.1 kiadásra.
    • Hozzáadtak egy BPF token mechanizmust, amely lehetővé teszi az egyes BPF-képességek feldolgozásának szelektív delegálását, például egy BPF program betöltését vagy egy BPF-leképezés létrehozását, nem privilegizált felhasználói térbeli folyamatoknak, amelyek érvényességét egy speciális token ellenőrzi.
    • A BPF programellenőrző funkcionalitása kibővült.
    • A perf segédprogramhoz hozzáadták az adatprofilozási támogatást, amely lehetővé teszi az adatszerkezetekbe való olvasás és írás nyomon követését, például a struktúrákban a leggyakrabban módosított mezők azonosítása érdekében. A memória-hozzáférési információk gyűjtését támogató processzorokkal rendelkező rendszereken (Intel, AMD, ARM) a "perf mem record" parancs segítségével gyűjthetők statisztikák, a "perf annotate --data-type" paranccsal pedig jelentést készíthetünk az adatszerkezet-hozzáférésekről.
    • Az s390 (IBM Z) architektúrán a rendszerhívás-feldolgozás teljesítményét optimalizálták, ami a tesztek során a rendszerhívások bevitelének körülbelül 11%-os gyorsulását eredményezte.
    • Bevezetésre került a felhasználói tárhelyre küldött nyomkövetési eseményinformációk puffereléséhez használt nyomkövetési pufferek méretének módosításának lehetősége.
    • A korábban elavult SLAB memória-elosztási mechanizmust eltávolították, és a kernel most már csak az SLUB-ot használja. A változás okaként említették a karbantartási problémákat, a kódhibákat és a funkciók átfedését a fejlettebb SLUB-elosztóval.
    • A kernel build tartalmazza a "-Wmissing-prototypes" jelzőt, amely figyelmeztetéseket generál a prototípus definícióval nem rendelkező globális függvények hívásai esetén.
    • A RISC-V architektúra esetében a SUSP SBI kiterjesztést támogató rendszerek mostantól támogatják a készenléti módba váltást a RAM-ban tárolt állapottal. A riscv_hwprobe() rendszerhívás mostantól használható a támogatott RISC-V utasításkészlet-architektúra-bővítményekkel kapcsolatos információk lekérésére.
  • Virtualizáció és biztonság
    • Új rendszerhívások, az lsm_list_modules(), lsm_get_self_attr() és lsm_set_self_attr() kerültek hozzáadásra a betöltött LSM (Linux Security Modules) modulok listázásához és az LSM modul attribútumainak lekéréséhez/beállításához. Egy új lsm_ctx struktúra került hozzáadásra a felhasználói tér és a kernel közötti kommunikációhoz az LSM kontextusban.
    • Az AppArmor alrendszert átállították az SHA-256 algoritmus használatára a szabályok ellenőrzéséhez az SHA-1 hashek helyett.
    • Az strlcpy() függvény implementációját, amely idén nyáron került be a Glibc 3.38 C könyvtárba, eltávolították a kernelből. Az Strlcpy a strncpy() egy alternatívája, amely puffer túlcsordulás elleni védelmet nyújt, és mindig tartalmaz egy null bájtot a karakterlánc lezárásához.
    • A hipervizorban KVM Támogatás került a guest_memfd (vendég-első memória) alrendszerhez, amely olyan memóriakezelési funkciókat biztosít, amelyek olyan funkciókat és optimalizálásokat tesznek lehetővé, amelyek az általános memóriakezelési alrendszerrel nem érhetők el. Például a guest_memfd lehetővé teszi a vendégrendszer számára nem elérhető memória kiosztását és leképezését, amely bizalmas számítástechnikához használható.
    • A KVM hipervizort futtató vendégek számára mostantól támogatott az Intel processzorok által biztosított Linear Address Masking (LAM) mód, amely lehetővé teszi a 64 bites mutatók bitjeinek egy részének (57-től 62-ig terjedő bitek) használatát nem címezhető metaadatok tárolására.
    • Az ARM64 alapú rendszerekhez készült KVM hipervizor mostantól támogatja az 52 bites (LPA2) fizikai címeket. Az x86 alapú rendszerek esetében lehetőség nyílt Hyper-V hiperhívás-emuláció nélküli fordításra, ami csökkentette a kernel méretét.
    • Hozzáadtuk az iaa (IAA Compression Accelerator) illesztőprogramot a DEFLATE adattömörítési és -kicsomagolási műveletek felgyorsításához az Intel Analytics Accelerator (IAA) kriptográfiai gyorsítók használatával.
    • A gazdagép oldalán támogatást nyújtott az Intel TDX (Trusted Domain Extensions) mechanizmushoz, amely lehetővé teszi biztonságos vendégkörnyezetek létrehozását, amelyek memóriatitkosítást használnak a KVM hipervizor használatakor. virtuális gépek.
    • Az SELinux hozzáadta az „init” SID-t, amely lehetővé teszi a kezdeti rendszerindítási szakaszban elindított folyamatok azonosítását, mielőtt az SELinux házirendek alkalmazásra kerülnének. Továbbfejlesztették az SELinux felügyeletéhez használt /sys/fs/selinux felületet.
  • Hálózati alrendszer
    • A gyorsítótárazási hatékonyság javítása érdekében alacsony szintű átszervezést végeztek a hálózati mag adatstruktúrákban. Korábban a hálózati veremstruktúrákban (socks, netdev, netns és mibs) lévő mezőket beszúrás sorrendjében rendezték el, korlátozva a processzor gyorsítótárának kihasználtságát. A változók elhelyezésének átszervezése ezeken a struktúrákon belül jelentősen növelte a TCP teljesítményét azáltal, hogy minimalizálta a gyorsítótár-sorok használatát az adatátvitel során és optimalizálta a változókhoz való hozzáférést. Több egyidejű TCP-kapcsolat kezelésekor a gyorsulás elérheti a 40%-ot.
    • A bpfilter alrendszert, amely BPF-et használ a csomagszűréshez, eltávolították. A Bpfilter a 4.18-as kiadás óta létezik, de soha nem fejlesztették széles körű használatra alkalmas szintre. Az elmúlt években a bpfilter kódja szunnyadó állapotban maradt a kernelben, és a fejlesztést a Facebook egy különálló repositoryban folytatta.
  • Оборудование
    • A kiadás tartalmaz egy új Xe DRM (Direct Rendering Manager) illesztőprogramot az Intel Xe architektúrán alapuló GPU-khoz, amelyet az Intel Arc sorozatú grafikus kártyákban és integrált grafikákban használnak, kezdve a Tiger Lake processzorokkal. Az Xe illesztőprogram az új chipek támogatásának alapjául szolgál, függetlenül a régebbi platformokat támogató kódtól. Az illesztőprogram egy új architektúrával készült, amely jobban kihasználja a meglévő DRM alrendszer-összetevőket, valamint a szabványos i915 illesztőprogram-összetevőket, amelyek nem kötődnek adott GPU-khoz, mint például a képernyő-interakciós kód, a memóriamodell és az execbuf implementáció. A Mesa nyelven az Xe illesztőprogramra épülő OpenGL és Vulkan támogatás a meglévő Iris és ANV Mesa illesztőprogramokon végrehajtott módosításokkal valósult meg.
    • Az i915 illesztőprogram továbbra is támogatja az Intel LunarLake (Xe 2) chipeket. Az Intel Meteor Lake chipek támogatása is javult.
    • A Nouveau illesztőprogram egy olyan beállítást valósít meg, amely alapértelmezés szerint a GSP firmware-funkciókat használja a Turing és Ampere mikroarchitektúrákon alapuló NVIDIA GPU-k esetében, ahol a GPU inicializálási és vezérlési műveleteit egy különálló GSP (GPU System Processor) mikrovezérlő végzi. Ha ez a beállítás engedélyezve van, az illesztőprogram firmware-en keresztül fog működni, ahelyett, hogy közvetlenül a hardveres interakciókat programozná.
    • Az AMDGPU illesztőprogram támogatja az ACPI WBRF és a VPE DPM szabványokat, megváltoztatja a PCIe kapcsolati sebesség kezelését, 64 bites sorszámokat használ a szinkronizáláshoz használt sorokban, támogatja az AMD-specifikus színkezelési mechanizmusokat, és megoldja az alvó üzemmódba váltás problémáját.
    • Hozzáadva a Raspberry Pi 5 alaplapokban használt Broadcom VideoCore 7.1 GPU kezdeti illesztőprogram-implementációja.
    • Hozzáadott illesztőprogram a PowerVR 6 sorozatú GPU-khoz, amelyek az Imagination Technologies Rogue mikroarchitektúráján alapulnak.
    • Hozzáadott támogatás a chipekbe integrált Thunderbolt/USB4 vezérlőkhöz az Intel Lunar Lake mikroarchitektúra alapján.
    • Hozzáadott illesztőprogramok a Starfive, GalaxyCore GC2145/GC0308, Chips&Media Wave és THine THP7312 SoC-kben használt kamerákhoz.
    • Hozzáadva az NSO (Nintendo Switch Online) játékvezérlők támogatása – a régebbi SNES (Super Nintendo), Genesis és N64 (Nintendo 64) vezérlők Nintendo Switchhez adaptált változatai. Hozzáadva egy illesztőprogram az Adafruit Seesaw játékvezérlőkhöz. Az xpad illesztőprogram mostantól támogatja a Lenovo Legion Go vezérlőket.
    • A dts illesztőprogram mostantól támogatja a Powkiddy RK2023, Powkiddy X55 és Anbernic RG351V játékeszközöket.
    • Hozzáadott támogatás az NXP i.MX8m MICFIL, Qualcomm SM8250, AMD ACP5x, Intel Arrow Lake, SM8550, SM8650 és X1E80100 chipekben használt audiorendszerekhez.
    • Az AMD változtatásokat hajtott végre a Zen 5 mikroarchitektúrán alapuló, hamarosan megjelenő processzorsorozat támogatása érdekében.
    • Hozzáadott támogatás az ARM64 SoC-hez: 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).
    • Hozzáadott támogatás ARM alaplapokhoz és eszközökhöz: Huashan Pi, Microsoft Lumia, HTC One Mini 2, Motorola MotoG 4G, Huawei Honor 5X/GR5, Anbernic RG351V, Powkiddy RK2023, Powkiddy X55, Marvell CN913x alapú ComXpress, Mediatek MT8183 alapú Lenovo, Asus és Acer Chromebookok, Toradex Verdin AM62, Allwinner H616/H618 alapú alaplapok.
    • Az ARM11 ARMv6K SMP processzorok támogatása megszűnt.

Ezzel egy időben a latin-amerikai Szabad Szoftver Alapítvány (FSF) létrehozta a teljesen ingyenes 6.8-as kernel egy verzióját – a Linux-libre 6.8-gnu-t –, amelyet megtisztítottak a nem szabad komponenseket vagy gyártó által korlátozott hatókörű kódrészleteket tartalmazó firmware és illesztőprogram-elemektől. A 6.8-as kiadás frissített blobtisztító kódot tartalmaz különböző illesztőprogramokhoz és alrendszerekhez. Az Intel qat_420xx, Imagination PowerVR, Intel Xe, Chips&Media Wave5, Intel VSC, Aquantia PHY és Realtek rtw8922a illesztőprogramjai megtisztításra kerültek. Az atmel, hermes, orinoco_usb, libertas_cs és zd1201 illesztőprogram-tisztítása megszűnt a kernelből való eltávolításuk miatt. Az ARM és Aarch64 architektúrák devicetree (dts) fájljaiban található blobnevek megtisztításra kerültek. Az i915 illesztőprogram-tisztítással kapcsolatos problémákat kijavították.

Forrás: opennet.ru

Hozzászólás