Linux 5.11 kernel kiadás

Két hónapos fejlesztés után Linus Torvalds bemutatta a Linux kernel 5.11 kiadását. A legfigyelemreméltóbb változások: Intel SGX enklávék támogatása, új mechanizmus a rendszerhívások elfogására, virtuális segédbusz, a MODULE_LICENSE( nélküli) modulok összeállításának tilalma, gyors szűrési mód a seccomp rendszerhívásaihoz, a rendszerhívások támogatásának megszűnése ia64 architektúra, a WiMAX technológia átvitele a „staging” ágba, az SCTP UDP-be ágyazásának képessége.

Az új verzió 15480 1991 javítást tartalmaz 72 12090 fejlesztőtől, a patch mérete 868025 MB (a változtatások 261456 46 fájlt érintettek, 5.11 16 kódsor került hozzáadásra, 13 3 sor törölve lett). Az 4-ben bevezetett változtatások körülbelül XNUMX%-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:

  • Lemez alrendszer, I/O és fájlrendszerek
    • A Btrfs-hez számos beillesztési lehetőség került a sérült fájlrendszerből történő adatok visszaállításához: „rescue=ignorebadroots” a felcsatoláshoz, annak ellenére, hogy néhány gyökérfa sérült (terjedtség, uuid, adatáthelyezés, eszköz, csum, szabad terület), „ recovery=ignoredatacsums” az adatok ellenőrzőösszeg-ellenőrzésének letiltásához, a „rescue=all” pedig az „ignorebadroots”, „ignoredatacsums” és „nologreplay” módok egyidejű engedélyezéséhez. A korábban elavult "inode_cache" beillesztési lehetőség megszűnt. A kód arra készült, hogy megvalósítsa a metaadatokat és az oldalméretnél (PAGE_SIZE) kisebb adatokat tartalmazó blokkok támogatását, valamint a zónás területkiosztási mód támogatását. A puffereletlen (Direct IO) kérések átkerültek az iomap infrastruktúrába. Számos művelet teljesítményét optimalizálták, egyes esetekben a gyorsulás elérheti a tíz százalékot is.
    • Az XFS megvalósítja a "needsrepair" jelzőt, amely jelzi a javítás szükségességét. Ha ez a jelző be van állítva, a fájlrendszer nem csatlakoztatható mindaddig, amíg a jelzőt vissza nem állítja az xfs_repair segédprogram.
    • Az Ext4 csak hibajavításokat és optimalizálásokat, valamint kódtisztítást kínál.
    • Az NFS-en keresztül csatlakoztatott fájlrendszerek újraexportálása megengedett (azaz az NFS-en keresztül csatlakoztatott partíciók mostantól NFS-en keresztül exportálhatók, és közbenső gyorsítótárként használhatók).
    • A close_range() rendszerhívás, amely lehetővé teszi egy folyamat számára, hogy a megnyitott fájlleírók teljes skáláját egyszerre bezárja, hozzáadott egy CLOSE_RANGE_CLOEXEC opciót a leírók bezárásához az végrehajtáshoz módban.
    • Az F2FS fájlrendszer új ioctl() hívásokat ad hozzá, hogy lehetővé tegye a felhasználói tér szabályozását, hogy mely fájlok legyenek tömörített formában tárolva. Hozzáadott "compress_mode=" csatolási opció, amellyel kiválaszthatja, hogy a tömörítéskezelőt a kernel oldalára vagy a felhasználói területre helyezi-e el.
    • Lehetővé teszi az Overlayf-ek felcsatolását privilegizált folyamatok által, külön felhasználói névtér használatával. A biztonsági modell megvalósításának való megfelelés ellenőrzésére teljes kódauditot hajtottak végre. Az Overlayfs emellett lehetőséget ad a fájlrendszerképek másolatainak használatával történő futtatásra az UUID-ellenőrzés opcionális letiltásával.
    • A Ceph fájlrendszer kiegészítette az msgr2.1 protokoll támogatásával, amely lehetővé teszi az AES-GCM algoritmus használatát az adatok titkosított formában történő továbbításakor.
    • A dm-multipath modul lehetővé teszi a CPU-affinitás („IO-affinitás”) figyelembevételét az I/O kérések útvonalának kiválasztásakor.
  • Memória- és rendszerszolgáltatások
    • Egy új rendszerhívás-elfogó mechanizmus került hozzáadásra, a prctl()-en alapul, amely lehetővé teszi, hogy kivételeket generáljon a felhasználói területből egy adott rendszerhívás elérésekor, és emulálja a végrehajtását. Ez a funkció szükséges a Wine és Proton alkalmazásban a Windows rendszerhívások emulálásához, amely szükséges a Windows API-t megkerülő rendszerhívásokat közvetlenül végrehajtó játékokkal és programokkal való kompatibilitás biztosításához (például a jogosulatlan használat elleni védelem érdekében).
    • A userfaultfd() rendszerhívás, amelyet az oldalhibák (el nem osztott memórialapokhoz való hozzáférés) kezelésére terveztek a felhasználói térben, most már képes letiltani a kernel szintjén előforduló kivételkezelést, hogy megnehezítse bizonyos sérülékenységek kihasználását.
    • A BPF alrendszer hozzáadta a feladat-helyi tárolás támogatását, amely adat-összerendelést biztosít egy adott BPF-kezelőhöz.
    • A BPF programok memóriafelhasználásának elszámolását teljesen újratervezték – a memlock rlimit helyett cgroup vezérlőt javasoltak a BPF objektumok memóriahasználatának kezelésére.
    • A BTF (BPF Type Format) mechanizmus, amely BPF pszeudokódban típusellenőrzési információkat biztosít, támogatja a kernelmodulokat.
    • A shutdown(), renameat2() és unlinkat() rendszerhívások támogatása hozzáadva az io_uring aszinkron I/O interfészhez. Az io_uring_enter() meghívásakor hozzáadásra került az időkorlát megadásának lehetősége (az IORING_FEAT_EXT_ARG jelzővel ellenőrizheti az argumentum támogatását az időtúllépés meghatározásához).
    • Az Intel Itanium processzorokban használt ia64 architektúra az árva kategóriába került, ami azt jelenti, hogy a tesztelés leállt. A Hewlett Packard Enterprise már nem fogadott új Itanium-berendezésekre vonatkozó megrendeléseket, és az Intel tavaly ezt tette.
    • A memóriakezelő egységet (MMU) nem tartalmazó MicroBlaze architektúrán alapuló rendszerek támogatása megszűnt. Ilyen rendszereket régóta nem láttak a mindennapi életben.
    • A MIPS architektúra esetében a kódlefedettség tesztelésének támogatása hozzáadásra került a gcov segédprogrammal.
    • Hozzáadott támogatás a virtuális segédbuszhoz a többfunkciós eszközökkel való interfészhez, amelyek kombinálják a különböző illesztőprogramokat igénylő funkciókat (például Ethernet- és RDMA-támogatással rendelkező hálózati kártyák). A busz elsődleges és másodlagos meghajtó hozzárendelésére használható egy eszközhöz olyan helyzetekben, amikor az MFD (Multi-Function Devices) alrendszer használata problémás.
    • A RISC-V architektúrához hozzáadták a CMA (Contiguous Memory Allocator) memóriakiosztási rendszert, amely nagy összefüggő memóriaterületek memórialapmozgatási technikák segítségével történő lefoglalására van optimalizálva. A RISC-V esetében olyan eszközöket is implementáltak, amelyek korlátozzák a /dev/mem hozzáférést, és figyelembe veszik a megszakítások feldolgozási idejét.
    • A 32 bites ARM-rendszerekhez hozzáadták a KASan (Kernel address sanitizer) hibakereső eszközt, amely segít azonosítani a memóriával végzett munka során fellépő hibákat. A 64 bites ARM esetében a KASan implementációt MTE címkék (MemTag) használatára alakították át.
    • Az epoll_pwait2() rendszerhívás hozzáadva nanomásodperces pontossággal lehetővé teszi az időtúllépéseket (az epoll_wait hívás ezredmásodperceket manipulál).
    • A build rendszer most hibát jelenít meg, amikor olyan betölthető kernelmodulokat próbál építeni, amelyekben a kódlicenc nincs megadva a MODULE_LICENSE() makró segítségével. Mostantól az EXPORT_SYMBOL() makró statikus függvényekhez való használata is összeállítási hibát okoz.
    • Hozzáadott támogatás a GEM objektumok leképezéséhez az I/O-hoz használt memóriából, ami lehetővé tette a framebufferrel való munka felgyorsítását egyes architektúrákon.
    • A Kconfig megszüntette a Qt4 támogatását (miközben fenntartja a Qt5, GTK és Ncurses támogatását).
  • Virtualizáció és biztonság
    • A seccomp() rendszerhíváshoz hozzáadták a gyors válasz mód támogatását, amely lehetővé teszi, hogy nagyon gyorsan meghatározza, hogy egy adott rendszerhívás engedélyezett vagy tiltott a folyamathoz csatolt állandó műveletű bittérkép alapján, amely nem igényel futtatást. egy BPF kezelő.
    • Integrált kernelkomponensek az Intel SGX (Software Guard eXtensions) technológián alapuló enklávék létrehozásához és kezeléséhez, amely lehetővé teszi az alkalmazások számára, hogy kódot hajtsanak végre a memória elszigetelt, titkosított területein, amelyhez a rendszer többi része korlátozott hozzáféréssel rendelkezik.
    • A felhasználói területről az MSR-hez (modell-specifikus regiszter) való hozzáférés korlátozására irányuló kezdeményezés részeként írás az MSR_IA32_ENERGY_PERF_BIAS regiszterbe, amely lehetővé teszi a processzor energiahatékonysági üzemmódjának megváltoztatását („normál”, „teljesítmény”, „energiatakarékos”). , tilos.
    • A magas prioritású feladatok CPU-k közötti migrációjának letiltásának képessége átkerült a kernel-rt ágból a valós idejű rendszerek esetében.
    • Az ARM64 rendszereknél lehetőség nyílik MTE címkék (MemTag, Memory Tagging Extension) használatára a jelkezelő memóriacímekhez. Az MTE használatát a SA_EXPOSE_TAGBITS paraméter megadásával engedélyezi a sigaction()-ban, és lehetővé teszi a mutatók helyes használatának ellenőrzését a már felszabadult memóriablokkokhoz való hozzáférés, a puffertúlcsordulás, az inicializálás előtti hozzáférés és a programon kívüli használat által okozott sebezhetőségek kiaknázásának megakadályozására. jelenlegi kontextusban.
    • Hozzáadtuk a "DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING" paramétert, amely lehetővé teszi a dm-verity alrendszer számára, hogy ellenőrizze a másodlagos kulcstartóban elhelyezett tanúsítványok hash aláírásait. A gyakorlatban a beállítás lehetővé teszi nemcsak a kernelbe épített, hanem a működés közben betöltött tanúsítványok ellenőrzését is, ami lehetővé teszi a tanúsítványok frissítését a teljes kernel frissítése nélkül.
    • A felhasználói módú Linux kiegészítette a felfüggesztéstől készenléti üzemmóddal, amely lehetővé teszi a környezet lefagyasztását és a SIGUSR1 jel használatát az alvó módból való felébresztéshez.
    • A virtio-mem mechanizmus, amely lehetővé teszi a memória gyors csatlakoztatását és leválasztását a virtuális gépekhez, hozzáadta a Big Block Mode (BBM) támogatását, amely lehetővé teszi a memória átvitelét vagy felvételét a kernelmemória méreténél nagyobb blokkokban. blokk, amely a VFIO optimalizálásához szükséges a QEMU-ban.
    • A CHACHA20-POLY1305 titkosítás támogatása hozzáadásra került a TLS rendszermag megvalósításához.
  • Hálózati alrendszer
    • A 802.1Q (VLAN) esetében egy kapcsolathiba-kezelési mechanizmust (CFM, Connectivity Fault Management) valósítottak meg, amely lehetővé teszi a virtuális hidakkal rendelkező hálózatok (Virtual Bridged Networks) hibák azonosítását, ellenőrzését és elkülönítését. A CFM például felhasználható a több független szervezetet felölelő hálózatok problémáinak elkülönítésére, amelyek alkalmazottai csak a saját berendezéseikhez férnek hozzá.
    • Hozzáadott támogatás az SCTP protokoll csomagok UDP-csomagokba zárásához (RFC 6951), amely lehetővé teszi az SCTP használatát régebbi címfordítókkal rendelkező hálózatokon, amelyek közvetlenül nem támogatják az SCTP-t, valamint az SCTP megvalósítását olyan rendszereken, amelyek nem biztosítanak közvetlen hozzáférést az IP-hez réteg.
    • A WiMAX technológia megvalósítása átmeneti állapotba került, és a jövőben el kell távolítani, ha nincs WiMAX-ot igénylő felhasználó. A WiMAX-ot már nem használják nyilvános hálózatokban, és a kernelben az egyetlen illesztőprogram, amellyel a WiMAX használható, az elavult Intel 2400m illesztőprogram. A WiMAX támogatás 2015-ben megszűnt a NetworkManager hálózati konfigurátorban. Jelenleg a WiMax-ot szinte teljesen felváltják az olyan technológiák, mint az LTE, HSPA+ és a Wi-Fi 802.11n.
    • Dolgoztak a bejövő TCP-forgalom zerocopy módban történő feldolgozásának teljesítményének optimalizálása érdekében, pl. további másolás nélkül új pufferekbe. Közepes méretű, több tíz vagy több száz kilobájtnyi adatot lefedő forgalom esetén észrevehetően hatékonyabb a zerocopy használata a recvmsg() helyett. Például a végrehajtott változtatások lehetővé tették a 32 KB-os üzenetek RPC-stílusú forgalom feldolgozásának hatékonyságának növelését zerocopy használatakor 60-70%-kal.
    • Új ioctl() hívások hozzáadva több PPP-kapcsolaton átívelő hálózati hidak létrehozásához. A javasolt képesség lehetővé teszi, hogy a keretek egyik csatornáról a másikra mozogjanak, például PPPoE-ről PPPoL2TP munkamenetre.
    • Integráció az MPTCP (MultiPath TCP) magjába, amely 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ímekkel társított különböző hálózati interfészeken keresztül. Az új kiadás támogatja az ADD_ADDR opciót az elérhető IP-címek hirdetésére, amelyekhez csatlakozni lehet, amikor új folyamokat adunk egy meglévő MPTCP-kapcsolathoz.
    • Hozzáadtuk a műveletek konfigurálásának lehetőségét a kapcsolat lekérdezési költségvetésének túllépése esetén (foglaltsági lekérdezés). A korábban elérhető SO_BUSY_POLL mód a softirq-ra való váltást jelentette, ha a költségvetés kimerült. Azon alkalmazások számára, amelyeknek továbbra is lekérdezést kell használniuk, egy új beállítás javasolt: SO_PREFER_BUSY_POLL.
    • Az IPv6 támogatja az SRv6 End.DT4 és End.DT6 módokat, amelyek többfelhasználós IPv4 L3 VPN-ek és VRF (virtuális útválasztás és továbbítás) eszközök létrehozására szolgálnak.
    • A Netfilter egységesítette a halmazkifejezések megvalósítását, ami lehetővé tette több kifejezés megadását a halmazlisták minden eleméhez.
    • API-k kerültek hozzáadásra a 802.11 vezeték nélküli veremhez a SAR teljesítménykorlátozások, valamint az AE PWE és a HE MCS paraméterek konfigurálásához. Az Intel iwlwifi illesztőprogramja kiegészítette a 6 GHz-es (Ultra High Band) tartomány támogatását. A Qualcomm Ath11k illesztőprogramja kiegészítette a FILS (Fast Initial Link Setup, szabványosított IEEE 802.11ai) technológiát, amely lehetővé teszi, hogy megszabaduljon a barangolási késésektől az egyik hozzáférési pontról a másikra való migráció során.
  • Оборудование
    • Az amdgpu illesztőprogram támogatja az AMD "Green Sardine" APU-t (Ryzen 5000) és a "Dimgrey Cavefish" GPU-t (Navi 2), valamint kezdetben támogatja az AMD Van Gogh APU-t Zen 2 maggal és RDNA 2 GPU-val (Navi 2). Hozzáadott támogatás az új Renoir APU azonosítókhoz (Zen 2 CPU és Vega GPU alapján).
    • Az Intel videokártyák i915-ös illesztőprogramja támogatja az IS (Integer scaling) technológiát egy szűrő megvalósításával a lépték növelésére, figyelembe véve a szomszédos pixelek állapotát (Legközelebbi szomszéd interpoláció) a hiányzó pixelek színének meghatározásához. A diszkrét Intel DG1 kártyák támogatása kibővült. Megvalósították a „Big Joiner” technológia támogatását, amely az Ice Lake / Gen11 chipek óta jelen van, és lehetővé teszi egy átkódoló használatát két adatfolyam feldolgozásához, például egy 8K-s képernyőre történő kimenethez egy DisplayPorton keresztül. Egy mód hozzáadva aszinkron váltáshoz a videomemória két puffere között (aszinkron átfordítás).
    • Az új illesztőprogram kezdeti támogatást adott az Ampere mikroarchitektúrán (GA100, GeForce RTX 30xx) alapuló NVIDIA GPU-khoz, amely eddig a videó módok vezérlésére szolgáló eszközökre korlátozódott.
    • Hozzáadott támogatás az LCD panelekben használt 3WIRE protokollhoz. Hozzáadott támogatás a novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 és ABT Y030XX067A 3.0 panelekhez. Külön megjegyezhetjük a OnePlus 6 és 6T okostelefonok paneljének támogatását, amely lehetővé tette a nem módosított kernel betöltésének megszervezését az eszközökön.
    • Támogatás hozzáadva az Intel első különálló USB4 gazdavezérlőjéhez, a Maple Ridge-hez.
    • Az Allwinner H6 I2S, az Analog Devices ADAU1372, az Intel Alderlake-S, a GMediatek MT8192, az NXP i.MX HDMI és az XCVR, a Realtek RT715 és a Qualcomm SM8250 audiokodekek támogatása hozzáadva.
    • Hozzáadott támogatás az ARM kártyákhoz, eszközökhöz és platformokhoz: Galaxy Note 10.1, Microsoft Lumia 950 XL, NanoPi R1, FriendlyArm ZeroPi, Elimo Initium SBC, Broadcom BCM4908, Mediatek MT8192/MT6779/MT8167, MStar Infinity2M, Nu730 Arvotonda ​Marvell Prestera 382DX98 alapú Mikrotik, Nuvoton NPCM3236 BMC, Kontron i.MX750M Mini, Espressobin Ultra, „Trogdor” Chromebook, Kobol Helios8, Engicam PX64.Core kiszolgálók.
    • Beépített támogatás az NVIDIA Tegra 3-on alapuló Ouya játékkonzolhoz.

Ezzel egy időben a Latin-Amerikai Szabad Szoftver Alapítvány létrehozta a teljesen ingyenes 5.11-es kernel - Linux-libre 5.11-gnu - változatá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. Az új kiadás megtisztítja a qat_4xxx (crypto), lt9611uxcm (dsi/hdmi híd), ccs/smia++ (érzékelő), ath11k_pci, nxp audio adó-vevő és mhi pci vezérlő illesztőprogramjait. Frissített blobtisztító kód az amdgpu, btqca, btrtl, btusb, i915 csr illesztőprogramokban és alrendszerekben. Letiltva az új blobokat az m3 rprocban, az idt82p33 ptp órában és a qualcomm arm64-ben.

Forrás: opennet.ru

Hozzászólás