Két hónapnyi fejlesztés után Linus Torvalds bemutatta a Linux 5.13 kernel kiadását. A legszembetűnőbb változások közé tartozik az EROFS fájlrendszer, az Apple M1 chipek kezdeti támogatása, a 'misc' cgroup-vezérlő, a /dev/kmem támogatásának megszüntetése, új Intel és AMD GPU-k támogatása, a kernel funkciók közvetlen meghívásának lehetősége BPF-programokból, a kernel stack véletlenszerűsítése minden rendszerhívás alkalmával, CFI (Control Flow Integrity) védett Clang-ban való fordítás lehetősége, az LSM Landlock modul a folyamatok további korlátozására, valamint egy virtio alapú virtuális hangkészülék és multi-shot mód az io_uringban.
Az új verzióba 17189 javítást fogadtak el 2150 fejlesztőtől (a legnagyobb szám a történelemben), a patch mérete 60 MB (a változások 12996 fájlt érintettek, 794705 kódsort adtak hozzá, 399590 kódsort töröltek). A 5.13-ban bemutatott összes változás körülbelül 47%-a eszközmeghajtókhoz kapcsolódik, körülbelül 14% a hardverarchitektúrákhoz specifikus kód frissítéseként, 13% a hálózati veremhez, 5% a fájlrendszerekhez és 4% a kernel belső alrendszereihez tartozik.
Főbb újítások:
- Lemezszubszisztéma, bemenet/kipontozás és fájlrendszerek
- Hozzáadták az EROFS (Enhanced Read-Only File System) fájlrendszer támogatását, amelyet a Huawei javasolt a csak olvasható módú partíciókon való használatra. Az új fájlrendszer támogatja az adatok tömörített tárolását, és az Ext4-hez képest hasonló teljesítményt mutat a szekvenciális olvasási műveletek során, de többszörösen megelőzi az Ext4-et az adatok véletlenszerű elérésében. Például 4-es tömörítési szint mellett és teszteléskor szerveren a HDD-vel rendelkező EROFS fájlrendszer több mint hatszorosan felülmúlta az Ext4-et a véletlenszerű olvasási műveletek során, míg Flash-alapú Android okostelefon használata mellett közel háromszoros előnyt mutatott. Ahogyan más read-only fájlrendszerekben, az EROFS struktúrája is jelentősen leegyszerűsödik a megvalósítás során néhány metaadat-terület, például a szabad blokkok bit térképének elhagyásával.
- Az SMB3 fájlrendszerhez megvalósították a 'rasize' csatolási opciót, amellyel meghatározható a prefetch ablak mérete (readahead) egyes terhelési típusok teljesítményének növelése érdekében.
- Az ext4 fájlrendszer lehetővé teszi a mappák elemeinek felülírását fájlok törlésekor. Az ext4-ben emellett egyidejűleg engedélyezett a kis- és nagybetűk figyelmen kívül hagyásának módja és a titkosítás használata.
- Az exFAT fájlrendszer támogatja az ioctl FITRIM (discard) parancsot, amely tájékoztatja a tárolót a fájlrendszerben nem használt blokkokról.
- Az XFS fájlrendszerben hozzáadódott a lehetőség, hogy a legutolsó elosztási csoportból területet vegyünk el, ami az első lépés az XFS fájlrendszerben lévő meglévő partíciók méretének csökkentése felé.
- Új rendszerhívás került bevezetésre, a quotactl_path, amely eltér a quotactltól abban, hogy lehetővé teszi a kvóták kezelését nem egy speciális eszközfájl, hanem a fájlrendszer csatolási pontjára mutató útvonal megadásával.
- A fanotify mechanizmusban bővültek a közönséges felhasználók számára elérhető lehetőségek. Például az inotify-hoz hasonlóan, SYS_CAP_ADMIN jogosultságok nélkül most már nyomon követhetők a fájlok és könyvtárak OPEN, ACCESS, MODIFY és CLOSE eseményei.
- Memória és rendszerszolgáltatások
- Új cgroup vezérlőt adtak hozzá - 'Misc' (CONFIG_CGROUP_MISC), amely a skálázható erőforrások korlátozására és nyomon követésére szolgál, ezeket egy egyszerű számláló segítségével lehet kezelni, és maximális megengedett értékeket beállítani. Példaként említhető az új cgroup vezérlő alkalmazása a címzési azonosítók kezelésére, amelyeket az AMD SEV (Secure Encrypted Virtualization) mechanizmusban használnak.
- Az io_uring aszinkron bemeneti/kimeneti interfészben a POLL lekérdezésekhez bevezetésre került a 'multi-shot' üzemmód, amelyben a POLL nem törlődik az esemény generálása után, hanem aktív marad, és több eseményt is generálhat.
- A valós idejű kernelfájl törzséből átkerült az a kód, amely a szoftveresen generált megszakítások feldolgozását biztosítja a kernel szálakban, lehetővé téve a magasabb prioritású folyamatok általi kiszorítást.
- Belső netfs könyvtár került bevezetésre, amelybe a hálózati fájlrendszerekben használt tipikus funkciókat helyezték át.
- A PowerPC architektúra számára megvalósult az időtartományok támogatása, amelyek lehetővé teszik a konténer számára a saját idő használatát.
- A RISC-V architektúra számára megvalósult a kexec, crash dump, kprobe és a kernel in-place való indítása (execute-in-place, közvetlen végrehajtás a memóriában való másolás nélkül).
- A BPF programokban megjelent a feladat-specifikus adattárolás (task-local storage) használatának lehetősége, amely magasabb teljesítményt biztosít a BPF feldolgozókhoz való adatmeghatározással.
- Kifejlesztésre került egy új mechanizmus, amely lehetővé teszi a kernel funkcióinak közvetlen hívását BPF-programokból. Ezt már alkalmazták a TCP-túlterhelési algoritmusok megvalósításában. A biztonság érdekében a hívott funkciókat egyértelműen fel kell venni egy fehérlistára.
- Az ftrace funkciók nyomkövető rendszeréhez hozzáadva lett a func-no-repeats opció, amely lehetővé teszi a sorozatos funkcióhívások megismétlődéseinek számlálóként történő tükrözését.
- A userfaultfd() rendszerhívásba, amely a felhasználói térben a page fault-ok kezelésére szolgál (az allokálatlan memóriaoldalakra való hivatkozás), beépítésre került a részleges fault-ok kezelési képessége, ahol a memóriaoldal jelen van, de nincs bejegyzés a memóriaoldalak táblázatában.
- Megszűnt a /dev/kmem speciális fájl támogatása, amely lehetővé tette a kernel teljes címtartományához való hozzáférést. Ezt a fájlt elavultnak nyilvánították, és biztonsági problémákat okoz.
- Az Intel chipekhez új hűtési drivert fejlesztettek ki, amely lehetővé teszi a processzor frekvenciájának csökkentését túlmelegedés veszélye esetén. Ezzel ellentétben a meglévő TCC (Thermal Control Circuit) aktiválási mechanizmussal, az új driver a relatív értékek manipulálására képes, azaz a frekvenciát a hőmérséklet jelentős növekedésének kezdetén csökkenti, anélkül hogy megvárná a kritikus határérték túllépését.
- Virtualizáció és biztonság
- A csomagban szerepel az LSM-modul, amely alkalmazásizolációt biztosít Landlock néven, lehetővé téve a folyamatcsoport külvilággal való interakciójának korlátozását, és olyan izolációs mechanizmusokra tekintettel lett kidolgozva, mint az XNU Sandbox, FreeBSD Capsicum és OpenBSD Pledge/Unveil. A hozzáférési logika BPF-programok segítségével van meghatározva, de a seccomp-bpf-fel ellentétben a Landlock nem szűri a rendszerhívásokat és azok argumentumait, hanem lehetővé teszi a kernel objektumok, például fájlhierarchiák használatának korlátozását. A Landlock segítségével bármely folyamat, beleértve a nem privilegizáltakat is, megbízhatóan izolálhatja magát, megakadályozva a környezet megkerülését sebezhetőségek vagy rosszindulatú módosítások felfedezése esetén. A Landlock lehetővé teszi a folyamat számára, hogy védett, izolált környezetet hozzon létre, amely a meglévő hozzáférés-ellenőrző rendszerek felett egy további réteg formájában kerül megvalósításra. Például egy program megtilthatja a fájlokhoz való hozzáférést a munkakatalógus határain kívül.
- Hozzáadták a lehetőséget a magot áthelyező eljárások véletlenszerűsítésére a rendszerhívások feldolgozása során, hogy nehezebbé tegyék a verem támadásait. A javasolt védelem lényege, hogy véletlenszerű veremeltolást választanak minden egyes rendszerhívásnál, ami megnehezíti a verem elhelyezkedésének meghatározását a memóriában, még akkor is, ha információval rendelkeznek a címekről, mivel a következő rendszerhívás során a verem alapcíme megváltozik. A véletlenszerűsítés aktiválásához a kernel parancssori paramétereit „randomize_kstack_offset=on/off” javasolják, valamint a CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT beállítást. A költségek körülbelül 1% teljesítménycsökkenéssel vannak felmérve.
- Hozzáadták a kernel Clang fordítón való fordításának támogatását a CFI (Control Flow Integrity) védelmi mechanizmusával, amely minden közvetett függvényhívás előtt ellenőrzés bevezetését igényli, hogy észlelje a bizonyos nem meghatározott viselkedésformákat, amelyek potenciálisan a végrehajtási sorrend (control flow) megsértéséhez vezethetnek a memóriában tárolt függvénymutatók módosításának következtében. A CFI aktiválásához a CONFIG_CFI_CLANG paramétert javasolják.
- A kernel által nyújtott titkosítási kulcsok tárolásához (key ring) a megbízható kulcsok (Trusted Keys) mechanizmusa mostantól nemcsak a TPM modulokból, hanem a TEE (Trusted Execution Environment) környezetekből is származó kulcsokat lefedi. A megbízható kulcsok forrásának kezelésére a „trusted.source” indítási paramétert javasolják. Ezenkívül hozzáadták a megbízható kulcsok ASN.1 formátumban történő feldolgozásának lehetőségét is.
- Hozzáadtak egy paramétert a visszavont tanúsítványok listájának előzetes betöltésére a kernel indítása során. Megoldották a (CVE-2020-26541) problémát, amely az EFI_CERT_X509_GUID formátumban megadott visszavont UEFI Secure Boot tanúsítványok feketelistán való figyelmen kívül hagyását jelentette, lehetővé téve a rendszer betöltését visszavont tanúsítvánnyal.
- A kernel kriptográfiai alrendszeréhez hozzáadták az ECDSA digitális aláírások ellenőrzésének támogatását, amely elliptikus görbéken alapul.
- Lehetőséget valósítottak meg a SELinux politikák IMA (Integrity Measurement Architecture) alrendszer általi ellenőrzésére, amely biztosítja a hash-alapú adatintegritás-ellenőrzés fenntartását.
- Hálózati alrendszer
- A WiMAX technológia támogatása eltávolításra került, mivel már nem használják nyilvános hálózatokban, és az egyetlen meghajtó, amely még használható a WiMAX-hoz a már elavult Intel 2400m meghajtó. A NetworkManager hálózati konfigurátorban a WiMAX támogatását 2015-ben megszüntették. Jelenleg a WiMAX-ot szinte teljesen kiszorította olyan technológiák, mint az LTE, HSPA+ és a Wi-Fi 802.11n.
- Új meghajtó került hozzáadásra a MANA (Microsoft Azure Network Adapter) hálózati adapterhez.
- Az ath11k meghajtóhoz hozzáadták a Qualcomm QCN9074 vezeték nélküli modulok 802.11ax támogatását.
- Az iwlwifi meghajtóban megvalósították a passzív csatornaszkennelés lehetőségét a 6 GHz-es sávban. Ukrajnára hozzáadták az IEEE 802.11ax be-/kikapcsolásának támogatását, a BIOS-ban található paraméterek alapján.
- Az XDP (eXpress Data Path) alrendszer optimalizálásra került, amely lehetővé teszi a hálózati csomagok manipulálását a Linux kernel hálózati veremének feldolgozása előtt. A végzett tesztek 4-8% -os teljesítménynövekedést mutatnak az XDP esetében. Virtio eszközök esetében az AF_XDP szoftverfeldolgozásának teljesítménynövekedése elérheti a 33%-ot.
- Az ICMP-ben megvalósították a kibővített PROBE-üzenetek támogatását, amelyeket az RFC 8335 határoz meg.
- Folyamatban van az MPTCP (MultiPath TCP) integrálása a kernelbe, a TCP protokoll kiterjesztése a TCP-kapcsolatok működésének megszervezésére, lehetővé téve a csomagok egyidejű szállítását különböző útvonalakon, különböző hálózati interfészeken keresztül, amelyek eltérőek. IP-címek. Az új kiadásban támogatást kaptak a sockopt lehetőségek, a tipikus TCP opciók beállítására. Megvalósították egyes alpotok (subflow) visszaállításának lehetőségét.
- A netfilterben hozzáadták az erőforrások kezelésének támogatását az egységesített cgroups v2 hierarchia segítségével.
- Az ethtool-ban megvalósították az IEEE MIB statisztikák olvasásához szükséges interfészt, amely támogatja az mlx5 és bnxt-et. A hálózati meghajtóknak megengedték, hogy tetszőleges adatokat nyerjenek ki az SFP EEPROM-ból, nem a kötet méret+offset, hanem a memóriapage-ek manipulálásával.
- Hardver
- Megvalósították az Apple M1 ARM chip kezdeti támogatását, amely magában foglalja a megszakításkezelőt, az időzítőt, az UART-t, az SMP-t, a bemeneti/kimeneti műveletek és az MMIO funkciókat. A GPU visszafejtése még nem zárult le, a megjelenítéshez keretező támogatás és konzol elérhetőség biztosított soros porton keresztül.
- Folyamatban van a kernel tisztítása a régi meghajtóktól, eltávolították a "gasket" (Google ASIC), a "sysace", az "umem" és néhány régi soros port meghajtót.
- A 13 éves staging szakasz után a "comedi" illesztőprogram stabilizálva lett és átkerült a fő összetevőbe az adatgyűjtő eszközök támogatásához.
- Hozzáadva a GUD (Generic USB Display) illesztőprogram, amely egy alap illesztőprogramot valósít meg USB interfészen keresztül csatlakoztatott képernyők és TV-adapterek számára. Az illesztőprogram DRM-jellemzőket (Direct Rendering Manager) biztosít a kép elforgatásához, fényerőszabályozáshoz, az EDID eléréséhez, videomódok beállításához és olyan TV-k csatlakoztatásához, amelyeket alapként lehet használni az adott eszközökre készült illesztőprogramok létrehozásához.
- Hozzáadva a "virtio" hangillesztőprogram, amely egy virtuális hangkészüléket valósít meg, amelyet vendég rendszerekben lehet használni hangkimenethez és -rögzítéshez anélkül, hogy hozzáférést kellene biztosítani a hangkártyához vagy emulációt végezni.
- Az amdgpu illesztőprogramban megkezdődött az Aldebaran GPU (gfx90a) kezdeti támogatása. Bekapcsolva a FreeSync technológia kezdeti támogatása HDMI-hoz (korábban csak DisplayPort-on volt elérhető), amely lehetővé teszi a képernyő frissítési sebességének korrekcióját. Engedélyezve az ASSR (Alternate Scrambler Seed Reset) támogatását. Hozzáadva ioctl a videó kódolással és dekódolással kapcsolatos képességek lekéréséhez. Hozzáadva a CONFIG_DRM_AMD_SECURE_DISPLAY mód a kritikus információkat megjelenítő kijelzők változásainak észleléséhez. Hozzáadva az ASPM energiatakarékos mechanizmus támogatása.
- Az i915 illesztőprogramban, amely az Intel grafikus kártyákhoz készült, hozzáadva az Intel Alderlake-S chipek támogatása. Hozzáadva az eDP MSO (Embedded DisplayPort Multi-SST Operation) támogatása.
- Hozzáadva a Luna (Amazon) játékkontroller, valamint a Hycon HY46XX, ILITEK Lego sorozat és MStar MSG2638 érintőképernyők támogatása.
Eközben a latin-amerikai Szabad Szoftver Alapítvány létrehozta a teljesen szabad 5.11-es kernel változatot — Linux-libre 5.11-gnu, amelyet megtisztítottak azoktól a firmware-ek és illesztőprogramok elemeitől, amelyek nem szabad összetevőket vagy a gyártó által korlátozott kódot tartalmaztak. Az új kiadás keretében megtisztították a comedi illesztőprogramot. Megszűnt a cyclades, isicom tty és i2400m wimax illesztőprogramok tisztítása, amelyek eltávolításra kerültek a kernelből. Frissítették a blobok tisztítási kódját az amdgpu, i915 csr, r8152 usb, mhi bus, x86 érintőképernyő és qualcomm arm64 illesztőprogramokban és alrendszerekben.
Forrás: opennet.ru
