A Linux 7.0 kernel kiadása.

Két hónapos fejlesztés után Linus Torvalds bemutatta a Linux 7.0 kernelének kiadását. A legszembetűnőbb változások között szerepel az AI-asszisztensek alkalmazási szabálya, a Rust alapvető funkciókba való integrálása, a swap teljesítményének növelése, a PREEMPT_LAZY mód alapértelmezett aktiválása, az io_uring műveletekhez kapcsolódó szűrők támogatása, az új Nullfs fájlrendszer, a fserror infrastruktúra, az XFS monitorozási eszközök, a Btrfs újramapolásának támogatása, az NFS 4.1 verzió alapértelmezett aktiválása és a poszt-kvantum kriptográfiai algoritmus, az ML-DSA integrálása, valamint az AccECN aktiválása a hálózati alrendszerben, és a WiFi 8 kezdeti támogatása.

A 7.0 számot azért kaptuk, mert a 6.x ágon elegendő kiadás halmozódott fel ahhoz, hogy megváltoztassuk a verziószám első számjegyét (a 6.0 kiadást a 5.19 után alakították ki). A számok megváltoztatása esztétikai okokból történik, és egy formális lépést jelent, amely megszünteti a diszkomfortot, amit a sorozatban felhalmozódott kiadások nagy száma okoz.

Az új verzió 15624 javítást tartalmaz 2477 fejlesztőtől, a javítás mérete 56 MB (a változások 18053 fájlt érintenek, 704060 kódsort adtak hozzá és 278132 sort töröltek). A legutóbbi kiadásban 15657 javítás érkezett 2237 fejlesztőtől, a javítás mérete 52 MB volt. A 7.0-ban bemutatott változások körülbelül 51%-a az eszközmeghajtókhoz kapcsolódik, körülbelül 11% a hardware architektúrákhoz specifikus kód frissítésével foglalkozik, 14% a hálózati veremhez, 5% a fájlrendszerekhez, és 3% a kernel belső alrendszereihez.

