Linux 5.2 kernel kiadás

Két hónapos fejlesztés után Linus Torvalds benyújtott kernel kiadás Linux 5.2. A legszembetűnőbb változások közé tartozik: az Ext4 működési mód nem tesz különbséget a kis- és nagybetűk között, külön rendszerhívások a fájlrendszer csatlakoztatásához, illesztőprogramok a GPU Mali 4xx/6xx/7xx-hez, a sysctl értékek változásainak kezelése a BPF programokban, eszközleképező dm-dust modul, MDS támadások elleni védelem, Sound Open Firmware támogatás DSP-hez, BFQ teljesítmény optimalizálása, a PSI (Pressure Stall Information) alrendszer androidos használatának lehetősége.

Az új verzió 15100 1882 javítást tartalmaz XNUMX XNUMX fejlesztőtől,
javítás mérete - 62 MB (a változások 30889 fájlt érintettek, 625094 kódsor került hozzáadásra, 531864 sor törölve). Körülbelül 45%-a az 5.2
a változtatások eszközillesztőkkel kapcsolatosak, a változtatások körülbelül 21%-a
hozzáállás a hardver architektúrákra jellemző kód frissítéséhez, 12%
a hálózati veremhez, 3% a fájlrendszerekhez és 3% a belsőhöz kapcsolódik
kernel alrendszerek. Az összes változtatás 12.4%-át az Intel készítette, 6.3%-át a Red Hat, 5.4%-át a Google, 4.0%-át az AMD, 3.1%-át a SUSE, 3%-át az IBM, 2.7%-át a Huawei, 2.7%-át a Linaro, 2.2%-át az ARM , 1.6 % - Oracle.

