Linux 5.12 kernel kiadás

Két hónapos fejlesztés után Linus Torvalds bemutatta a Linux kernel 5.12 kiadását. A legfigyelemreméltóbb változások: a zónás blokkeszközök támogatása a Btrfs-ben, a felhasználói azonosítók leképezésének képessége a fájlrendszer számára, a régi ARM architektúrák tisztítása, a „buzgó” írási mód az NFS-ben, a LOOKUP_CACHED mechanizmus a fájl útvonalak gyorsítótárból történő meghatározásához. , atomi utasítások támogatása BPF-ben, KFENCE hibakereső rendszer a memóriával végzett munka során fellépő hibák azonosítására, NAPI lekérdezési mód, amely külön kernelszálban fut a hálózati veremben, ACRN hipervizor, a preempt modell menet közbeni megváltoztatásának lehetősége a feladatban ütemező és támogatás az LTO optimalizáláshoz a Clangban való építés során.

Az új verzió 14170 (az előző kiadásban 15480) javítást tartalmaz 1946 (1991) fejlesztőktől, a javítás mérete 38 MB (a változtatások 12102 (12090) fájlt érintettek, 538599 (868025) kódsor került hozzáadásra, 333377 (261456) sorokat törölték). Az 43-ben bevezetett változtatások körülbelül 5.12%-a az eszközillesztőkkel kapcsolatos, a változtatások hozzávetőleg 17%-a a hardverarchitektúrák kódjának frissítéséhez, 12%-a a hálózati veremhez, 5%-a a fájlrendszerekhez és 4%-a. belső kernel alrendszerekhez kapcsolódnak.

Főbb újítások:

  • Lemez alrendszer, I/O és fájlrendszerek
    • Megvalósult a csatlakoztatott fájlrendszerek felhasználói azonosítóinak leképezésének képessége (leképezheti az egyik felhasználó fájljait egy csatlakoztatott idegen partíción egy másik felhasználóval a jelenlegi rendszeren). A leképezés FAT, ext4 és XFS fájlrendszerekhez támogatott. A javasolt funkcionalitás megkönnyíti a fájlok megosztását különböző felhasználók között és különböző számítógépeken, beleértve a leképezést a systemd-homed hordozható otthoni könyvtár mechanizmusában, lehetővé téve a felhasználók számára, hogy saját könyvtáraikat külső adathordozókra helyezzék át, és különböző számítógépeken használják, leképezés felhasználói azonosítók, amelyek nem egyeznek. Egy másik hasznos alkalmazás a fájlok megosztott hozzáférésének megszervezése egy külső gazdagépről anélkül, hogy a fájlrendszerben a fájlok tulajdonosaira vonatkozó adatokat ténylegesen megváltoztatnák.
    • A LOOKUP_CACHED javítások bekerültek a kernelbe, lehetővé téve a műveletek számára a fájl elérési útjának meghatározását a felhasználói területről blokkolás nélkül, csak a gyorsítótárban elérhető adatok alapján. A LOOKUP_CACHED mód az openat2() hívásban aktiválódik a RESOLVE_CACHED jelző átadásával, amelyben az adatok csak a gyorsítótárból kerülnek kiszolgálásra, és ha az útvonal meghatározásához hozzáférés szükséges a meghajtóhoz, akkor az EAGAIN hibaüzenet jelenik meg.
    • A Btrfs fájlrendszer kezdeti támogatást adott a zónás blokkeszközökhöz (merev mágneslemezeken vagy NVMe SSD-ken lévő eszközök, amelyekben a tárterület blokk- vagy szektorcsoportokat alkotó zónákra van felosztva, amelyekhez csak az adatok egymás utáni hozzáadása engedélyezett, a teljes blokkcsoport frissítése). Csak olvasható módban az oldalnál (aloldal) kisebb metaadatokat és adatokat tartalmazó blokkok támogatása valósul meg.
    • Az F2FS fájlrendszerben lehetőség nyílik az algoritmus és a tömörítési szint kiválasztására. Hozzáadott támogatás a magas szintű tömörítéshez az LZ4 algoritmushoz. Megvalósította a checkpoint_merge rögzítési opciót.
    • Egy új ioctl parancs FS_IOC_READ_VERITY_METADATA került megvalósításra az fs-verity által védett fájlok metaadatainak olvasására.
    • Az NFS kliens „buzgó” írási módot valósít meg (writes=eager), ha engedélyezve van, a fájlba való írási műveletek azonnal átkerülnek a szerverre, megkerülve az oldal gyorsítótárát. Ez a mód lehetővé teszi a memóriafelhasználás csökkentését, azonnali tájékoztatást biztosít a fájlrendszer szabad helyének végéről, és bizonyos helyzetekben lehetővé teszi a nagyobb teljesítmény elérését.
    • A CIFS (SMB) új beillesztési opciókkal egészült ki: az acregmax a fájlok gyorsítótárazásához, az acdirmax pedig a könyvtár metaadatainak gyorsítótárazásához.
    • Az XFS-ben engedélyezték a többszálú kvóta-ellenőrzési módot, felgyorsították az fsync végrehajtását, és a fájlrendszer méretének csökkentését célzó funkció megvalósítására a growfs kódot készítették elő.
  • Memória- és rendszerszolgáltatások
    • Kiegészült a DTMP (Dynamic Thermal Power Management) alrendszerrel, amely lehetővé teszi a különböző eszközök energiafogyasztásának dinamikus szabályozását a beállított általános hőmérsékleti határértékek alapján.
    • Megvalósult az a képesség, hogy a rendszermagot a Clang fordító segítségével optimalizálják a linkelési szakaszban (LTO, Link Time Optimization). Az LTO optimalizálás abban különbözik, hogy figyelembe veszi a felépítési folyamatban részt vevő összes fájl állapotát, míg a hagyományos optimalizálási módok minden fájlt külön optimalizálnak, és nem veszik figyelembe a többi fájlban meghatározott függvények meghívásának feltételeit. Például az LTO-val más fájlokból származó függvények soron belüli telepítése lehetséges, a fel nem használt kód nem kerül bele a futtatható fájlba, a típusellenőrzés és az általános optimalizálás a projekt egészében történik. Az LTO támogatása jelenleg az x86 és ARM64 architektúrákra korlátozódik.
    • A feladatütemezőben a rendszerindítási szakaszban (preempt=none/voluntary/full) vagy a debugfs (/debug/sched_debug) munka közben is kiválasztható a megelőző módok (PREEMPT), ha a PREEMPT_DYNAMIC beállítást megadták a kernel felépítésekor. Korábban az extrudálási módot csak az összeállítási paraméterek szintjén lehetett beállítani. A változtatás lehetővé teszi a disztribúciók számára, hogy a PREEMPT módban engedélyezett kerneleket szállítsanak, ami minimális késleltetést biztosít az asztali számítógépek számára egy kis átviteli büntetés árán, és szükség esetén visszaáll a PREEMPT_VOLUNTARY (köztes mód asztali számítógépekhez) vagy a PREEMPT_NONE (maximális átviteli sebességet biztosít a szerverek számára) értékre. .
    • A BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG és BPF_CMPXCHG atomi műveletek támogatása hozzáadásra került a BPF alrendszerhez.
    • A BPF-programok változó eltolású mutatók segítségével hozzáférhetnek a veremben lévő adatokhoz. Például, ha korábban csak egy állandó elemindexet használhatott a veremben lévő tömb eléréséhez, most már használhat egy változót. A hozzáférés-szabályozást csak a meglévő határokon belül végzi a BPF hitelesítő. Ez a funkció csak privilegizált programok számára érhető el a spekulatív kódvégrehajtási biztonsági rések kihasználásával kapcsolatos aggályok miatt.
    • Hozzáadtuk a BPF-programok olyan csupasz nyomkövetési pontokhoz való csatolásának lehetőségét, amelyek nincsenek társítva a felhasználói térben látható nyomkövetési eseményekkel (az ilyen nyomkövetési pontok esetében az ABI megőrzése nem garantált).
    • Megvalósult a CXL 2.0 (Compute Express Link) busz támogatása, amely a CPU és a memóriaeszközök közötti nagy sebességű interakció megszervezésére szolgál (lehetővé teszi a külső memóriaeszközök használatát RAM vagy állandó memória részeként, mintha ez a memória a CPU szabványos memóriavezérlőjén keresztül voltak csatlakoztatva).
    • Hozzáadott nvmem illesztőprogram az adatok lekéréséhez a firmware által lefoglalt memóriaterületekről, amelyek nem érhetők el közvetlenül a Linux számára (például olyan EEPROM memória, amely fizikailag csak a firmware számára érhető el, vagy olyan adatok, amelyek csak a korai rendszerindítási fázisban érhetők el).
    • Megszűnt az „oprofil” profilozó rendszer támogatása, amelyet nem használtak széles körben, és a helyébe a modernebb perf mechanizmus került.
    • Az io_uring aszinkron I/O interfész integrációt biztosít a memóriahasználatot szabályozó cgroupokkal.
    • A RISC-V architektúra támogatja a NUMA rendszereket, valamint a kprobes és uprobes mechanizmusokat.
    • Hozzáadtuk a kcmp() rendszerhívás használatának lehetőségét, függetlenül a folyamatállapot-pillanatképek funkcióitól (ellenőrzőpont/visszaállítás).
    • A gyakorlatban évek óta nem használt EXPORT_UNUSED_SYMBOL() és EXPORT_SYMBOL_GPL_FUTURE() makrókat eltávolítottuk.
  • Virtualizáció és biztonság
    • Hozzáadott KFence (Kernel Electric Fence) védelmi mechanizmus, amely a memóriával való munka során észleli a hibákat, például a puffer túlcsordulását és a memória felszabadítása utáni hozzáférést. A KASAN hibakereső mechanizmussal ellentétben a KFence alrendszert nagy működési sebesség és alacsony többletterhelés jellemzi, ami lehetővé teszi a csak működő rendszereken vagy a hosszú távú működés során megjelenő memóriahibák elkapását.
    • Hozzáadott támogatás az ACRN hipervizorhoz, amely a valós idejű feladatokra való felkészültség és a kritikus rendszerekben való használatra való alkalmasság szem előtt tartásával készült. Az ACRN minimális többletköltséget biztosít, alacsony késleltetést és megfelelő válaszkészséget garantál a berendezésekkel való interakció során. Támogatja a CPU erőforrások, I/O, hálózati alrendszer, grafikus és hangműveletek virtualizálását. Az ACRN használható több izolált virtuális gép futtatására elektronikus vezérlőegységekben, műszerfalakban, autóipari információs rendszerekben, fogyasztói IoT-eszközökben és más beágyazott technológiákban. Az ACRN kétféle vendégrendszert támogat – a privilegizált szolgáltatási virtuális gépeket, amelyeket a rendszererőforrások (CPU, memória, I/O stb.) kezelésére használnak, és az egyéni felhasználói virtuális gépeket, amelyek Linux, Android és Windows disztribúciókat futtathatnak.
    • Az IMA (Integrity Measurement Architecture) alrendszerben, amely egy hash adatbázist tart fenn a fájlok és a kapcsolódó metaadatok integritásának ellenőrzésére, most lehetővé válik magának a kernelnek az adatainak sértetlenségének ellenőrzése, például a SELinux szabályok változásainak nyomon követése érdekében. .
    • A KVM hypervisorhoz hozzáadták a Xen hiperhívások elfogásának és a felhasználói térben futó emulátornak való továbbításának lehetőségét.
    • Hozzáadtuk a Linuxnak a Hyper-V hypervisor gyökérkörnyezetének használatát. A root környezet közvetlen hozzáféréssel rendelkezik a hardverhez, és vendégrendszerek futtatására szolgál (hasonlóan a Xen Dom0-jához). A Hyper-V (Microsoft Hypervisor) eddig csak vendégkörnyezetben támogatta a Linuxot, magát a hypervisort azonban Windows alapú környezetből vezérelték.
    • Hozzáadott támogatás az eMMC-kártyák beépített titkosításához, lehetővé téve a meghajtóvezérlőbe épített titkosítási mechanizmusok használatát, amelyek átláthatóan titkosítják és visszafejtik az I/O-t.
    • A magban nem használt RIPE-MD 128/256/320 és Tiger 128/160/192 hashek, valamint a ChaCha20 algoritmussal felváltott Salsa20 adatfolyam titkosító támogatása kikerült a kriptográfiai alrendszer. A blake2 algoritmus frissítve lett a blake2s megvalósításához.
  • Hálózati alrendszer
    • Hozzáadtuk a hálózati eszközök NAPI lekérdezési kezelőjének egy külön kernelszálba való áthelyezését, ami bizonyos típusú munkaterhelések esetén jobb teljesítményt tesz lehetővé. Korábban a lekérdezést a softirq kontextusában hajtották végre, és a feladatütemező nem fedte le, ami megnehezítette a finom szemcsés optimalizálás végrehajtását a maximális teljesítmény elérése érdekében. A külön kernelszálban történő végrehajtás lehetővé teszi a lekérdezéskezelő megfigyelését a felhasználói térből, az egyes CPU magokhoz csatolva, és a feladatváltás ütemezésekor figyelembe vehető. Az új mód engedélyezéséhez a sysf-ben a /sys/class/net//threaded paraméter javasolt.
    • 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 lehetőséget ad arra, hogy bizonyos szálakhoz prioritást rendeljen, ami lehetővé teszi például a tartalék szálak munkájának megszervezését, amelyek csak akkor kapcsolnak be, ha az elsődleges szállal problémák vannak.
    • Az IGMPv3 támogatja az EHT (Explicit Host Tracking) mechanizmust.
    • A Netfilter csomagszűrő motorja lehetővé teszi bizonyos táblák birtoklását, hogy kizárólagos irányítást szerezzenek (például egy háttértűzfalfolyamat átveheti bizonyos táblák tulajdonjogát, megakadályozva, hogy bárki más megzavarja azokat).
  • Оборудование
    • Megtisztítottuk az elavult és nem karbantartott ARM platformokat. Eltávolították az efm32, picoxcell, prima2, tango, u300, zx és c6x platformok kódját, valamint a hozzájuk tartozó illesztőprogramokat.
    • Az amdgpu illesztőprogram lehetővé teszi a Sienna Cichlid GPU-n (Navi 22, Radeon RX 6xxx) alapuló kártyák túlhajtását (OverDrive). Az FP16 pixelformátum támogatása a DCE-hez (megjelenítővezérlő motor) a 8. és 11. generáció között. A GPU Navy Flounder (Navi 21) és az APU Van Gogh esetében megvalósították a GPU visszaállításának lehetőségét.
    • Az Intel grafikus kártyákhoz készült i915 illesztőprogram az i915.mitigations paramétert alkalmazza az elkülönítési és védelmi mechanizmusok letiltására a jobb teljesítmény érdekében. A Tiger Lake-től induló chipeknél a VRR (Variable Rate Refresh) mechanizmus támogatása is szerepel, amely lehetővé teszi a monitor frissítési gyakoriságának adaptív megváltoztatását, hogy biztosítsa a zökkenőmentességet és a játék közbeni hézagok elkerülését. Az Intel Clear Color technológia támogatása a jobb színpontosság érdekében. Hozzáadott támogatás a DP-HDMI 2.1-hez. Bevezették az eDP-panelek háttérvilágításának vezérlésének lehetőségét. Az LSPCON (Level Shifter and Protocol Converter) támogatással rendelkező Gen9 GPU-k esetében a HDR támogatás engedélyezett.
    • Az új illesztőprogram a GA100 (Ampere) architektúrán alapuló NVIDIA GPU-k kezdeti támogatását adja.
    • Az msm illesztőprogram támogatja az SDM (Snapdragon) 508, 509 és 512 chipekben használt Adreno 630, 636 és 660 GPU-kat.
    • Hozzáadott támogatás a Sound BlasterX AE-5 Plus, a Lexicon I-ONIX FW810s és a Pioneer DJM-750 hangkártyákhoz. Támogatás hozzáadva az Intel Alder Lake PCH-P audio alrendszerhez. Az audiocsatlakozó csatlakoztatásának és leválasztásának szoftveres szimulációjának támogatása a felhasználói térben található hibakereső kezelők számára.
    • Hozzáadott támogatás az 64 és 1996 között gyártott Nintendo 2003 játékkonzolokhoz (a Linux Nintendo 64-re történő portolásának korábbi kísérletei nem fejeződtek be, és Vaporware-nek minősültek). Az elavult platform új portjának létrehozásának motivációja, amely közel húsz éve nem jelent meg, az emulátorok fejlesztésének ösztönzése és a játékok portolásának egyszerűsítése.
    • Illesztőprogram hozzáadva a Sony PlayStation 5 DualSense játékvezérlőhöz.
    • Hozzáadott támogatás ARM kártyákhoz, eszközökhöz és platformokhoz: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4.
    • Hozzáadott támogatás a Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070 okostelefonokhoz.
    • Hozzáadott bcm-vk illesztőprogram a Broadcom VK gyorsítókártyákhoz (például Valkyrie és Viper PCIe kártyákhoz), amellyel hang-, kép- és képfeldolgozási műveletek, valamint titkosítással kapcsolatos műveletek külön eszközre tölthetők.
    • Hozzáadott támogatás a Lenovo IdeaPad platformhoz, amely lehetővé teszi az állandó töltés és a billentyűzet háttérvilágításának vezérlését. Ezenkívül támogatja a ThinkPad platform ACPI profilját, amely képes szabályozni az energiafogyasztási módokat. Illesztőprogram hozzáadva a Lenovo ThinkPad X1 Tablet Gen 2 HID alrendszerhez.
    • Hozzáadott ov5647 illesztőprogram, amely támogatja a Raspberry Pi kameramodulját.
    • Hozzáadott támogatás a RISC-V SoC FU740 és a HiFive Unleashed kártyákhoz. A Kendryte K210 chiphez egy új illesztőprogram is hozzáadásra került.

Forrás: opennet.ru

Hozzászólás