A 7.0 kernel fő újdonságai (1, 2, 3):

  • Lemezszubszisztéma, bemenet/kipontozás és fájlrendszerek
    • Megvalósult a fserror infrastruktúra, és egy API került bevezetésre az I/O hibák és a fájlokkal kapcsolatos metaadat-károsodás információinak beszerzésére. Az ajánlott infrastruktúra egységesíti a fájlrendszerekben a hibainformációk felhasználói térbe való továbbítását az fsnotify mechanizmuson keresztül.
    • Az XFS-ben új lehetőségek kerültek bevezetésre a fájlrendszer állapotának felügyeletére felhasználói térből. Javasolták az XFS_IOC_HEALTH_MONITOR ioctl-műveletet, amely egy fájlkezelőt ad vissza, amellyel információkat szerezhetünk a metaadatok sérülésével kapcsolatos hibákról, illetve az I/O hibák előfordulásáról, valamint nyomon követhetjük a fájlrendszer állapotának változásait, mint például a lecsatolást és a leállítást. Továbbá javasolták az xfs_healer háttérfolyamatot, amelyet a systemd kezel, és amely felhasználói térből dolgozza fel a fájlrendszer állapotáról érkező eseményeket, automatikusan elindítva a helyreállítási eljárásokat, ha szükséges.
    • A Btrfs fájlrendszerben kísérleti támogatást kaptak a "remap tree" struktúrára, amely a jövőben köztes rétegként használható I/O műveletek végrehajtásakor. Az új lehetőség lényege, hogy az adatok áthelyezésekor a tárolón a kapcsolódó struktúrák frissítése helyett a "remap tree" struktúrában a régi és az új címeket tároljuk, így az adatok elérésekor a címek kicserélődnek. Az új megközelítés megbízhatóbbnak és rugalmasabbnak mutatkozik, valamint megkönnyíti a Btrfs funkcionalitásának további bővítését.
    • A Btrfs támogatja a közvetlen I/O-t, amikor a blokk mérete meghaladja a rendszer memóriapage méretét.
    • A rendszer tartalmaz egy új "Nullfs" fájlrendszert, amely helyettesítőként használható a gyökér fájlrendszer számára. A Nullfs fájlrendszer mindig üres, nem tartalmaz adatokat, és nem támogatja a módosításokat. A Nullfs célja, hogy kezdő fájlrendszerként használják a rendszer betöltési folyamatának egyszerűsítésére – a Nullfs fölé más fájlrendszerek lesznek csatolva, majd a pivot_root() rendszerhívás segítségével váltanak a gyökér fájlrendszerre anélkül, hogy törölnék az initramfs tartalmát, és használnák a hozzá kapcsolódó gyökér fájlrendszert.
    • Megvalósították a fájlok módosítási idejének frissítését nem blokkoló módban. Korábban a file_update_time_flags() hívás IOCB_NOWAIT flaggel hibát adott vissza "-EAGAIN", ami megakadályozta a közvetlen írási műveletek végrehajtását nem blokkoló módban.
    • A fájlrendszerekben az opcionálisan aktiválható funkciók közé került a bérleti értesítő zárolások (lease) támogatása. Alapértelmezés szerint ez a mechanizmus mostantól nem aktiválódik a fájlrendszerekkel kapcsolatos problémák miatt, amelyek eredetileg nem voltak tervezve ennek a használatára. Például a 9p és cephfs fájlrendszerek nem támogatják ezt.
    • Az EROFS fájlrendszer (Kiterjeszthető Csak Olvasható Fájl Rendszer), amelyet kizárólag csak olvasható partíciók használatára terveztek, alapértelmezés szerint az LZMA algoritmust alkalmazza a tömörítéshez. Opcionálisan elérhetők a DEFLATE és Zstandard algoritmusok, amelyek már nem tekinthetők kísérletinek. Megvalósították az azonos fájlok közötti lapkészlet (page-cache) megosztását az EROFS különböző fájlrendszerei között.
    • Eltávolították a laptop_mode üzemmódot, amely az energiafogyasztást csökkentette a merevlemez írási műveleteinek elhalasztásával és összevonásával, a lemez alvó üzemmódban való hosszabb idejű megőrzése és az ébredések számának csökkentése érdekében. Ez az üzemmód elavulttá vált, mivel a modern mobil eszközökben a merevlemezeket szilárdtest-gyorsítótárak helyettesítik.
    • Az F2FS fájlrendszer áttért a nagy folió potenciálok (large folios) használatára.
    • Újjáéledt a Paragon Software által fejlesztett ntfs3 illesztőprogram munkája. Hozzáadták a fájlokkal kapcsolatos iomap alapú műveletek támogatását, megvalósították az llseek SEEK_DATA/SEEK_HOLE opciókat, valamint bevezették a delalloc üzemmódot a blokkok késleltetett allokálásához. Eközben, a kernel fejlesztők levelezőlistáján februárban jóváhagyták az NTFS új megvalósításának, az ntfsplus-nak a beillesztését a jövőbeli kernel verziókba, amely az ntfs3 helyettesítésére készült.
    • Alapértelmezés szerint a 4.1-es NFS protokoll verzió van bekapcsolva a fordítás során (CONFIG_NFS_V4_1). Nyújtották a NFS-en keresztüli export zárolását a pidfs és nsfs speciális pszeudo-fájlrendszerekhez. Az NFSD-ben megvalósították a POSIX ACL használatának kísérleti lehetőségét, és hozzáadták a szálipar dinamikus változtatásának támogatását a terhelés alapján.
  • Memória és rendszerszolgáltatások
    • Jóváhagyották az AI-asszisztensek használatának és az automatikusan generált tartalom magba való bevonásának hivatalos szabályait. Az generált kód átadása esetén kötelező jelezni a használt AI-asszisztenst az „Assisted-by” címkével. Az AI-asszisztenseknek tilos hozzáadni a „Signed-off-by” címkét — az a személy, aki átadta a patch-et, tekintendő az írójának, felelős az átvitt módosításért és garantálja annak minőségét. A fejlesztők számára előírást adtak ki, hogy kézi felülvizsgálatot végezzenek az AI által generált kódon, és ellenőrizzék az eredmény megfelelőségét a licenc követelményeknek.
    • A Rust támogatását kísérleti fázisból a kernel alapvető képességeivé emelték. A Rust támogatása alapértelmezetten nem aktív, és nem teszi kötelezővé a Rust-ot a kernel építési függőségei között.
    • Befejeződött a „Swap Table” mechanizmus kernelbe való integrálása, amely javítja a lapozás teljesítményét. A felgyorsulás a lapozási cache-hez való hozzáférés közötti versengés csökkentéséből, a cache hatékonyabb kereséséből és a fragmentáció csökkentéséből származik. A Swap Table alapú backend mostantól a lapozás cache-elésére szolgál az XArray backend helyett, és a redis-benchmark teszt során a BGSAVE mellett 22%-kal növelte a feldolgozott lekérdezések számát.
    • Hozzáadták a Clang 22-ben megjelent Thread Safety Analysis kiterjesztés támogatását, amely lehetővé teszi a potenciális versenyhelyzetek és hibák azonosítását a lefordítás fázisában a zárak nem megfelelő beállításának következtében. A kiterjesztés egy sor attribútumot kínál, mint például GUARDED_BY(…), REQUIRES(…), RELEASE(…) és ACQUIRE(…), amelyek lehetővé teszik a zárral védett függvények megjelölését és a zárak hatókörének megkülönböztetését (a kontextus meghatározását). A fordítási fázisban ellenőrzés történik a szinkronizációs primitívek, mint például a mutexek helyes felhasználásáról, a kapcsolódó kontextus aktivitása vagy inaktivitása alapján.
    • Az open_tree rendszerhíváshoz hozzáadták az OPEN_TREE_NAMESPACE zászlót, amely megkönnyíti az elszigetelt tárolók beállítását és felgyorsítja a tárolók indítását olyan rendszereken, ahol nagyszámú csatlakozási pont van. Az OPEN_TREE_CLONE-hoz hasonlóan az új zászló csak a megadott csatlakozási fa (mount tree) másolatát készíti el, de ahelyett, hogy lokális fájl leíróval térne vissza, a csatlakoztatott fa új névtérben tér vissza, amely a valós gyökér fájlrendszer másolatára rakódik. Az OPEN_TREE_NAMESPACE zászlóra szükség van a különböző unshare(CLONE_NEWNS) és pivot_root() műveletek végrehajtásának elkerüléséhez, amikor tárolókat hoznak létre.
    • A rseq rendszerhíváshoz hozzáadták az időkvantumok (time slice) bővítési mechanizmusát, lehetővé téve, hogy további processzort időt nyerjünk a kritikus szakaszok megszakítás nélküli végrehajtásához. Az ötlet az, hogy elkerüljük a feladat ütemezője által a blokkolt kritikus szakasz megszakítását, amely más szálakhoz vezet, amelyek használják az erőforrást, amely még blokkolva marad. Az időkvantum bővítése további költségek nélkül történik, de szigorú garanciák nélkül, amelyeket a teljes prioritás-szabályozás biztosít.
    • Az arm64, loongarch, powerpc, riscv, s390 és x86 architektúrákon a feladatok kiszorítási (preemption) módját az ütemezőben alapértelmezés szerint megváltoztatták PREEMPT_NONE-ról PREEMPT_LAZY-ra. A lehetséges módok száma négyből kettőre csökkent — PREEMPT_FULL és PREEMPT_LAZY (a PREEMPT_NONE és PREEMPT_VOLUNTARY módok csak azok számára maradtak, akik nem támogatják a PREEMPT_FULL és PREEMPT_LAZY módokat). A PREEMPT_LAZY mód a teljes kiszorítási módszert (PREEMPT_FULL) alkalmazza a valós idejű feladatok (RR/FIFO/DEADLINE) esetén, de késlelteti a normál feladatok (SCHED_NORMAL) kiszorítását a tick határáig. Az így keletkező késleltetés csökkenti a blokkolók kiszorításának eseteit, ami lehetővé teszi a teljesítmény közelítését a szabadon választható kiszorítást alkalmazó konfigurációkhoz, azaz a PREEMPT_LAZY lehetővé teszi a teljes kiszorítási lehetőségek megőrzését a valós idejű feladatok tekintetében, de a normál feladatok teljesítménycsökkenését minimálisra csökkenti.

      A PREEMPT_LAZY bekapcsolása súlyos regressziót eredményezett, amely a PostgreSQL teljesítményét fele annyira csökkentette ARM64 rendszereken. A teljesítménycsökkenés kiküszöbölésére a PostgreSQL fejlesztőinek javasolták a PR_RSEQ_SLICE_EXTENSION opció használatát a zárolás birtokosának kiszorításának valószínűségének csökkentésére.

    • Folyamatban van a Rust-for-Linux ágba történt változtatások átvitele, amelyek a Rust nyelv használatát érintik második nyelvként a meghajtók és a kernel modulok fejlesztésében. Az előzőleg integrált 'syn' könyvtár, amely megkönnyíti bonyolult makrók írását, lehetővé tette a Rust kód méretének csökkentését a kernelben, az előző eljárási makrók meghatározásának egyszerűsítésével. Bővült a kernel, a macros és a pin-init könyvtárak funkciós köre.
    • Az io_uring aszinkron bemeneti/kimeneti rendszerébe hozzáadódott egy lehetőség a nem körkörös sorok (non-circular submission queue) használatára, amelyek hatékonyabban tárolhatók gyorsítótárban, ha a kérés végrehajtása a rendszerhívás visszatérését megelőzően befejeződik.
    • Az eBPF alműveletében a BTF (BPF Type Format) mechanizmusban, amely információt biztosít a típusellenőrzéshez a BPF pszeudokódban, bináris keresést alkalmaztak a hibakeresési információk keresésére, ami fokozta a BPF programok betöltésének hatékonyságát. Az eBPF támogatást kapott implicit argumentumokhoz a kfunc (kernel funkciók, amelyeket BPF programokban lehet használni) meghívásakor, amelyeket KF_IMPLICIT_ARGS zászlóval határoztak meg.
    • Eltávolították a linuxrc alapú kezdeti RAM lemez (initrd) támogatásához kapcsolódó kódot, amelyet régóta elavultnak nyilvánítottak. A fennmaradó initrd megvalósításokat 2027-ben tervezik eltávolítani. Az initrd helyett az initramfs használata ajánlott (a különbség abban rejlik, hogy az initrd a kezdeti indító környezetet disk képként helyezi el, míg az initramfs egy fájlrendszerben).
    • A zram blokk eszközben, amelyet a memóriahordozó terület tömörített tárolására alkalmaznak, megváltozott a tömörített memóriaoldalak kezelésének logikája, amikor az adatokat opcionálisan állandó tárolóba helyezik, ha a rendelkezésre álló RAM megtelt. Korábban a memóriaoldalakat kicsomagolták a fizikai tárolóra írás előtt, most pedig úgy maradnak, ahogy vannak, tömörített formában, ami csökkenti a CPU terhelését és energiát takarít meg hordozható üzemmódban.
    • A timerlat segédprogramhoz, amely a feladatütemező működésével kapcsolatos késleltetések mérésére szolgál, hozzáadták a „—bpf-action” opciót, amely BPF-programok futtatását teszi lehetővé, ha a megadott küszöböt túllépik.
    • A ftrace nyomozórendszerhez hozzáadták a „bitmask-list” beállítást a bitmaskák olvasható formában (bitlistáként, nem pedig hexadecimális számként) történő megjelenítésére. A tracefs-be lehetőségeket adtak a szűrők és trigger-ek auditálásához. Bevezetésre került a „perf sched stats” parancs a feladatütemező statisztikáinak gyűjtésére és megjelenítésére.
    • Hozzáadták a LOGO_LINUX_MONO_FILE, LOGO_LINUX_VGA16_FILE és LOGO_LINUX_CLUT224_FILE fordítási opciókat, amelyek a kernel indításakor megjelenítendő logó kép fájljának meghatározására szolgálnak, a Tux pingvin helyett.
  • Virtualizáció és biztonság
    • Az io_uring aszinkron bemeneti/kimeneti rendszerében megvalósították a BPF-programok rögzítésének lehetőségét, amelyek szűrőkkel ellenőrzik, hogy mit tehetnek konkrét SQE (Submission Queue Entry) műveletek (az io_uring mintájára). Az új lehetőség a rendszerhívások szűrőinek analógja. A szűrők bizonyos feladatokhoz köthetők, és öröklődnek más folyamatok létrehozásakor a fork() hívása után. Aktív szűrők esetén a rájuk épített szűrők csak további korlátozásokat köthetnek, de a meglévő szűrőket nem tilthatják le. A megvalósított funkció lehetővé teszi a rendszerhívásokhoz kötődő szűrések megkerülésének letiltását a sandbox környezetekben, amelyek a rendszerhívások helyett az io_uring által kínált hasonló műveletek végrehajtásán alapulnak.
    • A SELinux-ban hozzáadták a BPF-tokenekhez való hozzáférés irányításának lehetőségét, amely lehetővé teszi a nem privilégizált folyamatok számára, hogy bizonyos privilegizált BPF műveleteket hajtsanak végre, például BPF-programok kernelbe töltését és map-struktúrák létrehozását.
    • Hozzáadva a kvantumszámítógépekkel szemben ellenálló ML-DSA (CRYSTALS-Dilithium) digitális aláírási algoritmus támogatása, amely rácsteorián alapul. Lehetővé válik az ML-DSA modulok kernel authentikálására.
    • Eltávolították a SHA-1 algoritmusú digitális aláírások generálásának lehetőségét kernel modulok aláírására (a digitálisan aláírt modulok betöltésének támogatása megmaradt).
    • A NETFILTER_PKT audit bejegyzéshez hozzáadták az ‘sport’ és ‘dport’ mezőket, hogy lehetővé tegyék a hálózati portszámok vizsgálatát, nem csak azt. IP-címek.
    • RISC-V architektúrával rendelkező rendszerekben megvalósításra került a Zicfiss és Zicfilp kiterjesztések támogatása, amelyek hardveres lehetőségeket biztosítanak a CFI (Control Flow Integrity) védelmének alkalmazására, blokkolva a normál utasítási végrehajtási sorrend (control flow) megsértését a memória tárolt funkciómutatóinak megváltoztatásával járó exploitek révén.
    • A hipervizorban KVM Lehetőséget biztosítanak a vendégrendszerek számára, hogy információt továbbítsanak a CPU ERAPS (Enhanced Return Address Predictor Security) kiterjesztésének támogatásáról, amely lehetővé teszi, hogy elkerüljük a CPU állapotának visszaállításához szükséges bizonyos műveleteket, amikor a vendégrendszer átadja a vezérlést a gazdagépnek. Ezen kívül támogatást kaptak a vendégrendszerekhez rendelt hardverek a teljesítmény nyomon követésére (PMU, Performance Monitoring Unit), ami lehetővé teszi a profilozás pontosságának növelését a szimulált PMU használatával szemben.
    • A Hyper-V hypervisor illesztőprogramjához hozzáadták a debugfs interfész támogatását a hypervisor működésével kapcsolatos statisztikák megtekintésére.
  • Hálózati alrendszer
    • Alapértelmezetten aktiválva lett az AccECN (Accurate Explicit Congestion Notification) kiterjesztés, amely egy fejlettebb változatát valósítja meg az ECN-nek, lehetővé téve a gazdagépek számára, hogy túlterheltség esetén IP-csomagokat jelöljenek ahelyett, hogy eldobnák azokat, ami lehetővé teszi, hogy azonosítani lehessen a torlódás kezdeti állapotát a kommunikációs csatornákban csomagveszteség nélkül. Az eredeti ECN kiterjesztés egy korlátozást tartalmaz, amely csak egy túlterheltségi jelzést enged meg egy TCP (RTT, Round-Trip Time, kérés küldése és válasz fogadása) átvitel során. Az AccECN ezt a korlátozást eltávolítja, lehetővé téve a vevő számára, hogy több mint egy túlterheltségi jelzést küldjön a TCP-csomag fejlécében a küldőnek. A túlterhelés-kezelő algoritmusok felhasználhatják a kapott információt a túlterhelések pontosabb kezelésére és elkerülhetik a csomagok küldési intenzitásának drámai csökkentését, ha csak enyhe túlterhelés lép fel.
    • A Cake hálózati sorok kezelésére szolgáló algoritmusába hozzáadták a több sor támogatását, hogy a terhelést több CPU-ytómra lehessen elosztani. A CAKE algoritmus célja, hogy csökkentse a csomagok közbenső pufferezésének kedvezőtlen hatását a határozott hálózati berendezéseken, és a lehető legnagyobb áteresztőképességet és a legkisebb késleltetést érje el, még lassú kommunikációs csatornákon is.
    • A virtuális gépekkel való interakcióra használt VSOCK socketekhez hozzáadták a hálózati névterek támogatását.
    • Hozzáadva a jövőbeli WiFi 8 (802.11bn, Ultra High Reliability WiFi) szabvány elsődleges megvalósítása.
    • Optimalizálások kerültek bevezetésre, amelyek 12%-kal növelték a bejövő UDP-csomagok feldolgozási teljesítményét 100 gigabites hálózati stresszteszt során.
  • Hardver
    • Az AMDGPU meghajtóban megvalósították az új AMD GPU-k által használt IP-blokkok támogatását, mint például SMUIO 15.x, PSP 15.x, IH 6.1.1/7.1, MMHUB 3.4/4.2, GC 11.5.4/12.1, SDMA 6.1.4/7.1/7.11.4 és JPEG 5.3.
    • A Nouveau meghajtóban javították a frekvencia kezelését Tegra 186+ rendszereken.
    • Az i915 meghajtóhoz hozzáadták a Xe3p_LPD kijelző-IP-blokk kezdeti támogatását, amelyet az Intel Nova Lake-P processzorokban alkalmaznak.
    • Folytatódik a Xe DRM (Direct Rendering Manager) meghajtó fejlesztése az Intel Xe architektúrára épülő GPU-k számára, amelyeket az Intel Arc család grafikus kártyáiban és az integrált grafikában használnak, kezdve a Tiger Lake processzoroktól. Multi Queue üzemmód hozzáadva. Diagnosztikai összetevők a GPU fagyások diagnosztizálásához a Mesában. A GPU memóriahozzáférés kezelésére szolgáló MERT mechanizmus támogatása is megtörtént.
    • Folyamatban van a Nova meghajtó komponenseinek integrálása az NVIDIA GSP firmware-rel felszerelt GPU-khoz, amelyek a Turing mikroarchitektúrára épülő NVIDIA GeForce RTX 2000 sorozattal kezdődnek. A meghajtó Rust nyelven készült. Az új verzió előkészítette a Turing mikroarchitektúrára épülő GPU-k támogatásának megvalósítását, és különféle belső változtatásokat is végrehajtott.
    • A többcsatornás SPI (Serial Peripheral Interface) interfésszel rendelkező vezérlők és perifériás eszközök támogatása hozzáadva, amely lehetővé teszi az adatok párhuzamos áramlásokban történő átvitelét.
    • Hozzáadták a Type-C kombinált csatlakozókhoz a meghajtót, amelyeket az Apple Silicon chipjein használnak, és amely USB3, DP-AltMode és Thunderbolt/USB4 interfészeket ötvöz.
    • Tegra238, Minisforum V3 SE, iBasso DC04U, Intel Nova Lake, Nova Lake S és Focusrite Forte hangrendszerek támogatása hozzáadva.
    • ARM platformok, SoC-k és eszközök támogatása hozzáadva: Arduino UnoQ, OrangePi 6 Plus, OrangePi CM5, Anbernic RG-DS, Realtek Kent, Qualcomm Kaanapali, Mediatek Ezurio, Facebook Anacapa, Microchip LAN9668, Khadas VIM1S, QNAP TS133, i.MX952, i.MX93, i.MX94, VHIP4 EvalBoard, TQ-Systems MBLS1028A, Agilex5, Radxa CM3J, Glymur.
    • Okostelefonok és táblagépek támogatása hozzáadva: Fairphone Gen 6 (SoC Qualcomm Milos/Snapdragon 7s Gen 3), Pixel 3/3 xl, Microsoft Surface Pro 11.

Az amerikai Szabad Szoftver Alapítvány közben elkészítette a teljesen szabad 7.0-ás Linux-libre magverziót, amely mentes a gyártó által korlátozott nem szabad firmware és driverek elemeitől. A 7.0-ás kiadás során megtisztították az iwlwifi driver blobjait. Frissítették a takarító kódot az amdgpu, adreno, TI PRUeth, air_en8811h, ath12k, TI VPE, rtw8852b, rt1320, rt5575 SPI, tas2783 és Intel catpt driverekben. A blobok neveit tisztították a dts fájlokban (devicetree) ARM chipekhez.

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