A Linux 5.9 kernel kiadása

Két hónap fejlesztés után Linus Torvalds bemutatott a kernel kiadás Linux 5.9. A legfontosabb változások között szerepel: a jelképek importálásának korlátozása a GPL modulokból származó, a FSGSBASE processzor-instrukció segítségével gyorsított kontextusváltási műveletek, a Zstd segítségével történő kernel kép tömörítés támogatása, áttervezett prioritásrend a kernel szálak számára, a PRP (Parallel Redundancy Protocol) protokoll támogatása, a költségvetés figyelembevételével történő ütemezés a deadline ütemezőben, előzetes memóriaoldal-csomagolás, CAP_CHECKPOINT_RESTOR capability zászló, close_range() rendszerhívás, a dm-crypt teljesítményének javítása, a 32 bites Xen PV vendég rendszerekhez való kód eltávolítása, új slab memória menedzsment mechanizmus, „rescue” opció a Btrfs-en, inline titkosítás támogatás az ext4 és F2FS számára.

Az új verzióhoz 16074 javítás érkezett 2011 fejlesztőtől,
a patch mérete 62 MB (a változások 14548 fájlt érintenek, 782155 kódsort adtak hozzá, 314792 sort töröltek). Körülbelül 45% az 5.9-ben megadottakból
az eszközmeghajtókkal kapcsolatos, körülbelül 15% a
to updating architecture-specific code, 13%
a hálózati stackkel, 3% a fájlrendszerekkel és 3% a belső
kernel alrendszerekkel kapcsolatos.