A főbb innovációk:

  • Lemez alrendszer, I/O és fájlrendszerek
    • Hozzáadva az Ext4-hez támogatás A fájlnevekben a karakterek kis- és nagybetűinek megkülönböztetése nélkül működik, ami csak az egyes üres könyvtárak esetében aktiválódik az új „+F” attribútummal (EXT4_CASEFOLD_FL). Ha ez az attribútum be van állítva egy könyvtárban, akkor a fájlokkal és alkönyvtárakkal végzett összes művelet a karakterek kis- és nagybetűinek figyelembevétele nélkül kerül végrehajtásra, beleértve a kis- és nagybetűket is figyelmen kívül hagyja a fájlok keresése és megnyitása során (például a Test.txt fájlok, Az ilyen könyvtárakban található test.txt és test.TXT azonosnak minősül). Alapértelmezés szerint a fájlrendszer továbbra is megkülönbözteti a kis- és nagybetűket, kivéve a „chattr +F” attribútummal rendelkező könyvtárakat;
    • Egységesítették a fájlnevekben lévő UTF-8 karakterek feldolgozására szolgáló funkciókat, amelyeket a karakterlánc-összehasonlítási és normalizálási műveletek végrehajtásakor használnak;
    • Az XFS infrastruktúrát ad a fájlrendszer állapotának figyeléséhez, és egy új ioctl-t az állapot lekérdezéséhez. Kísérleti funkciót vezettek be a szuperblokk-számlálók online ellenőrzésére.
    • Új modul eszközleképező hozzáadvadm-por“, amely lehetővé teszi, hogy szimulálja a rossz blokkok megjelenését az adathordozón vagy hibákat a lemezről történő olvasás során. A modul lehetővé teszi az alkalmazások és különféle tárolórendszerek hibakeresésének és tesztelésének egyszerűsítését az esetleges hibák esetén;
    • Végrehajtott Jelentős teljesítményoptimalizálások a BFQ I/O ütemezőhöz. Magas I/O terhelés mellett optimalizálás történt lehetővé teszi Csökkentse a műveletek idejét, például az alkalmazások elindítását akár 80%-kal.
    • Egy sor rendszerhívás hozzáadva a fájlrendszerek csatlakoztatásához: fsopen(), open_tree(), fspick(), fsmount(), fsconfig() и move_mount(). Ezek a rendszerhívások lehetővé teszik a beillesztés különböző szakaszainak külön-külön történő feldolgozását (a szuperblokk feldolgozása, a fájlrendszerrel kapcsolatos információk lekérése, felcsatolás, csatolás a csatolási ponthoz), amelyeket korábban a közös mount() rendszerhívással hajtottak végre. A külön hívások lehetővé teszik bonyolultabb csatlakoztatási forgatókönyvek végrehajtását és külön műveletek végrehajtását, például a szuperblokk újrakonfigurálását, az opciók engedélyezését, a csatolási pont megváltoztatását és egy másik névtérbe való áthelyezést. Ezenkívül a külön feldolgozás lehetővé teszi a hibakódok kimenetének okainak pontos meghatározását, és több forrás beállítását többrétegű fájlrendszerekhez, például overlayfekhez;
    • Egy új IORING_OP_SYNC_FILE_RANGE művelet került az aszinkron I/O io_uring interfészébe, amely rendszerhívással egyenértékű műveleteket hajt végre sync_file_range(), valamint megvalósította az eventfd regisztrálásának lehetőségét az io_uring segítségével, és a műveletek befejezéséről szóló értesítések fogadását;
    • A CIFS fájlrendszerhez hozzáadásra került a FIEMAP ioctl, amely hatékony kiterjedésleképezést biztosít, valamint támogatja a SEEK_DATA és SEEK_HOLE módokat;
    • A FUSE alrendszerben javasolta API adatgyorsítótár kezeléséhez;
    • A Btrfs optimalizálta a qgroups implementációt és javította az fsync végrehajtási sebességét a több merev hivatkozást tartalmazó fájlok esetében. Javítottuk az adatintegritás-ellenőrző kódot, amely figyelembe veszi a RAM-ban lévő információ esetleges sérülését, mielőtt az adatokat a lemezre üríti;
    • A CEPH támogatja a pillanatképek NFS-en keresztüli exportálását;
    • Javult az NFSv4 beillesztés megvalósítása „soft” módban (ha hiba történik a szerver elérésekor „soft” módban, a hívás azonnal hibakódot ad vissza, és „hard” módban a vezérlés csak az FS rendelkezésre állás vagy időtúllépés helyreáll). Az új kiadás pontosabb időtúllépés-kezelést, gyorsabb összeomlás-helyreállítást és új „puhább” beillesztési lehetőséget biztosít, amely lehetővé teszi az időtúllépés esetén visszaadott hibakód (ETIMEDOUT) módosítását;
    • Az nfsdcld API, amelyet az NFS-kliensek állapotának nyomon követésére terveztek, lehetővé teszi az NFS-kiszolgáló számára, hogy újraindításkor helyesen kövesse az ügyfél állapotát. Így az nfsdcld démon mostantól nfsdcltrack kezelőként működhet;
    • Az AFS számára tette hozzá bájttartomány zárolásainak emulációja a fájlokban (Bájttartomány zárolása);
  • Virtualizáció és biztonság
    • Dolgoztak a kernel azon helyek kiküszöbölése érdekében, amelyek lehetővé teszik a kód futtatását az írható tükrözött memóriaterületekről, ami lehetővé teszi a támadás során kihasználható potenciális lyukak blokkolását;
    • Egy új "mitigations="" parancssori paraméterrel bővült a kernel, amely egyszerűsített módot biztosít bizonyos technikák engedélyezésére a CPU-n az utasítások spekulatív végrehajtásával kapcsolatos sebezhetőségek elleni védelem érdekében. A „mitigations=off” átadása letiltja az összes létező metódust, az alapértelmezett „mitigations=auto” mód pedig engedélyezi a védelmet, de nem befolyásolja a Hyper Threading használatát. A „mitigations=auto,nosmt” mód emellett letiltja a Hyper Threading funkciót, ha a védelmi módszer megköveteli.
    • Hozzáadva az elektronikus digitális aláírás támogatása a GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3) szerint, fejlett Vitaly Chikunov a Basalt SPO-tól. Az AES128-CCM támogatása hozzáadva a natív TLS megvalósításhoz. Az AEAD algoritmusok támogatása hozzáadva a crypto_simd modulhoz;
    • A Kconfigban tette hozzá egy külön „kernel hardening” rész a kernel védelmét fokozó opciókkal. Jelenleg az új rész csak a GCC-ellenőrzést javító bővítmények engedélyezésére vonatkozó beállításokat tartalmazza;
    • A kernel kódja majdnem szállított a kapcsolóban lévő megszakítás nélküli kisbetű-utasításokból (minden esetblokk után visszatérés vagy törés nélkül). A 32 ilyen kapcsolóhasználati esetből 2311-t kell kijavítani, ami után lehetőség lesz a „-Wimplicit-fallthrough” mód használatára a kernel felépítésénél;
    • A PowerPC architektúra esetében a hardveres mechanizmusok támogatása a nem kívánt kernel hozzáférési útvonalak korlátozására a felhasználói térben lévő adatokhoz;
    • Hozzáadott blokkoló kód támadások MDS (Microarchitectural Data Sampling) osztály az Intel processzorokban. A „/sys/devices/system/cpu/vulnerabilities/mds” SysFS változóval ellenőrizheti, hogy egy rendszer sebezhető-e. Elérhető két védelmi mód: teljes, amely frissített mikrokódot igényel, és bypass, amely nem garantálja teljes mértékben a CPU pufferek törlését, amikor a vezérlés átkerül a felhasználói területre vagy a vendégrendszerre. A védelmi módok szabályozására az „mds=” paraméter hozzáadásra került a kernelhez, amely a „full”, „full,nosmt” (+ a Hyper-Threads letiltása) és „off” értékeket veheti fel;
    • Az x86-64 rendszereken „stack guard-page” védelem került hozzáadásra az IRQ-hoz, a hibakereső mechanizmusokhoz és a kivételkezelőkhöz, melynek lényege, hogy a határon lévő memórialapokat helyettesítik a veremmel, amelyek elérése egy kivétel (oldal-hiba);
    • Hozzáadott vm.unprivileged_userfaultfd sysctl beállítás, amely szabályozza, hogy a nem jogosult folyamatok a userfaultfd() rendszerhívást használják-e;
  • Hálózati alrendszer
    • Hozzáadva IPv6 átjáró támogatás az IPv4 útvonalakhoz. Például most megadhat olyan útválasztási szabályokat, mint az „ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0”;
    • Az ICMPv6 esetében az icmp_echo_ignore_anycast és az icmp_echo_ignore_multicast ioctl hívások az anycast és az ICMP ECHO figyelmen kívül hagyásához
      multicast címek. Hozzáadva az ICMPv6 csomagfeldolgozás intenzitásának korlátozásának képessége;

    • A BATMAN (Better Approach To Mobile Adhoc Networking) mesh protokollhoz, amely lehetővé teszi olyan decentralizált hálózatok létrehozását, amelyekben minden csomópont szomszédos csomópontokon keresztül csatlakozik, tette hozzá a multicastról az unicastra történő sugárzás támogatása, valamint a sysf-en keresztüli vezérlés lehetősége;
    • Az ethtoolban - tette hozzá egy új Fast Link Down paraméter, amely lehetővé teszi, hogy csökkentse az 1000BaseT kapcsolat leállási eseményével kapcsolatos információk fogadásának idejét (normál körülmények között a késleltetés legfeljebb 750 ms);
    • Megjelent alkalom Foo-Over-UDP alagutak kötése egy adott címhez, hálózati interfészhez vagy sockethez (korábban az összerendelés csak egy közös maszk segítségével történt);
    • A vezeték nélküli veremben biztosított kezelők megvalósításának lehetősége
      OWE (Opportunistic Wireless Encryption) a felhasználói térben;

    • A Netfilterben az inet-címcsalád támogatása hozzáadásra került a nat-láncokhoz (például most már egyetlen fordítási szabályt is használhat az ipv4 és ipv6 feldolgozásához anélkül, hogy szétválasztaná az ipv4 és ipv6 szabályait);
    • Netlinkben - tette hozzá a rendszer szigorú az összes üzenet és attribútum helyességének szigorú ellenőrzése érdekében, amelyekben az attribútumok elvárt méretét nem szabad túllépni, és tilos további adatok hozzáadása az üzenetek végére;
  • Memória- és rendszerszolgáltatások
    • A CLONE_PIDFD jelző hozzá lett adva a clone() rendszerhíváshoz, ha megadja, a létrehozott gyermekfolyamattal azonosított „pidfd” fájlleíró visszakerül a szülőfolyamathoz. Ez a fájlleíró például használható jelek küldésére anélkül, hogy félne attól, hogy versenyhelyzetbe kerül (közvetlenül a jel elküldése után a cél PID felszabadulhat a folyamatleállás miatt, és egy másik folyamat lefoglalhatja);
    • A cgroupok második verziójához hozzáadták a fagyasztóvezérlő funkciót, amellyel leállíthatja a munkát a cgroupban, és ideiglenesen felszabadíthat néhány erőforrást (CPU, I/O és esetleg még memória is) egyéb feladatok elvégzéséhez. A kezelés a cgroup.freeze és a cgroup.events vezérlőfájlokon keresztül történik a cgroup fában. A cgroup.freeze 1. bejegyzése lefagyasztja a folyamatokat az aktuális cgroupban és az összes gyermekcsoportban. Mivel a lefagyás eltart egy ideig, egy további cgroup.events fájl is rendelkezésre áll, amelyen keresztül tájékozódhat a művelet befejezéséről;
    • Biztosítva a sysf-ben az egyes csomópontokhoz csatolt memóriaattribútumok exportálása, amely lehetővé teszi a felhasználói térből a memóriabankok feldolgozásának természetét a heterogén memóriával rendelkező rendszerekben;
    • Továbbfejlesztették a PSI (Pressure Stall Information) alrendszert, amely lehetővé teszi a különböző erőforrások (CPU, memória, I/O) fogadásának várakozási idejére vonatkozó információk elemzését bizonyos feladatok vagy folyamatcsoportok cgroupban. A PSI használatával a felhasználói területkezelők pontosabban meg tudják becsülni a rendszerterhelési és lassulási minták szintjét az átlagos terheléshez képest. Az új verzió támogatja az érzékenységi küszöbértékek beállítását, és lehetőséget ad a poll() hívás használatára, hogy értesítést kapjon arról, hogy a beállított küszöbértékek egy bizonyos ideig aktiválódtak. Ez a funkció lehetővé teszi az Android számára, hogy korai szakaszban figyelje a memóriahiányt, azonosítsa a problémák forrását, és leállítsa a nem fontos alkalmazásokat anélkül, hogy a felhasználó számára észrevehető problémákat okozna. A stressztesztek során a PSI-alapú memóriafelhasználást figyelő eszközök 10-szer kevesebb téves pozitív eredményt mutattak a vmpressure statisztikákhoz képest;
    • A BPF-programok ellenőrzésére szolgáló kódot optimalizálták, ami nagy programok esetén akár 20-szor gyorsabb ellenőrzést tesz lehetővé. Az optimalizálás lehetővé tette a BPF programok mérethatárának 4096-ról millió utasításra való emelését;
    • BPF programokhoz megadott a globális adatok elérésének képessége, amely lehetővé teszi globális változók és konstansok meghatározását a programokban;
    • Hozzáadva API, amely lehetővé teszi a sysctl paraméterek változásainak szabályozását a BPF programokból;
    • A MIPS32 architektúrához az eBPF virtuális géphez egy JIT-fordítót valósítottak meg;
    • A 32 bites PowerPC architektúrához a KASan (Kernel address sanitizer) hibakereső eszköz támogatása került hozzáadásra, amely segít azonosítani a memóriával végzett munka során fellépő hibákat;
    • Az x86-64 rendszereken a 896 MB feletti memóriaterületeken eltörölték az állapotkiírások kernel összeomlás (crash-dump) során történő elhelyezésére vonatkozó korlátozást;
    • Az s390 architektúra esetében a kernel címterének véletlenszerűsítésének (KASLR) támogatása és a digitális aláírások ellenőrzése a kernel kexec_file_load() segítségével történő betöltésekor megvalósult;
    • A PA-RISC architektúrához hozzáadott a kernel hibakereső (KGDB), az ugrásjelek és a kprobes támogatása;
  • Оборудование
    • Driver mellékelve Lima a Mali 400/450 GPU-hoz, amelyet sok régebbi, ARM architektúrán alapuló chipben használnak. Az újabb Mali GPU-khoz a Panfrost illesztőprogram került, amely Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) és Bifrost (Mali G3x, G5x, G7x) mikroarchitektúrákon alapuló lapkákat támogat;
    • Hozzáadott támogatás a nyílt firmware-t használó audioeszközökhöz Hang nyitott firmware (SOF). A nyitott illesztőprogramok elérhetősége ellenére a hangchipek firmware-kódja továbbra is zárva maradt, és bináris formában került kiadásra. A Sound Open Firmware projektet az Intel fejlesztette ki, hogy nyílt firmware-t hozzon létre a hangfeldolgozáshoz kapcsolódó DSP chipekhez (később a Google is csatlakozott a fejlesztéshez). Jelenleg a projekt már előkészítette az Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake és IceLake platformok hangchipjeinek firmware-ének felfedezését;
    • Az Intel DRM-illesztőprogram (i915) támogatja a chipeket
      Elkhartlake (Gen11). PCI azonosítók hozzáadva a Comet Lake (Gen9) chipekhez. Az Icelake chipek támogatása stabilizálódott, amelyhez további PCI eszközazonosítók is kerültek.
      Bekapcsolva
      aszinkron váltás módja a videomemória két puffere között (aszinkron átfordítás), amikor írási műveleteket hajt végre mmio-n keresztül, ami jelentősen megnövelte egyes 3D alkalmazások teljesítményét (például a 3DMark Ice Storm tesztben a teljesítmény 300-400%-kal nőtt). Hozzáadott technológiai támogatás HDCP2.2 (Nagy sávszélességű digitális tartalomvédelem) a HDMI-n keresztül továbbított videojelek titkosításához;

    • Az amdgpu illesztőprogram Vega20 GPU-hoz tette hozzá a RAS (Reliability, Availability, Serviceability) támogatása és a Powerplay technológiát felváltó SMU 11 alrendszer kísérleti támogatása. Vega12 GPU-hoz tette hozzá BACO mód támogatása (Bus Active, Chip Off). Hozzáadott kezdeti támogatás az XGMI-hez, egy nagy sebességű buszhoz (PCIe 4.0) a GPU-összeköttetéshez. A hiányzó azonosítók a Polaris10 GPU-n alapuló kártyákhoz hozzáadva az amdkfd illesztőprogramhoz;
    • A Nouveau meghajtó támogatja az NVIDIA Turing 117 lapkakészleten alapuló kártyákat (TU117, a GeForce GTX 1650-ben használják). BAN BEN
      kconfig tette hozzá a libdrm jelenlegi kiadásaiban már nem használt elavult funkciók letiltásának beállítása;

    • Az „idővonal” szinkronizálási objektumok támogatása hozzáadásra került a DRM API-hoz és az amdgpu illesztőprogramhoz, lehetővé téve a klasszikus blokkolás nélkül.
    • A VirtualBox virtuális GPU vboxvideo illesztőprogramja átkerült az átmeneti ágból a fő struktúrába;
    • Hozzáadott sebességvezérlő meghajtó a GFX SoC ASPEED chiphez;
    • Az ARM SoC és Intel Agilex (SoCFPGA), NXP i.MX8MM, Allwinner (RerVision H3-DVK (H3), Oceanic 5205 5inMFD, ,Beelink GS2 (H6), Orange Pi 3 (H6), Rockchip (Orange Pi) támogatása hozzáadva ) táblák RK3399, Nanopi NEO4, Veyron-Mighty Chromebook), Amlogic: SEI Robotics SEI510,
      ST Micro (stm32mp157a, stm32mp157c), NXP (
      Eckelmann ci4x10 (i.MX6DL),

      i.MX8MM EVK (i.MX8MM),

      ZII i.MX7 RPU2 (i.MX7),

      ZII SPB4 (VF610),

      Zii Ultra (i.MX8M),

      TQ TQMa7S (i.MX7Solo),

      TQ TQMa7D (i.MX7Dual),

      Kobo Aura (i.MX50),

      Menlosystems M53 (i.MX53)), NVIDIA Jetson Nano (Tegra T210).

Ugyanakkor a Latin-Amerikai Szabad Szoftver Alapítvány alakított
opció teljesen ingyenes kernel 5.2 - Linux-mentes 5.2-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ás tartalmazza a fájlfeltöltést
Hang Nyissa meg a firmware-t. A blobok betöltése az illesztőprogramokban le van tiltva
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp és ucsi_ccg. Frissült a blobtisztító kód az ixp4xx, imx-sdma, amdgpu, nouveau és goya illesztőprogramokban és alrendszerekben, valamint a mikrokód dokumentációjában. Az eltávolítás miatt leállt a foltok tisztítása az r8822be illesztőprogramban.

Forrás: opennet.ru

Hozzászólás