Linux 5.1 kernel kiadás

Két hónapos fejlesztés után Linus Torvalds benyújtott kernel kiadás Linux 5.1. A legfigyelemreméltóbb változások közé tartozik: új interfész az aszinkron I/O io_uringhoz, az NVDIMM RAM-ként való használatának lehetősége, a Nouveau megosztott virtuális memóriájának támogatása, a nagyon nagy fájlrendszerek méretezhető figyelésének támogatása a fanotify segítségével, a Zstd tömörítés konfigurálásának lehetősége szintek a Btrfs-ben, egy új cpuidle TEO-kezelő, rendszerhívások megvalósítása a 2038-as probléma megoldására, initramfs nélküli eszközleképező eszközökről való rendszerindítás lehetősége, SafeSetID LSM modul, kombinált élő javítások támogatása.

A főbb innovációk:

  • Lemez alrendszer, I/O és fájlrendszerek
    • Új interfész bevezetése az aszinkron I/O-hoz - io_uring, amely az I/O lekérdezés támogatásáról és a puffereléssel vagy anélkül történő munkavégzésről nevezetes. Emlékezzünk vissza, hogy a korábban javasolt „aio” aszinkron I/O mechanizmus nem támogatta a pufferelt I/O-t, csak O_DIRECT módban tudott működni (pufferelés és a gyorsítótár megkerülése nélkül), a metaadatok elérhetőségére való várakozás miatt a zárolás problémái voltak, ill. nagy rezsiköltségeket mutatott az adatok memóriába másolása miatt.

      Az API-n belül
      Az io_uring fejlesztői megpróbálták kiküszöbölni a régi aio felület hiányosságait. Által termelékenység Az io_uring nagyon közel van SPDK és jelentősen megelőzi a libaio-t, ha a lekérdezés engedélyezve van. Készült egy könyvtár az io_uring használatára a felhasználói térben futó végalkalmazásokban felszabadító, amely magas szintű keretrendszert biztosít a kernel felületén;

    • Az FS fanotify() eseménykövetési mechanizmusában tette hozzá szuperblokk- és szerkezetváltási helyzetek követésének támogatása dirent (könyvtárak létrehozásának, törlésének és áthelyezésének eseményei). A bemutatott szolgáltatások segítenek megoldani azokat a skálázhatósági problémákat, amelyek akkor merülnek fel, ha nagyon nagy fájlrendszerekben az inotify mechanizmus segítségével hoz létre rekurzív változáskövetést (a közvetlen változásokat korábban csak az inotify segítségével lehetett követni, de
      teljesítmény a nagy beágyazott könyvtárak rekurzív nyomon követése esetén sok kívánnivalót hagyott maga után). Most az ilyen megfigyelés hatékonyan elvégezhető a fanotify segítségével;

    • A Btrfs fájlrendszeren tette hozzá a tömörítési szint testreszabásának képessége a zstd algoritmushoz, ami optimális kompromisszumnak tekinthető a gyors, de nem hatékony lz4 és a lassú, de jó tömörítés xz között. Hasonlóan ahhoz, ahogyan korábban be lehetett állítani a tömörítési szintet a zlib használatakor, a „-o compress=zstd:level” beillesztési opció támogatása hozzáadásra került a zstd-hez. A tesztelés során a minimális első szint 2.658-szoros adattömörítést biztosított 438.47 MB/s-os tömörítési sebességgel, 910.51 MB/s-os kitömörítési sebességgel és 780 MB-os memóriafogyasztással, a maximális 15-ös szint pedig 3.126-szoros, de tömörítéssel. 37.30 MB/s sebesség kicsomagolás 878.84 MB/s és memóriafelhasználás 2547 MB;
    • Hozzáadva az eszközleképező eszközön található fájlrendszerről történő rendszerindítás képessége az initramfs használata nélkül. A jelenlegi kernelkiadástól kezdve az eszközleképező eszközök közvetlenül használhatók a rendszerindítási folyamat során, például partícióként a gyökér fájlrendszerrel. A partíció a „dm-mod.create” rendszerindítási paraméterrel van konfigurálva. A betöltésre engedélyezett eszközleképező modulok a következők: „crypt”, „delay”, „linear”, „snapshot-origin” és „verity”;
    • Az F2FS_NOCOW_FL jelző bekerült a Flash meghajtók felé orientált F2FS fájlrendszerbe, amely lehetővé teszi a másolás írásra mód letiltását egy adott fájlnál;
    • A fájlrendszer eltávolítva a kernelből Exofs, amely az ext2 változata, amely az OSD (Object-based Storage Device) objektumtárolókkal való munkához lett igazítva. Az ilyen objektumtároló eszközök SCSI protokolljának támogatása szintén megszűnt;
  • Virtualizáció és biztonság
    • PR_SPEC_DISABLE_NOEXEC opció hozzáadva a prctl()-hez, hogy vezérelje az utasítások spekulatív végrehajtását a kiválasztott folyamathoz. Egy új lehetőség lehetővé teszi a spekulatív végrehajtás szelektív letiltását azoknál a folyamatoknál, amelyeket potenciálisan megtámadhat egy Spectre támadás. A zárolás az exec();
    • Megvalósított LSM modul SafeSetID, amely lehetővé teszi a rendszerszolgáltatások számára, hogy biztonságosan kezeljék a felhasználókat a jogosultságok kiterjesztése (CAP_SETUID) és root jogosultságok megszerzése nélkül. A jogosultságokat a securityfs-ben az érvényes kötések fehér listája alapján határozzák meg ("UID1:UID2" formában);
    • Hozzáadott alacsony szintű változtatások szükségesek a biztonsági modulok (LSM) veremalapú betöltéséhez. Bevezette az "lsm" kernel rendszerindítási opciót, amellyel szabályozható, hogy mely modulok és milyen sorrendben legyenek betöltve;
    • A fájlnévterek támogatása hozzáadásra került az audit alrendszerhez;
    • Kiterjesztett a GCC plugin structleak képességei, amely lehetővé teszi a memóriatartalom esetleges szivárgásának blokkolását A kódban használt változók inicializálása a verem hivatkozási hozzáférésén keresztül biztosított;
  • Hálózati alrendszer
    • Aljzatokhoz végrehajtva új opció "SO_BINDTOIFINDEX" hasonló ehhez
      "SO_BINDTODEVICE", de argumentumként a hálózati interfész indexszámát veszi az interfész neve helyett;

    • A mac80211 verem lehetővé tette több BSSID (MAC-cím) hozzárendelését egy eszközhöz. A WiFi teljesítmény optimalizálását célzó projekt részeként a mac80211 verem hozzáadta a műsoridő elszámolását és a műsoridő több állomás közötti elosztásának lehetőségét (ha hozzáférési pont módban működik, kevesebb átviteli időt rendel a lassú vezeték nélküli állomásokhoz, ahelyett, hogy az időt egyenletesen osztaná el az összes állomás között állomások);
    • Hozzáadott mechanizmus "devlink egészség", amely értesítést küld, ha problémák lépnek fel a hálózati interfésszel;
  • Memória- és rendszerszolgáltatások
    • Megvalósítva biztonságos jeltovábbítás, amely lehetővé teszi a PID újrafelhasználását. Például a kill előző hívásakor előfordulhat olyan helyzet, hogy a jel küldése után közvetlenül a cél PID felszabadulhat a folyamatlezárás miatt, és egy másik folyamat foglalhatja el, és a jel végül egy másik folyamathoz kerül. Az ilyen helyzetek kiküszöbölésére egy új pidfd_send_signal rendszerhívás került hozzáadásra, amely a /proc/pid fájlleírókat használja a stabil folyamat-összerendelés biztosítása érdekében. Még ha a PID-t újra felhasználják a rendszerhívás feldolgozása során, a fájlleíró nem változik, és biztonságosan használható jel küldésére a folyamatnak;
    • Hozzáadva állandó memóriaeszközök használatának képessége (például állandó memória NVDIMM) RAM-ként. A kernel eddig tárolóeszközként támogatta az ilyen eszközöket, de mostanra további RAM-ként is használhatók. A funkciót azoknak a felhasználóknak a kívánságai alapján valósítják meg, akik hajlandóak elviselni a teljesítmény késést, és a natív Linux kernel memóriakezelő API-t szeretnék használni ahelyett, hogy a meglévő, a dax-hoz tartozó mmap-on futó felhasználói terület memóriaelosztó rendszereket használnák. fájl;
    • Új CPU tétlen kezelő (cpuidle, eldönti, hogy a CPU mikor helyezhető mély energiatakarékos módba; minél mélyebb az üzemmód, annál nagyobb a megtakarítás, de annál tovább tart a módból való kilépés) - TEO (Timer Events Oriented Governor ). Mostanáig két cpuidle-kezelőt javasoltak - a „menü” és a „létra”, amelyek heurisztikailag különböznek egymástól. A "menü" kezelőnek ismert problémái vannak a heurisztikus döntések meghozatalával, amelyek kiküszöbölésére egy új kezelő elkészítése mellett döntöttek. A TEO a "menü" kezelő alternatívájaként van elhelyezve, amely nagyobb teljesítményt tesz lehetővé, miközben az energiafogyasztás azonos szinten marad.
      Az új kezelőt a „cpuidle.governor=teo” rendszerindítási paraméterrel aktiválhatja;

    • A munka részeként, hogy megszüntesse 2038 problémái, amelyet a 32 bites time_t típusú túlcsordulás okoz, olyan rendszerhívásokat tartalmaz, amelyek 32 bites időszámlálókat kínálnak a 64 bites architektúrákhoz. Ennek eredményeként a 64 bites time_t struktúra mostantól minden architektúrán használható. Hasonló változtatásokat hajtottak végre az opciók hálózati alrendszerében is időbélyeg hálózati aljzatok;
    • A mag forró foltozási rendszerébe (élő foltozás) tette hozzá „Atomic Replace” funkció a változtatások sorozatának atomikus alkalmazásához egyetlen funkcióban. Ez a funkció lehetővé teszi, hogy egyszerre több módosítást is lefedő összefoglaló javításokat terjeszthessen, ahelyett, hogy az élő javításokat szigorúan meghatározott sorrendben, lépésről lépésre alkalmaznák, amit meglehetősen nehéz fenntartani. Míg korábban minden további változtatásnak a függvény utolsó változtatás utáni állapotán kellett alapulnia, most már lehetőség van több, egy kezdeti állapothoz kötött változtatás terjesztésére egyszerre (azaz a karbantartók az alap kernelhez képest egy konszolidált javítást tarthatnak fenn helyette az egymástól függő foltok láncolata );
    • Bejelentett az a.out futtatható fájlformátum elavult támogatása és
      eltávolították kód az alapfájlok a.out formátumú generálásához, amely elhagyott állapotban van. Az a.out formátumot régóta nem használják Linux rendszereken, és az a.out fájlok generálását régóta nem támogatják a modern eszközök az alapértelmezett Linux konfigurációkban. Ezenkívül az a.out fájlok betöltője teljes mértékben megvalósítható a felhasználói térben;

    • A fel nem használt kód azonosításának és eltávolításának képessége hozzáadásra került a BPF programellenőrzési mechanizmusához. A kernel a BPF alrendszerhez spinlock támogatással rendelkező javításokat is tartalmaz, amelyek további lehetőségeket biztosítanak a BPF programok párhuzamos végrehajtásának kezelésére;
  • Оборудование
    • Nouveau sofőrben tette hozzá támogatja a heterogén memóriakezelést, lehetővé téve a CPU és a GPU számára a közös szinkronizált memóriaterületek elérését. Az osztott virtuális memória rendszer (SVM, shared virtual memory) a HMM (Heterogeneous memory management) alrendszer alapján valósul meg, amely lehetővé teszi a saját memóriakezelő egységgel (MMU, memóriakezelő egység) rendelkező eszközök használatát, amelyek hozzáférhetnek. fő memória. A HMM használatával megosztott címteret szervezhet 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ás jelenleg csak a Pascal család GPU-ihoz engedélyezett, bár a Volta és a Turing GPU-k is támogatottak. Ráadásul Nouveau-ban - tette hozzá új ioctl a folyamatmemóriaterületek GPU-memóriába való migrációjának vezérlésére;
    • Intel DRM-illesztőprogramban a Skylake GPU-hoz és újabbhoz (gen9+) bekapcsolva Alapértelmezés szerint a gyorsindítási mód kiküszöböli a szükségtelen módváltásokat a rendszerindítás során. Hozzáadva новые Coffelake és Ice Lake mikroarchitektúrákon alapuló eszközazonosítók. Coffelake chipshez tette hozzá GVT támogatás (GPU virtualizáció). Virtuális GPU-khoz végrehajtva VFIO EDID támogatás. LCD panelekhez MIPI/DSI tette hozzá ACPI/PMIC elemek támogatása. Megvalósítva új TV módok 1080p30/50/60 TV;
    • A Vega10/20 BACO GPU támogatása hozzáadva az amdgpu illesztőprogramhoz. Megvalósított Vega 10/20 energiagazdálkodási és Vega 10 hűtővezérlő táblázatok. Új PCI eszközazonosítók hozzáadva a Picasso GPU-khoz. Hozzáadva interfész az ütemezhető függőségek kezelésére a holtpontok elkerülése érdekében;
    • Hozzáadva DRM/KMS illesztőprogram képernyőgyorsítókhoz ARM Komeda (Mali D71);
    • Hozzáadott támogatás a Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 és Kingdisplay kd097d04 képernyőpanelekhez;
    • Hozzáadott támogatás a Rockchip RK3328, Cirrus Logic CS4341 és CS35L36, MediaTek MT6358, Qualcomm WCD9335 és Ingenic JZ4725B audiokodekekhez, valamint Mediatek MT8183 audioplatformhoz;
    • Támogatás hozzáadva a NAND vezérlőkhöz Flash STMicroelectronics FMC2, Amlogic Meson;
    • Gyorsító támogatás hozzáadva a Habana AI hardverrendszerekhez;
    • Az NXP ENETC gigabites Ethernet vezérlők, valamint a MediaTek MT7603E (PCIe) és az MT76x8 vezeték nélküli interfészek támogatása hozzáadva.

Ugyanakkor a Latin-Amerikai Szabad Szoftver Alapítvány alakított
opció teljesen ingyenes kernel 5.1 - Linux-mentes 5.1-gnu, megtisztítva a nem szabad komponenseket vagy kódrészleteket tartalmazó firmware-től és illesztőprogram-elemektől, amelyek terjedelmét a gyártó korlátozza. Az új kiadásban a blob betöltés le van tiltva az mt7603 és a goya illesztőprogramokban. Frissített blobtisztító kód a wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk és touchscreen_dmi illesztőprogramokban és alrendszerekben. A foltok tisztítása a lantiq xrx200 firmware-betöltőben leállt, mivel eltávolították a kernelből.

Forrás: opennet.ru

Hozzászólás