Linux 5.15 kernel kiadás

Két hónapos fejlesztés után Linus Torvalds bemutatta a Linux kernel 5.15 kiadását. A figyelemre méltó változások a következők: új NTFS-illesztőprogram írástámogatással, ksmbd modul SMB-kiszolgáló implementációval, DAMON alrendszer a memóriaelérés figyeléséhez, valós idejű zárolási primitívek, fs-verity támogatás a Btrfs-ben, process_mrelease rendszerhívás az éhezésreagáló rendszerek memóriájához, távoli hitelesítési modul dm-ima.

Az új verzió 13499 1888 javítást tartalmaz 42 10895 fejlesztőtől, a patch mérete 632522 MB (a változtatások 299966 45 fájlt érintettek, 5.15 14 kódsor került hozzáadásra, 14 6 sor törölve lett). Az 3-ben bevezetett változtatások körülbelül XNUMX%-a az eszközillesztőkkel kapcsolatos, a változtatások körülbelül 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 kernel átvette az NTFS fájlrendszer új megvalósítását, amelyet a Paragon Software nyitott meg. Az új illesztőprogram írási módban is működik, és támogatja az NTFS 3.1 jelenlegi verziójának összes funkcióját, beleértve a kiterjesztett fájlattribútumokat, a hozzáférési listákat (ACL), az adattömörítési módot, a hatékony munkát a fájlok üres helyeivel (ritka) és a változtatások újrajátszását a napló az integritás helyreállításához hibák után.
    • A Btrfs fájlrendszer támogatja az fs-verity mechanizmust, amely az egyes fájlok integritásának és hitelességének átlátható szabályozására szolgál a metaadat-területen tárolt fájlokhoz társított kriptográfiai kivonatok vagy kulcsok segítségével. Korábban az fs-verity csak Ext4 és F2fs fájlrendszerekhez volt elérhető.

      A Btrfs emellett támogatja a felhasználói azonosítók leképezését a csatlakoztatott fájlrendszerekhez (korábban FAT, ext4 és XFS fájlrendszerekhez támogatott). Ez a funkció lehetővé teszi egy adott felhasználó fájljainak összehasonlítását egy felcsatolt idegen partíción a jelenlegi rendszer másik felhasználójával.

      A Btrfs további módosításai a következők: a kulcsok gyorsabb hozzáadása a címtárindexhez a fájlkészítési teljesítmény javítása érdekében; a raid0 egy eszközzel és a raid10 kettővel való működésének képessége (például a tömb újrakonfigurálása során); a „rescue=ibadroots” opció a helytelen kiterjedési fa figyelmen kívül hagyásához; a „küldés” művelet felgyorsítása; a zárolási konfliktusok csökkentése az átnevezési műveletek során; 4K szektorok használatának képessége 64K memóriaoldalmérettel rendelkező rendszereken.

    • Az XFS-ben stabilizálódott a 2038 utáni dátumok használatának lehetősége a fájlrendszerben. Bevezetett egy mechanizmust az inode késleltetett deaktiválására, valamint támogatja a késleltetett telepítést és a fájlattribútumok eltávolítását. A problémák kiküszöbölése érdekében a már felcsatolt partíciók lemezkvótáinak letiltásának lehetősége megszűnt (a kvótákat erőszakosan letilthatja, de a hozzájuk tartozó számítás folytatódik, ezért a teljes letiltáshoz újra kell csatlakoztatni).
    • Az EXT4-ben dolgoztak a delalloc pufferek írásának és az árva fájlok feldolgozásának teljesítményén, amelyek továbbra is léteznek, mivel nyitva maradnak, de nincsenek könyvtárhoz társítva. Az eldobási műveletek feldolgozása kikerült a jbd2 kthread szálból, hogy elkerülje a metaadatokkal végzett műveletek blokkolását.
    • Az F2FS hozzáadta a "discard_unit=block|segment|section" opciót az eldobási műveletek összerendeléséhez (a felszabadult blokkok megjelölése, amelyek fizikailag már nem tárolhatók) a blokkhoz, szektorhoz, szegmenshez vagy szakaszhoz viszonyított igazításhoz. Támogatás hozzáadva az I/O késleltetés változásainak nyomon követéséhez.
    • Az EROFS (Extendable Read-Only File System) fájlrendszer közvetlen I/O támogatást ad a tömörítés nélkül mentett fájlokhoz, valamint a fiemap támogatást.
    • Az OverlayFS megvalósítja az "immutable", "csak hozzáfűzés", "sync" és "noatime" csatolási jelzők helyes kezelését.
    • Az NFS javította azon helyzetek kezelését, amikor az NFS-kiszolgáló nem válaszol a kérésekre. A már használatban lévő, de más hálózati címen keresztül elérhető szerverről történő csatlakoztatás lehetősége hozzáadva.
    • Megkezdődtek az előkészületek az FSCACHE alrendszer újraírására.
    • Támogatás hozzáadva az EFI-partíciókhoz a GPT-táblák nem szabványos elhelyezésével.
    • A fanotify mechanizmus egy új FAN_REPORT_PIDFD jelzőt valósít meg, ami miatt a pidfd szerepel a visszaadott metaadatokban. A Pidfd segít a PID-újrahasználati helyzetek kezelésében a felügyelt fájlokhoz hozzáférő folyamatok pontosabb azonosítása érdekében (a pidfd egy adott folyamathoz van társítva, és nem változik, míg a PID társítható egy másik folyamathoz, miután az adott PID-hez társított jelenlegi folyamat leáll).
    • A move_mount() rendszerhíváshoz hozzáadtuk a meglévő megosztott csoportokhoz csatolási pontok hozzáadásának lehetőségét, amely megoldja a folyamatállapot mentésével és visszaállításával kapcsolatos problémákat a CRIU-ban, ha több beillesztési terület van megosztva az elszigetelt tárolókban.
    • Hozzáadott védelem a rejtett versenyfeltételek ellen, amelyek potenciálisan fájlsérülést okozhatnak a gyorsítótár olvasása közben a fájlban lévő üregek feldolgozása közben.
    • Megszűnt a kötelező (kötelező) fájlzárolás támogatása, amelyet olyan blokkoló rendszerhívásokkal valósítanak meg, amelyek fájlváltozáshoz vezetnek. A lehetséges versenykörülmények miatt ezeket a zárakat megbízhatatlannak tekintették, és sok évvel ezelőtt elavulttá váltak.
    • A LightNVM alrendszert eltávolították, amely lehetővé tette az SSD-meghajtó közvetlen elérését az emulációs réteg megkerülésével. A LightNVM értelmét vesztette a zónázást biztosító NVMe szabványok (ZNS, Zoned Namespace) megjelenése után.
  • Memória- és rendszerszolgáltatások
    • Megvalósult a DAMON (Data Access MONitor) alrendszer, amely lehetővé teszi a RAM-ban lévő adatok elérésével kapcsolatos tevékenységek nyomon követését a felhasználói térben futó kiválasztott folyamattal kapcsolatban. Az alrendszer lehetővé teszi annak elemzését, hogy a folyamat mely memóriaterületekhez jutott el teljes működése során, és mely memóriaterületek maradtak kihasználatlanok. A DAMON alacsony CPU-terhelést, alacsony memóriafogyasztást, nagy pontosságot és kiszámítható, mérettől független állandó többletterhelést kínál. Az alrendszert egyaránt használhatja a kernel a memóriakezelés optimalizálására, a felhasználói térben lévő segédprogramok pedig arra, hogy megértsék, pontosan mit csinál egy folyamat, és optimalizálhatja a memóriahasználatot, például felszabadítva a többletmemóriát a rendszer számára.
    • A process_mrelease rendszerhívást a végrehajtást befejező folyamat memóriafelszabadításának felgyorsítására valósították meg. Normál körülmények között az erőforrások felszabadítása és a folyamat leállítása nem azonnali, és különböző okok miatt késhet, megzavarva a felhasználói memória korai reagálási rendszereit, például az oomd-t (a systemd biztosítja) és az lmkd-t (az Android használja). A process_mrelease meghívásával az ilyen rendszerek kiszámíthatóbban kiválthatják a memória visszanyerését a kényszerített folyamatokból.
    • A valós idejű működés támogatását fejlesztő PREEMPT_RT kernelágból átkerültek az RT-Mutex alrendszeren alapuló mutex, ww_mutex, rw_semaphore, spinlock és rwlock zárrendszerezési primitívek változatai. Változások kerültek hozzáadásra a SLUB födémleosztóhoz, hogy javítsák a PREEMPT_RT üzemmódban való működést, és csökkentsék a megszakításokra gyakorolt ​​hatást.
    • A SCHED_IDLE feladatütemező attribútum támogatása hozzáadásra került a cgrouphoz, amely lehetővé teszi, hogy ezt az attribútumot biztosítsa egy adott cgroup csoport minden folyamatához. Azok. ezek a folyamatok csak akkor futnak le, ha nincs más, végrehajtásra váró feladat a rendszeren. Ellentétben a SCHED_IDLE attribútum minden egyes folyamathoz történő külön beállításával, amikor a SCHED_IDLE cgrouphoz kötődik, a végrehajtandó feladat kiválasztásakor figyelembe veszi a csoporton belüli feladatok relatív súlyát.
    • A cgroup memóriafelhasználásának elszámolásának mechanizmusa kibővült azzal a lehetőséggel, hogy nyomon követhető további kernel adatszerkezetek, beleértve a lekérdezéshez, jelfeldolgozáshoz és névterekhez létrehozottakat is.
    • Támogatás hozzáadva a feladatok processzormagokhoz való kötésének aszimmetrikus ütemezéséhez olyan architektúrákon, amelyekben egyes CPU-k 32 bites feladatok végrehajtását teszik lehetővé, míg mások csak 64 bites módban működnek (például ARM). Az új mód lehetővé teszi, hogy csak a 32 bites feladatokat támogató CPU-kat vegye figyelembe a 32 bites feladatok ütemezésekor.
    • Az io_uring aszinkron I/O interfész mostantól támogatja a fájlok közvetlen megnyitását a rögzített fájl indextáblájában, fájlleíró használata nélkül, ami lehetővé teszi bizonyos típusú műveletek jelentős felgyorsítását, de szembemegy a fájlleírók használatának hagyományos Unix eljárásával. fájlok megnyitásához.

      Az io_uring a BIO (Block I/O Layer) alrendszerhez egy új újrahasznosítási mechanizmust („BIO újrahasznosítás”) valósít meg, amely csökkenti a belső memória kezelésének többletköltségét, és körülbelül 10%-kal növeli a másodpercenkénti feldolgozott I/O műveletek számát. . Az io_uring az mkdirat(), a symlinkat() és a linkat() rendszerhívásokat is támogatja.

    • A BPF programok esetében lehetőség van időzítő események kérésére és feldolgozására. Bekerült a UNIX socketekhez való iterátor, és megvalósult a setsockopt socketopciók lekérésének és beállításának képessége. A BTF dömper mostantól támogatja a gépelt adatokat.
    • A különböző teljesítményű memóriával rendelkező NUMA rendszereken a szabad hely kimerülésekor a kiürített memórialapok a dinamikus memóriából (DRAM) a lassabb állandó memóriába (Persistent Memory) kerülnek át ahelyett, hogy törölnék ezeket az oldalakat. A tesztek kimutatták, hogy az ilyen taktikák általában javítják az ilyen rendszerek teljesítményét. A NUMA lehetőséget biztosít memórialapok lefoglalására egy folyamathoz a NUMA csomópontok kiválasztott készletéből.
    • Az ARC architektúra esetében a három- és négyszintű memórialaptáblázatok támogatása valósult meg, ami tovább teszi lehetővé a 64 bites ARC processzorok támogatását.
    • Az s390 architektúra esetében lehetőség van a KFENCE mechanizmus használatára a memóriával végzett munka során fellépő hibák észlelésére, és hozzáadásra került a KCSAN versenyállapot-érzékelő támogatása.
    • Támogatás hozzáadva a printk()-en keresztül kiadott üzenetek listájának indexeléséhez, lehetővé téve az összes ilyen üzenet egyidejű lekérését és a felhasználói tér változásainak nyomon követését.
    • Az mmap() eltávolította a VM_DENYWRITE beállítás támogatását, és a kernelkódot eltávolították a MAP_DENYWRITE mód használatából, ami csökkentette az olyan helyzetek számát, amelyek az ETXTBSY hibával rendelkező fájlba történő írás blokkolásához vezetnek.
    • A nyomkövetési alrendszerhez új típusú ellenőrzések, az „Eseménypróbák” kerültek, amelyek a meglévő nyomkövetési eseményekhez kapcsolhatók, saját kimeneti formátumot definiálva.
    • Amikor a rendszermagot a Clang fordítóval építjük fel, az LLVM projekt alapértelmezett assemblerjét használjuk.
    • A fordító által kiadott figyelmeztetésekhez vezető kód kernelének megszabadítására irányuló projekt részeként egy kísérletet hajtottak végre az alapértelmezés szerint engedélyezett „-Wrror” móddal, amelyben a fordítói figyelmeztetések hibaként kerülnek feldolgozásra. Az 5.15-ös kiadásra való felkészülés során Linus csak azokat a változtatásokat kezdte elfogadni, amelyek nem eredményeztek figyelmeztetést a kernel felépítésekor, és engedélyezte a "-Werror" használatával történő építkezést, de aztán egyetértett abban, hogy egy ilyen döntés korai volt, és késleltette a "-Werror" alapértelmezett engedélyezését. . A „-Wrror” jelző beépítése az összeállítás során a WERROR paraméterrel vezérelhető, amely alapértelmezés szerint a COMPILE_TEST, azaz. Egyelőre csak tesztverziókhoz engedélyezett.
  • Virtualizáció és biztonság
    • Az IMA (Integrity Measurement Architecture) alrendszeren alapuló távoli hitelesítési mechanizmus megvalósításával egy új dm-ima kezelő került a Device Mapper-be (DM), amely lehetővé teszi egy külső szolgáltatás számára a kernel alrendszerek állapotának ellenőrzését hitelességük biztosítása érdekében. . A gyakorlatban a dm-ima lehetővé teszi a Device Mapper segítségével olyan tárolók létrehozását, amelyek külső felhőrendszerekhez vannak kapcsolva, amelyekben az elindított DM célkonfiguráció érvényességét az IMA segítségével ellenőrzik.
    • A prctl() egy új PR_SPEC_L1D_FLUSH opciót valósít meg, amely engedélyezése esetén a kernel minden kontextusváltáskor kiüríti az első szintű (L1D) gyorsítótár tartalmát. Ez a mód szelektíven a legfontosabb folyamatok számára lehetővé teszi, hogy további védelmet valósítson meg az oldalcsatornás támadásokkal szemben, amelyek célja a CPU-ban végrehajtott utasítások spekulatív végrehajtása által okozott sebezhetőségek eredményeként a gyorsítótárban megtelepedett adatok meghatározása. A PR_SPEC_L1D_FLUSH (alapértelmezés szerint nincs engedélyezve) engedélyezésének költsége jelentős teljesítménybüntetés.
    • Lehetőség van a kernel felépítésére a „-fzero-call-used-regs=used-gpr” jelző GCC-hez való hozzáadásával, amely biztosítja, hogy minden regiszter nullára álljon, mielőtt visszaadná a vezérlést a függvényből. Ez az opció lehetővé teszi, hogy védelmet nyújtson a funkciókból származó információszivárgás ellen, és 20%-kal csökkentse a ROP (Return-Oriented Programming) modulok építésére alkalmas blokkok számát az exploitokban.
    • Megvalósult az ARM64 architektúra rendszermagjainak létrehozása a Hyper-V hypervisor számára kliensek formájában.
    • Egy új, „VDUSE” illesztőprogram-fejlesztési keretrendszert javasolnak, amely lehetővé teszi virtuális blokkeszközök implementálását a felhasználói térben, és a Virtio használatát a vendégrendszerekből való hozzáféréshez.
    • Hozzáadott Virtio illesztőprogram az I2C buszhoz, lehetővé téve az I2C vezérlők emulálását paravirtualizációs módban külön háttérprogramok használatával.
    • Hozzáadtuk a Virtio gpio-virtio illesztőprogramot, hogy a vendégek hozzáférhessenek a gazdagép rendszer által biztosított GPIO-vonalakhoz.
    • A DMA-támogatással rendelkező eszközmeghajtók memóriaoldalaihoz való hozzáférés korlátozásának lehetősége hozzáadva I/O MMU (memóriakezelő egység) nélküli rendszereken.
    • A KVM hypervisor képes statisztikákat megjeleníteni lineáris és logaritmikus hisztogramok formájában.
  • Hálózati alrendszer
    • A ksmbd modul egy SMB3 protokollt használó fájlkiszolgáló megvalósításával került a kernelhez. A modul kiegészíti a kernelben korábban elérhető SMB-kliens implementációt, és a felhasználói térben futó SMB-kiszolgálóval ellentétben hatékonyabb a teljesítmény, a memóriafelhasználás és a fejlett kernel-képességekkel való integráció szempontjából. A Ksmbd-t nagy teljesítményű, beágyazott Samba-bővítményként hirdetik, amely szükség szerint integrálható a Samba-eszközökkel és -könyvtárakkal. A ksmbd képességei közé tartozik az elosztott fájlgyorsítótárazási technológia (SMB-bérlet) továbbfejlesztett támogatása a helyi rendszereken, ami jelentősen csökkentheti a forgalmat. A jövőben tervezik az RDMA ("smbdirect") és protokollbővítmények támogatását a titkosítás és a digitális aláírással történő ellenőrzés megbízhatóságának növelése érdekében.
    • A CIFS kliens már nem támogatja az NTLM-et és az SMB1 protokollban használt gyengébb DES-alapú hitelesítési algoritmusokat.
    • A multicast támogatást a VLAN-ok hálózati hidainak megvalósításában valósítják meg.
    • A hálózati interfészek aggregálására használt bonding illesztőprogram kiegészítette az XDP (eXpress Data Path) alrendszer támogatásával, amely lehetővé teszi a hálózati csomagok kezelését abban a szakaszban, mielőtt azokat a Linux kernel hálózati verem feldolgozná.
    • A mac80211 vezeték nélküli verem támogatja a 6 GHZ-es STA-t (Special Temporary Authorization) LPI, SP és VLP módban, valamint az egyéni TWT (Target Wake Time) beállítását hozzáférési pont módban.
    • Hozzáadott támogatás az MCTP-hez (Management Component Transport Protocol), amelyet a felügyeleti vezérlők és a kapcsolódó eszközök (gazdaprocesszorok, perifériás eszközök stb.) közötti interakcióhoz használnak.
    • 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 a fullmesh módú címeket.
    • Az SRv6 (Segment Routing IPv6) protokollba foglalt hálózati adatfolyamok kezelői hozzáadásra kerültek a netfilterhez.
    • Hozzáadott sockmap támogatás a Unix streaming socketekhez.
  • Оборудование
    • Az amdgpu illesztőprogram támogatja a Cyan Skillfish APU-kat (Navi 1x GPU-kkal felszerelve). A Yellow Carp APU mostantól támogatja a videokodekeket. Továbbfejlesztett Aldebaran GPU támogatás. Új térképazonosítók hozzáadva a GPU Navi 24 „Beige Goby” és az RDNA2 alapján. Javasoljuk a virtuális képernyők (VKMS) jobb megvalósítását. Támogatták az AMD Zen 3 chipek hőmérsékletének figyelését.
    • Az amdkfd illesztőprogram (diszkrét GPU-khoz, például a Polarishoz) egy megosztott virtuális memóriakezelőt (SVM, megosztott virtuális memória) valósít meg a HMM (Heterogeneous memory management) alrendszer alapján, amely lehetővé teszi a saját memóriakezelő egységgel (MMU) rendelkező eszközök használatát. , memóriakezelő egység), amely hozzáfér a fő memóriához. 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 Intel videokártyák i915-ös illesztőprogramja kibővíti a TTM videomemória-kezelő használatát, és magában foglalja az energiafogyasztás kezelésének lehetőségét a GuC (Graphics micro Controller) alapján. Megkezdődtek az előkészületek az Intel ARC Alchemist grafikus kártya és az Intel Xe-HP GPU támogatásának megvalósítására.
    • Az új illesztőprogram DPCD (DisplayPort Configuration Data) segítségével valósítja meg az eDP-panelek háttérvilágításának vezérlését.
    • Adreno 7c Gen 3 és Adreno 680 GPU-k támogatása hozzáadva az msm illesztőprogramhoz.
    • Az IOMMU illesztőprogram az Apple M1 chiphez van implementálva.
    • Hozzáadott hang-illesztőprogram az AMD Van Gogh APU-kon alapuló rendszerekhez.
    • A Realtek R8188EU illesztőprogram hozzáadásra került az átmeneti ághoz, amely felváltotta az illesztőprogram régi verzióját (rtl8188eu) a Realtek RTL8188EU 802.11 b/g/n vezeték nélküli chipekhez.
    • A Meta (Facebook) által fejlesztett PCIe kártyához egy miniatűr atomóra és egy GNSS vevő megvalósításával került bele az ocp_pt driver, amivel külön pontos időszinkronizáló szerverek működését lehet megszervezni.
    • Hozzáadott támogatás a Sony Xperia 10II (Snapdragon 665), Xiaomi Redmi 2 (Snapdragon MSM8916), Samsung Galaxy S3 (Snapdragon MSM8226), Samsung Gavini/Codina/Kyle okostelefonokhoz.
    • Támogatás hozzáadva az ARM SoС és az NVIDIA Jetson TX2 NX fejlesztői készlethez, Sancloud BBE Lite, PicoITX, DRC02, SolidRun SolidSense, SKOV i.MX6, Nitrogen8, Traverse Ten64, GW7902, Microchip SAMA7, ualcomm RDM636 Snapdra8150/SSM3 kártyák -2G/M3e-2G, Marvell CN913x, ASpeed ​​​​AST2600 (Facebook Cloudripper, Elbert és Fuji szerverkártyák), 4KOpen STiH418-b2264.
    • Támogatás hozzáadva a Gopher 2b LCD panelekhez, EDT ETM0350G0DH6/ETMV570G2DHU, LOGIC Technologies LTTD800480070-L6WH-RT, Multi-Innotechnology MI1010AIT-1CP1, Innolux EJ030NA 3.0B9341B3300, EJ33NA, EJ20NA 7430ili2401k. ATNAXNUMXXCXNUMX XNUMX, Samsung DBXNUMX, WideChips WSXNUMX .
    • Hozzáadott LiteETH-illesztőprogram, amely támogatja a LiteX szoftver SoC-jaiban használt Ethernet-vezérlőket (FPGA-khoz).
    • Az usb-audio-illesztőprogramhoz egy alacsony késleltetésű opciót adtunk, amely szabályozza, hogy a minimális késleltetési módba beépíthető-e a művelet. Szintén hozzáadva a quirk_flags opciót az eszközspecifikus beállítások átadásához.

Ezzel egy időben a Latin American Free Software Foundation létrehozta a teljesen ingyenes kernel 5.15 - Linux-libre 5.15-gnu verzióját, amely megtisztította a nem szabad komponenseket vagy kódrészeket tartalmazó firmware-elemektől és illesztőprogramoktól, amelyek hatóköre korlátozott. a gyártó által. Az új kiadás a tisztítás befejezéséről szóló üzenetet valósítja meg a naplóba. A csomagok mkspec használatával történő generálásával kapcsolatos problémák kijavításra kerültek, a snap csomagok támogatása javult. Eltávolítottunk néhány figyelmeztetést, amelyek a firmware.h fejlécfájl feldolgozása során jelennek meg. Engedélyezett bizonyos típusú figyelmeztetések („extra-args”, megjegyzések, nem használt függvények és változók) kimenete a „-Hiba” módban történő építés során. Hozzáadott gehc-achc illesztőprogram-tisztítás. Frissített blob-tisztító kód az adreno, btusb, btintel, brcmfmac, aarch64 qcom illesztőprogramokban és alrendszerekben. A prism54 (eltávolítva) és az rtl8188eu (helyére az r8188eu) illesztőprogramok tisztítása leállt.

Forrás: opennet.ru

Hozzászólás