Fő újdonságok:

  • Memória és rendszerszolgáltatások
    • stabil rendezési algoritmus, amelynél a különböző futások során megmarad az azonos értékű elemek sorrendje. a GPL interfészek használatának védelme, a proprietárius meghajtók kernelkomponensekkel való összekötéséhez, amelyek csak GPL licenc alatt állnak. A TAINT_PROPRIETARY_MODULE zászló mostantól minden modulra öröklődik, amely jelképeket importál az ezen zászlóval rendelkező modulokból. Ha egy GPL modul megpróbálja importálni a nem GPL modulok jelképeit, akkor ez a GPL modul átveszi a TAINT_PROPRIETARY_MODULE címkét, és nem tud hozzáférni a GPL licenc alatt álló modulok számára elérhető kernelkomponensekhez, még akkor sem, ha a modul korábban importálta a „gplonly” kategóriából származó jelképeket. A fordított blokkolás (csak az EXPORT_SYMBOL_GPL exportálása azokban a modulokban, amelyek importálták az EXPORT_SYMBOL_GPL-t), amely megsértené a proprietárius meghajtók működését, nem valósult meg (csak a proprietárius modul zászló öröklődik, de nem a GPL kötelezések).
    • Hozzáadva kcompactd mechanizmus támogatása a memóriaoldalak előzetes csomagolásához háttérben, lehetővé téve a memória nagy lapjainak számának növelését a mag számára. Előzetes becslések szerint a háttércsomagolás minimális költségek mellett 70-80-szor csökkentheti a nagy lapok (huge-page) kiosztásának késleltetését a korábban alkalmazott, igény szerinti csomagolási mechanizmushoz képest. A kcompactd által biztosított külső fragmentáció határainak megadásához hozzáadták a sysctl vm.compaction_proactiveness-t.
    • Hozzáadva a kernelt képének tömörítése algoritmus használatával Zstandard (zstd).
    • x86 rendszerekhez megvalósult a processzor utasítás támogatás FSGSBASE, amely lehetővé teszi az FS/GS regiszterek tartalmának olvasását és módosítását felhasználói térből. A FSGSBASE a kernelben a kontextusváltási műveletek gyorsítására használatos, mivel eltávolítja a felesleges MSR írási műveleteket a GSBASE számára, míg felhasználói térben lehetővé teszi a felesleges rendszerhívások elkerülését az FS/GS módosításához.
    • az „Alkalmazás” eszköz az „allow_writes” paraméter, amely lehetővé teszi a mag MSR regisztereinek felhasználói térből történő módosításának megtiltását, és a regiszterek tartalmához való hozzáférést olvasási műveletekre korlátozza, mivel az MSR módosítása problémákhoz vezethet. Alapértelmezés szerint az írásmód jelenleg nincs letiltva, és az MSR módosításai a naplóban jelennek meg, de a jövőben a hozzáférést alapértelmezetten csak olvasási üzemmódra tervezik átkonfigurálni.
    • Az aszinkron bemenet/kimenet interfésze io_uring tökéletesítették az aszinkron puffertolási műveletek teljes támogatását, amelyek nem igényelnek kernel szálakat. A írás támogatása a következő kiadásban várható.
    • A deadline I/O ütemezőben megvalósult a sávszélesség figyelembevételével történik az ütemezés, lehetővé téve helyes döntések meghozatalára aszimmetrikus rendszerekben, mint például ARM architektúrára épülő rendszerek DynamIQ és big.LITTLE, amelyek egy chipen ötvöznek erőteljes és energiatakarékos, kevésbé teljesítményorientált CPU magokat. Különösen az új üzemmód lehetővé teszi a tervezési eltérések elkerülését, amikor egy lassú CPU mag nem rendelkezik elegendő erőforrással a feladat határidőn belüli végrehajtásához.
    • Az energiamodell keretrendszer most már leírja nemcsak a CPU energiagazdálkodási viselkedését, hanem a perifériás eszközöket is lefedi.
    • Megvalósították a close_range() rendszerhívást, amely lehetővé teszi egy folyamat számára, hogy egyszerre zárjon be egy teljes tartományt az nyitott fájlleírókból.
    • A szöveges konzol és az fbcon meghajtó megvalósításából eltávolítva a kódot, amely lehetővé teszi a szöveg programozott visszagörgetését (CONFIG_VGACON_SOFT_SCROLLBACK) a VGA szöveges mód videomemóriájának mennyiségénél nagyobb mértékben.
    • Átdolgozásra került prioritások kiosztásának algoritmusát a kernel belsejében. Az új változat jobb konzisztenciát biztosít a kernel összes alrendszerében a valós idejű feladatok prioritásának kiosztásakor.
    • Hozzáadva sysctl sched_uclamp_util_min_rt_default a CPU frekvenciakényszer paramétereinek kezeléséhez valós idejű feladatok esetén (például lehetővé teszi a valós idejű feladatok végrehajtásának viselkedésének dinamikus megváltoztatását energiamegtakarítás céljából akkumulátorról történő működés esetén vagy hordozható rendszereken).
    • Előkészületek készültek a Transparent Huge Pages technológia támogatásának megvalósítására a lapkészletben.
    • A fanotify mechanizmusban új zászlók kerültek bevezetésre, FAN_REPORT_NAME és FAN_REPORT_DIR_FID, hogy információkat adjanak a szülőnévről és az események bekövetkezésekor a katalógus elemeinek létrehozásáról, törléséről vagy áthelyezéséről szóló egyedi FID azonosítóról, amelyek nem kapcsolódnak katalógusobjektumokhoz.
    • A cgroups számára megvalósították új slab memóriaelosztó vezérlő, amely híres arról, hogy a slab nyilvántartást a memóriaoldalak szintjéről a kernel objektumok szintjére helyezi át, lehetővé téve a slab-oldalak közös használatát különböző cgroupokban, ahelyett, hogy minden cgrouphoz külön slab cache-t alakítanának ki. A javasolt megközelítés növeli a slab felhasználásának hatékonyságát, 30-45%-kal csökkenti a slab memória méretét, jelentősen csökkenti a kernel által használt összes memória mennyiségét és csökkenti a memóriafragmentációt.
    • A hangalrendszerben ALSA és USB-stackben, a Linux kernelben használandó inkluzív terminológiára vonatkozó ajánlásokkal összhangban megtörtént a politikailag nem korrekt kifejezések tisztítása. A kód ki lett tisztítva a „slave”, „master”, „blacklist” és „whitelist” szavak használatától. a nemrégiben elfogadott Amikor a kernelt a Clang fordító használatával építik
  • Virtualizáció és biztonság
    • lehetőség áll rendelkezésre (CONFIG_INIT_STACK_ALL_ZERO) az összes, a stackben tárolt változó automatikus nullára inicializálásának beállítására (az építés során „-ftrivial-auto-var-init=zero” megadása mellett). megjelenik A seccomp alrendszerbe, a felhasználói térben végzett folyamatellenőrzési mód használata esetén,
    • A seccomp alrendszerbe, felhasználói módban a folyamatellenőrzés használatakor, hozzáadva lett lehetőség helyettesítések a fájlrendszer-feldolgozó folyamatok követésében a rendszerhívások teljes emulációjához, amelyek fájlleírók létrehozásához vezetnek. Ez a funkcionalitás igényelt a szigetelt konténerek rendszereiben és a Chrome sandbox megvalósításaiban.
    • Az xtensa és csky architektúrákhoz hozzáadták a rendszerhívások korlátozásának támogatását a seccomp alrendszeren keresztül. Az xtensa esetében emellett megvalósították az audit mechanizmus támogatását is.
    • az „Alkalmazás” eszköz új capability-jelző CAP_CHECKPOINT_RESTORE, amely lehetővé teszi a további helyi privilégiumok átadása nélküli hozzáférést a folyamatok állapotának fagyasztásával és helyreállításával kapcsolatos funkciókhoz.
    • A GCC 11-ben megvalósították az összes olyan funkciót, amely szükséges a
      KCSAN (Kernel Concurrency Sanitizer) hibakereső eszköz használatához, amely a magon belüli versenyállapotok dinamikus észlelésére szolgál. Így a KCSAN mostantól használható a GCC-ben fordított magokkal.
    • AMD Zen és újabb CPU modellek számára hozzáadva lett a P2PDMA technológia támogatása, amely lehetővé teszi a DMA használatát az adatok közvetlen átvitelére két PCI-buszra csatlakozó eszköz között.
    • A dm-crypt-ben egy módot adtak hozzá, amely lehetővé teszi a késleltetések csökkentését az adatok kriptográfiai feldolgozásának várakozási sorok nélkül történő végrehajtásával. Ez a mód elengedhetetlen a zónázott blokk-eszközökkel kapcsolatban (olyan eszközök, amelyeknek területeit sorban kell írni, frissítve az egész blokkcsoportot). A dm-crypt teljesítményének növelésére és a késleltetések csökkentésére irányuló munkálatokat végeztek.
    • Eltávolították a 32 bites vendég rendszerek támogatásához szükséges kódot, amelyek a Xen hipervizor alatti paravirtualizációs módban működnek. Az ilyen rendszerek felhasználóinak javasolt a 64 bites magok használatára való áttérés a vendég környezetekben, vagy a paravirtualizáció (PV) helyett a teljes (HVM) vagy kombinált (PVH) virtualizációs módok használata.
  • Lemezszubszisztéma, bemenet/kipontozás és fájlrendszerek
    • In the Btrfs file system megvalósítva a „rescue” csatolási lehetőség, amely egységesíti a hozzáférést minden egyéb helyreállítási opcióhoz. Eltávolították az „alloc_start” és a „subvolrootid” opciók támogatását, a „inode_cache” opciót elavultnak nyilvánították. Teljesítmény-optimalizálás történt, különösen az fsync() műveletek végrehajtásának jelentős felgyorsulásával. Hozzáadva a CRC32c-től eltérő alternatív ellenőrző összeg típusok használatának lehetősége.
    • Hozzáadva Inline titkosítás (Inline Encryption) használata az ext4 és F2FS fájlrendszerekben, amelynek aktiválásához az 'inlinecrypt' opciót kell használni a csatlakoztatáskor. Az inline titkosítási mód lehetővé teszi a tárolóvezérlőbe épített titkosítási mechanizmusok kihasználását, amelyek átlátható titkosítást és visszafejtést végeznek a bemenet/kimenet során.
    • Az XFS fájlrendszerben biztosítva van inode törlés (flush) teljesen aszinkron módban, ami nem blokkolja a folyamatokat a memória tisztításakor végzett műveletek közben. Megoldották a régóta fennálló kvóta problémát, amely miatt hibásan követték nyomon a lágy határértékek túllépéséről szóló figyelmeztetéseket és az inode számát korlátozó előírásokat. Egységesítették a DAX támogatás megvalósítását az ext4 és xfs esetében.
    • Az Ext4-ben megvalósítva előrejelző betöltés a blokkok elosztási bitképeinek. Az inicializálatlan csoportok átkutatásának korlátozásával együtt az optimalizáció jelentősen csökkentette a nagyon nagy partíciók csatlakozási idejét.
    • F2FS-ben hozzáadva ioctl F2FS_IOC_SEC_TRIM_FILE, amely lehetővé teszi a TRIM/discard parancsok használatát a megadott fájlban található adatok fizikai nullázásához, például a hozzáférési kulcsok eltávolításához anélkül, hogy maradék adatok maradnának a tárolón.
      F2FS-ben szintén hozzáadva új szemétgyűjtési mód GC_URGENT_LOW, amely agresszívebben működik azáltal, hogy bizonyos ellenőrzéseket elhagy a szemétgyűjtő indítása előtt, ha inaktív állapotban van.
    • bcache esetében a bucket_size mérete 16 bitről 32 bitre nőtt az zónás eszközök cache-be való alkalmazásának előkészítése keretében.
    • A SCSI alrendszerhez hozzáadták az inline titkosítás használatának lehetőségét a beépített hardveres titkosítási eszközök alapján, amelyeket az UFS vezérlők biztosítanak (Universal Flash Storage).
    • Új kernel parancssori opciót adtak hozzá, 'debugfs', amely lehetővé teszi az azonos nevű pseudo-fájlrendszer elérhetőségének kezelését.
    • Az NFSv4.2 kliens támogatja a fájlok kibővített attribútumait (xattr).
    • A dm-dust hozzáadva interfésze, amely lehetővé teszi az összes felfedezett bad-blokk lista egyszerre történő megjelenítését a lemezen ('dmsetup message dust1 0 listbadblocks').
    • Az md/raid5 számára hozzáadták a /sys/block/md1/md/stripe_size paramétert a STRIPE-blokkméret beállításához.
    • NVMe tárolóeszközök számára hozzáadva lett támogatás a tároló zónázásához (ZNS, NVM Express Zoned Namespace) parancsokhoz, amely lehetővé teszi a tárolási tér zónákra bontását, amelyek blokk csoportokból állnak, hogy teljeskörűbben kezelni lehessen az adatok elhelyezését a tárolón.
  • Hálózati alrendszer
    • A Netfilter-ben hozzáadva lett A csomagok elutasításának lehetősége a Route-ellenőrzés előtti szakaszban (a REJECT kifejezés mostantól nemcsak az INPUT, FORWARD és OUTPUT láncokban, hanem a PREROUTING szakaszban is használható az icmp és tcp esetében).
    • Az nftables-ben hozzáadva lett a konfigurációs változásokkal kapcsolatos események auditálásának lehetősége.
    • Az nftables API-jában a netlink-en hozzáadva lett anonim láncok támogatása, amelynek neve dinamikusan kerül hozzárendelésre az operációs rendszer által. Az anon lánchoz kapcsolódó szabály eltávolításakor maga a lánc is automatikusan törlésre kerül.
    • A BPF-ben hozzáadva a iterátorok támogatása, amely lehetővé teszi az asszociatív tömbök (map) elemeinek bejárását, szűrését és módosítását anélkül, hogy az adatokat a felhasználói térbe másolnánk. Az iterátorok használhatók TCP és UDP socket-ekhez, így a BPF-programok képesek bejárni a nyitott socket-ek listáját és szükséges információkat kinyerni belőlük.
    • Új típusú BPF-program BPF_PROG_TYPE_SK_LOOKUP került hozzáadásra, amely a kernelnek a megfelelő figyelő socket keresésekor fut, lehetővé téve a döntéshozók létrehozását arról, hogy melyik socket-hez kell társítani a kapcsolatot, anélkül, hogy a bind() rendszerhívás keretei között lenne korlátozva. Például lehetséges az egyik socket összekapcsolása egy cím vagy port tartománnyal. Ezen kívül a bpf_setsockopt()-ba bele lett adva a SO_KEEPALIVE zászló támogatása és a BPF_CGROUP_INET_SOCK_RELEASE kezelők beállításának lehetősége, amelyeket a socket felszabadításakor hívnak meg.
    • A protokoll támogatása valósult meg PRP (Parallel Redundancy Protocol), amely lehetővé teszi az Ethernet alapú átlátható kapcsolást a tartalék csatornára bármely hálózati komponens meghibásodása esetén.
    • A mac80211 stack-ben hozzáadva lett a WPA/WPA2-PSK négylépcsős csatornaszabályozásának támogatása a hozzáférési pont módban.
    • Lehetővé vált a qdisc (üzenetkezelési szokás) ütemezőjének alapértelmezett módon a FQ-PIE (Flow Queue PIE) hálózati sorok kezelésének algoritmusra való váltása, célja a csomagok köztes pufferezésének (bufferbloat) negatív hatásainak csökkentése a kábelmodemekkel rendelkező hálózatokban.
    • Új funkciók kerültek bevezetésre az MPTCP (MultiPath TCP) rendszerében, a TCP protokoll bővítésében az TCP-kapcsolatok működésének megszervezésére, amelyek lehetővé teszik a csomagok egyidejű szállítását különböző hálózati interfészeken, amelyek különböző IP-címekhez vannak társítva. Megvalósításra került a syn cookie, a DATA_FIN, a pufferek automatikus beállítása, a socketek diagnosztikája, valamint a REUSEADDR, REUSEPORT és V6ONLY flagok használata a setsockopt-ban.
    • A VRF (Virtual Routing and Forwarding) virtuális forgalmi táblákhoz, amelyek lehetővé teszik a több routing domain egy rendszeren belüli működtetését, megvalósult a „strict” módban. Ebben a módban a virtuális táblát csak olyan routing táblával lehet társítani, amelyet más virtuális táblák nem használnak.
    • Az ath11k vezeték nélküli meghajtóban hozzáadva lett bevezetésre került a 6GHz frekvencia és a spektrális szkennelés támogatása..
  • Hardver
    • Eltávolításra került a UniCore architektúra támogatásának kódja, amelyet a Pekingi Egyetem mikroprocesszor-központja fejlesztett ki és a Linux kernelbe integráltak 2011-ben. Ez az architektúra 2014 óta támogatás nélkül áll, és a GCC nem támogatja.
    • A RISC-V architektúrához megvalósult a támogatás kcov (debugfs interfész a kernelkód lefedettségének elemzésére), kmemleak (memóriaszivárgások felderítési rendszere), veremvédelem, ugráscímkék és tickless műveletek (jelentkezés nélküli időzített multitasking).
    • A PowerPC architektúrához megvalósult a spinlock-okhoz tartozó sorok támogatása, amely jelentősen növelte a teljesítményt a blokkolási konfliktusok helyzeteiben.
    • Az ARM és ARM64 architektúrák esetében alapértelmezés szerint használatban van a CPU frekvenciaszabályozási mechanizmus schedutil (cpufreq governor), amely a frekvencia módosítására vonatkozó döntést közvetlenül a feladatütemezőtől szerzett információk alapján hozza meg, és azonnal képes igénybe venni a cpufreq meghajtókat a frekvencia gyors módosításához, az aktuális terheléshez igazítva a CPU működési paramétereit.
    • Az Intel grafikus kártyákhoz tartozó i915 DRM meghajtóban bevezetésre került a Rocket Lake mikroarchitektúrára épülő chipek támogatása. Rocket Lake és alapvető támogatás került hozzáadásra az Intel Xe DG1 diszkrét kártyákhoz. Az amdgpu meghajtóban bevezetésre került a AMD Navi 21.
    • (Navy Flounder) és Navi 22 (Sienna Cichlid) GPU alapvető támogatása. Továbbá hozzáadásra került a videó UVD/VCE kódolási és dekódolási motorjainak támogatása a Southern Islands GPU-khoz (Radeon HD 7000). Hozzáadva a lehetőség a megjelenítés 90, 180 vagy 270 fokos elforgatására. Érdekes, hogy az AMD GPU-hoz készült meghajtó
      Hozzáadva egy tulajdonság a megjelenítés 90, 180 vagy 270 fokos elforgatásához.

      Érdekes módon, az AMD GPU-hoz készült illesztőprogram egy a legnagyobb drivert a kernelben - körülbelül 2,71 millió sor kódot tartalmaz, ami körülbelül 10%-át jelenti a kernel teljes méretének (27,81 millió sor). Ebből 1,79 millió sor automatikusan generált fejlécfájlt tartalmaz a GPU regiszterek adataihoz, míg a C-kód 366 ezer sort tesz ki (összehasonlításképpen az Intel i915 driver 209 ezer sort, míg a Nouveau 149 ezer sort tartalmaz).

    • A Nouveau illesztőprogramban hozzáadva lett a keret-alapú integritás-ellenőrzés támogatása CRC (Cyclic Redundancy Checks) az NVIDIA GPU-s megjelenítő motorokban. A megvalósítás az NVIDIA által biztosított dokumentáción alapul.
    • LCD-panelekhez driverek kerültek hozzáadásra: Frida FRD350H54004, KOE TX26D202VM0BWA, CDTech S070PWS19HP-FC21, CDTech S070SWV29HG-DC44, Tianma TM070JVHG33 és Xingbangda XBD599.
    • Az ALSA hangrendszerében támogatás valósult meg Továbbá hozzáadva lett az új hardver támogatása, beleértve a Loongson 7A1000-t is. új eszközhöz a mikrofon aktiválásának és a némításnak a világításának kezelésére, valamint új hardverek támogatása is került, beleértve a vezérlőt Loongson 7A1000.
    • ARM platformok, eszközök és rendszerek támogatása került hozzáadásra: Pine64 PinePhone v1.2, Lenovo IdeaPad Duet 10.1, ASUS Google Nexus 7, Acer Iconia Tab A500, Qualcomm Snapdragon SDM630 (amelyet a Sony Xperia 10, 10 Plus, XA2, XA2 Plus és XA2 Ultra használ), Jetson Xavier NX, Amlogic WeTek Core2, Aspeed EthanolX, öt új NXP i.MX6 alapú platform, MikroTik RouterBoard 3011, Xiaomi Libra, Microsoft Lumia 950, Sony Xperia Z5, MStar, Microchip Sparx5, Intel Keem Bay, Amazon Alpine v3, Renesas RZ/G2H.

A latin-amerikai Szabad Szoftver Alapítvány megalapította
a verziót teljesen szabad 5.9-es kernel — Linux-libre 5.9-gnu, melyet megtisztítottak a nem szabad komponensek vagy kódrészek firmware-jeit és drivereit tartalmazó elemekből, amelyeket a gyártó korlátozott alkalmazásra tervezett. Az új kiadásban letiltották a blobok betöltését a rtw8821c WiFi driverekben és a MediaTek mt8183 SoC-ban. Frissítették a blobok tisztítására vonatkozó kódot a Habanalabs, Wilc1000, amdgpu, mt7615, i915 CSR, Mellanox mlxsw (Spectrum3), r8169 (rtl8125b-2) és x86 érintőképernyő driverekben és alrendszerekben.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster