Két hónap fejlesztés után Linus Torvalds a kernel kiadás . A legfontosabb változások közé tartozik: új felület az aszinkron I/O-hoz io_uring, az NVDIMM használatának lehetősége RAM-ként, a Nouveau által a megosztott virtuális memória támogatása, a rendkívül nagy fájlrendszerek skálázható megfigyelésének támogatása a fanotify révén, a Zstd tömörítési szintek konfigurálásának lehetősége a Btrfs-ben, az új cpuidle TEO kezelő, a 2038-as év problémáira vonatkozó rendszerhívások megvalósítása, a device-mapper eszközökről való indítás initramfs nélkül, a SafeSetID LSM modul, és a kombinált live-patch-ek támogatása.
:
- Lemezszubszisztéma, bemenet/kipontozás és fájlrendszerek
- Megvalósult az új felület az aszinkron I/O-hoz — , amely érdekessége a be- és kimeneti polling támogatása, valamint az, hogy képes dolgozni mind pufferelési, mind pufferelés nélküli módban. Emlékeztessük, hogy az előzetesen javasolt aszinkron I/O mechanizmus, az "aio", nem támogatta a pufferelt be- és kimenetet, csak az O_DIRECT módban működött (pufferelés nélkül és a cache megkerülésével), problémái voltak a blokkok keletkezésével kapcsolatban a metaadatok elérhetőségének várakozása miatt, és jelentős többletköltségeket mutatott a memóriabeli adatok másolása miatt.
Az API keretein belül
az io_uring fejlesztői megpróbálták kiküszöbölni a régi aio interfész hátrányait. Az io_uring nagyon közel áll a és lényegesen megelőzi a libaio-t polling engedélyezése mellett. Az io_uring használatához a felhasználói térben működő végső alkalmazásokhoz egy könyvtár készült, , amely egy magas szintű burkolatot biztosít a kernel interfész felett; - A fájlrendszer eseményfigyelő mechanizmusában a fanotify() támogatja a superblokk és a változásának nyomon követését (mappák létrehozásának, törlésének és áthelyezésének eseményei). Az újonnan bemutatott funkciók segítenek megoldani azokat a skálázási problémákat, amelyek a nagyon nagy fájlrendszerekben történő rekurzív változásfigyelések során jelentkeznek az inotify mechanizmussal (a dirent változásokat korábban csak az inotify-n keresztül lehetett nyomon követni, de
a nagy, egymásba ágyazott mappák rekurzív figyelése során a hatékonyság messze nem volt megfelelő). Most az ilyen megfigyelés a fanotify segítségével hatékonyan végezhető; - A Btrfs fájlrendszerben A lehetőség a zstd algoritmus tömörítési szintjének beállítására, amely optimális kompromisszumnak tekinthető a gyors, de hatékonytalan lz4 és a lassú, de jól tömörítő xz között. Hasonlóan ahhoz, ahogy a zlib alkalmazásakor korábban be lehetett állítani a tömörítési szintet, a zstd esetében hozzáadták a "-o compress=zstd:level" mount opció támogatását. Tesztelés során az első minimális szint 2.658-szoros tömörítést biztosított 438.47 MB/s tömörítési sebességgel, 910.51 MB/s kibontási sebességgel és 780 MB memóriahasználattal, míg a maximális 15. szint 3.126-szoros tömörítést eredményezett, de 37.30 MB/s tömörítési sebességgel, 878.84 MB/s kibontási sebességgel és 2547 MB memóriahasználattal;
- A lehetőség fájlrendszerből történő indításra, amely a device-mapper eszközön helyezkedik el, initramfs alkalmazása nélkül. A jelenlegi hardververziótól kezdve a device-mapper közvetlenül használható az indítási folyamat során, például gyökér fájlrendszerként. A partíció beállítása a "dm-mod.create" indítási paraméter segítségével történik. A device-mapper számára engedélyezett betöltési modulok között szerepel: "crypt", "delay", "linear", "snapshot-origin" és "verity";
- A Flash-alapú F2FS fájlrendszerhez hozzáadták az F2FS_NOCOW_FL zászlót, amely lehetővé teszi a copy-on-write mód letiltását a megadott fájl számára;
- A kernelből eltávolításra került a fájlrendszer , amely az ext2 egy változata, amelyet objektum alapú tárolóeszközökhöz (OSD) alkalmaztak. Eltávolították a SCSI protokoll támogatását is az ilyen típusú objektumtároló eszközökhöz;
- Megvalósult az új felület az aszinkron I/O-hoz — , amely érdekessége a be- és kimeneti polling támogatása, valamint az, hogy képes dolgozni mind pufferelési, mind pufferelés nélküli módban. Emlékeztessük, hogy az előzetesen javasolt aszinkron I/O mechanizmus, az "aio", nem támogatta a pufferelt be- és kimenetet, csak az O_DIRECT módban működött (pufferelés nélkül és a cache megkerülésével), problémái voltak a blokkok keletkezésével kapcsolatban a metaadatok elérhetőségének várakozása miatt, és jelentős többletköltségeket mutatott a memóriabeli adatok másolása miatt.
- Virtualizáció és biztonság
- A prctl()-hez hozzáadták a PR_SPEC_DISABLE_NOEXEC opciót, amely lehetővé teszi a kiválasztott folyamatok számára a spekulatív utasítás-végrehajtás kezelését. Az új opció lehetővé teszi a spekulatív végrehajtás szelektív letiltását olyan folyamatok esetében, amelyek potenciálisan támadhatók Spectre típusú támadások révén. A blokkolás az első exec() hívásig érvényes;
- Megvalósították az LSM-modult , amely lehetővé teszi a rendszer szolgáltatások számára a felhasználók biztonságos kezelését emelt jogosultságok (CAP_SETUID) és a root felhasználói jogok megszerzése nélkül. A jogosultságok kiosztása úgy történik, hogy a securityfs-ben a megengedett kötődések fehérlistájának szabályait határozzák meg (formátumban: "UID1:UID2");
- Alacsony szintű változtatások kerültek bevezetésre, amelyek szükségesek a biztonsági modulok betöltési veremének kezeléséhez (LSM). Bevezetésre került az "lsm" kerneltöltési paraméter, amely lehetővé teszi a modulok betöltésének és sorrendjének szabályozását;
- A naplózási rendszer támogatóvá vált a fájlnevek névterei számára;
- A GCC plug-in structleak funkciói lehetővé teszik a potenciális memória szivárgások blokkolását. Bármely változó inicializálása, amely a kódon belül referencia útján használatos a verem területén;
- Hálózati alrendszer
- Az aljzatokhoz új „SO_BINDTOIFINDEX” opció került bevezetésre, amely hasonló a
„SO_BINDTODEVICE”-hez, de az interfész nevének helyett a hálózati interfész indexszámát veszi figyelembe; - A mac80211 verembe beépítésre került a lehetőség, hogy egy eszközhöz több BSSID (MAC-cím) rendelhető. A WiFi teljesítményoptimalizáló projekt keretében figyelembe lett véve az éteridő elosztása, és lehetővé vált az éteridő megosztása több állomás között (hozzáférési pont üzemmódban kevesebb időt kapnak a lassú vezeték nélküli állomások, ellentétben az összes állomás közötti egyenletes elosztással);
- Bevezetésre került a „” mechanizmusa, amely értesítéseket bocsát ki, ha problémák merülnek fel a hálózati interfésszel;
- Az aljzatokhoz új „SO_BINDTOIFINDEX” opció került bevezetésre, amely hasonló a
- Memória és rendszerszolgáltatások
- a jelek biztonságos küldése, figyelembe véve a PID újrahasználásának lehetőségét. Például egy kill hívás végrehajtásakor korábban előfordulhatott, hogy közvetlenül a jel küldése után a cél PID ki lett szabadítva a folyamat befejezése miatt, és egy másik folyamat foglalta el; ennek a helyzetnek az elkerülése érdekében új rendszerhívás került bevezetésre, a pidfd_send_signal, amely fájlkezelőket használ a /proc/pid könyvtárból, hogy stabil kapcsolódást biztosítson a folyamathoz. Még ha a PID újra felhasználásra kerül a rendszerhívás feldolgozása során, a fájlkezelő nem változik vàltozik, és biztonságosan használható a jel folyamathoz történő küldésére;
- a tartós memória eszközök használatának lehetősége (persistent-memory, például ) mint memória formájában. Korábban az ilyen eszközök tárolóeszközként működtek a magban, de most már használhatók további operatív memóriaként is. E lehetőség azokra a felhasználói igényekre reagál, akik hajlandóak elfogadni a teljesítménybeli hátrányokat, és szeretnék használni a Linux kernel memóriakezelési API-ját a felhasználói térben működő memóriaelosztó rendszerek helyett, amelyek mmapot használnak a dax fájlhoz;
- Új CPU-áthidaló kezelőt adtak hozzá (cpuidle), amely megoldja, mikor lehet a CPU-t mély energia-megtakarítási módokba kapcsolni; minél mélyebb a mód, annál nagyobb a megtakarítás, de több idő is szükséges a módból való kilépéshez — TEO (Timer Events Oriented Governor). Eddig két cpuidle kezelő volt — a 'menu' és a 'ladder', amelyek eltérnek a heurisztikájukban. A 'menu' kezelő ismert problémákkal küzdött a heurisztikai döntések meghozatalakor, így létrehozták az új kezelőt. A TEO-t a 'menu' kezelő alternatívájaként pozicionálják, lehetővé téve a magasabb teljesítmény elérését az energiatakarékosság szintjének megőrzése mellett.
Az új kezelőt a "cpuidle.governor=teo" indítási paraméter segítségével lehet aktiválni; - A folyamat során, , amely a 32 bites time_t típus túlcsordulása miatt következett be, bevezetésre kerültek a rendszeren belüli hívások, amelyek a 32 bites architektúrák számára 64 bites időszámlálókat kínálnak. Ennek köszönhetően a 64 bites time_t struktúra mostantól minden architektúrában alkalmazható. Hasonló változtatásokat hajtottak végre a hálózati alrendszerben is az opciókhoz; hálózati socketek;
- A kernel élő patchelési rendszere (live patching) az „Atomic Replace” funkció lehetősége, amely atomikus módosítások sorozatának alkalmazását teszi lehetővé egyetlen funkción. Ez a funkció lehetővé teszi a több változást átfogó összegző javítócsomagok terjesztését, ahelyett, hogy a bonyolult és nehezen fenntartható, egymás utáni élő javítások alkalmazásának pontos sorrendjét kellene követni. Korábban minden egyes következő változásnak az előző változás utáni funkció állapotát kellett figyelembe vennie, míg most lehetőség nyílik több változás együttes terjesztésére, amelyek egyetlen kiindulási állapothoz kapcsolódnak (azaz a támogatók egy összegző javítócsomagot támogathatnak az alapkernél, nem pedig egymásra épülő javítócsomagok láncát);
- elavult a a.out formátumú végrehajtható fájlok támogatása és
a core-fájlok a.out formátumban történő létrehozására szolgáló kód, amely elhagyott állapotban van. Az a.out formátum régóta nem elterjedt a Linux rendszereken, és az a.out fájlok generálása már régóta nem támogatott a modern eszközök által Linux konfigurációban alapértelmezetten. Továbbá, az a.out fájlok betöltője teljes mértékben a felhasználói térben valósítható meg; - A BPF-programok ellenőrzési mechanizmusához hozzáadva a nem használt kód meghatározásának és eltávolításának lehetősége. A kernelbe emellett a BPF alrendszer spinlock támogatásához kapcsolódó javítócsomagok is bekerültek, amelyek további lehetőségeket biztosítanak a BPF-programok párhuzamos végrehajtásának kezelésére;
- Hardver
- A Nouveau illesztőprogramban a heterogén memória kezelés támogatása, amely lehetővé teszi a CPU és GPU közös szinkronizált memória területekhez való hozzáférését. A megosztott virtuális memória (SVM, shared virtual memory) a HMM (Heterogeneous memory management) alrendszer alapján valósul meg, amely lehetővé teszi a saját memória kezelő egységgel (MMU, memory management unit) rendelkező eszközök hozzáférését a főmemóriához. A HMM segítségével közös címzési tér hozható létre a GPU és a CPU között, amelyben a GPU hozzáférhet a folyamat főmemóriájához. Az SVM támogatása jelenleg csak a Pascal család GPU-i számára érhető el, bár a Volta és Turing GPU-k esetében is biztosított a támogatás. Továbbá, a Nouveau új ioctl a folyamatok memória területeinek migrációjának kezelésére a GPU memóriájába;
- Az Intel DRM-illesztőprogramjában a Skylake és újabb GPU-k (gen9+) számára alapértelmezett gyorsindító mód, amely kizárja a felesleges üzemmódváltásokat a rendszerindítás során. Coffelake és Ice Lake mikroarchitektúrákon alapuló eszközazonosítók. Coffelake chipek számára GVT támogatás (). Virtuális GPU-k számára VFIO EDID támogatás. MIPI/DSI LCD panelekhez ACPI/PMIC elemek támogatása. új TV-módok 1080p30/50/60 TV;
- Az amdgpu illesztőprogramba be lett építve a Vega10/20 BACO GPU-k támogatása. Megvalósításra kerültek a Vega 10/20 energiafogyasztás-vezérlése és a Vega 10 hűtővezérlési táblázatai. Új PCI-eszközazonosítók kerültek bevezetésre a Picasso GPU-k számára. tervezett függőségek kezelésének interfésze a holtpontok elkerülésére;
- DRM/KMS illesztőprogram képernyőműveletek gyorsítóihoz (Mali D71);
- Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 és Kingdisplay kd097d04 képernyőpanelek támogatása került beemelésre;
- Rockchip RK3328, Cirrus Logic CS4341 és CS35L36, MediaTek MT6358, Qualcomm WCD9335 és Ingenic JZ4725B, valamint a Mediatek MT8183 hangplatform támogatásának bevezetése történt.
- STMicroelectronics FMC2, Amlogic Meson NAND-vezérlők támogatásának hozzáadása.
- Habana AI hardvergyorsítók támogatásának hozzáadása.
- gigabites Ethernet-vezérlők NXP ENETC és MediaTek MT7603E (PCIe) és MT76x8 vezeték nélküli interfészek támogatása került bevezetésre.
Egyszerre Latin-Amerikai Szabad Szoftver Alapítvány
a verziót — , tisztítva a gyártó által korlátozott terjedelmű zárt kódokat vagy drivereket tartalmazó firmware elemek eltávolításával. Az új kiadásban letiltották a blobok betöltését az mt7603 és goya illesztőprogramokban. Frissült a blobok tisztítási kódja a wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk és touchscreen_dmi illesztőprogramokban és alrendszerekben. A lantiq xrx200 firmware betöltő tisztítása leállt a kernelből való eltávolítása miatt.
Forrás: opennet.ru
