Vydání jádra Linux 6.3

Po dvou měsících vývoje Linus Torvalds představil vydání jádra Linux 6.3. Mezi nejvýraznějšími změnami: úklid zastaralých ARM platforem a grafických ovladačů, pokračování integrace podpory jazyka Rust, utilita hwnoise, podpora stromových struktur red-black v BPF, režim BIG TCP pro IPv4, integrovaný test výkonu Dhrystone, možnost zakázat provádění v memfd, podpora vytváření HID ovladačů pomocí BPF, v Btrfs byly přijaty změny pro snížení fragmentace skupin bloků.

Do nové verze bylo přijato 15637 oprav od 2055 vývojářů; velikost patchu - 76 MB (změny se dotkly 14296 souborů, přidáno 1023183 řádků kódu, odstraněno 883103 řádků). Pro srovnání, v předchozí verzi bylo navrženo 16843 oprav od 2178 vývojářů; velikost patchu - 62 MB. Přibližně 39% všech předložených změn v jádře 6.3 se týká ovladačů zařízení, přibližně 15% změn souvisí s aktualizací kódu specifického pro hardwarové architektury, 10% je spojeno se síťovým stackem, 5% s файловými системами a 3% s vnitřními subsystémy jádra.

Hlavní novinky v jádře 6.3:

  • Paměť a systémové služby
    • Byl proveden významný úklid kódu souvisejícího se starými a nepoužívanými ARM platformami, což vedlo ke zkrácení velikosti zdrojových textů jádra o 150 tisíc řádků. Bylo odstraněno více než 40 starých ARM platforem.
    • Byla realizována možnost vytváření ovladačů pro vstupní zařízení s rozhraním HID (Human Interface Device), implementovaných ve formě BPF programů.
    • Pokračuje přenos z větve Rust-for-Linux dodatečné funkčnosti spojené s využíváním jazyka Rust jako druhého jazyka pro vývoj ovladačů a modulů jádra. Podpora Rust není ve výchozím nastavení aktivní a nevede k zahrnutí Rust mezi povinné závislosti pro sestavení jádra. Navrhovaná funkčnost z předchozích vydání byla rozšířena podporou typů Arc (implementace ukazatelů se sčítáním referencí), ScopeGuard (provádí úklid při výstupu z rozsahu) a ForeignOwnable (zajišťuje přesun ukazatelů mezi kódem v C a Rustu). Z balíčku ‘alloc’ byl odstraněn modul ‘borrow’ (typ ‘Cow’ a trait ‘ToOwned’). Je zaznamenáno, že stav podpory Rust v jádře je již blízko tomu, aby mohly být přijaty první moduly napsané v Rustu.
    • Ve správě uživatelského módu Linux (spuštění jádra jako uživatelského procesu) na systémech x86-64 byla implementována podpora kódu napsaného v jazyce Rust. Byla přidána podpora kompilace uživatelského módu Linux pomocí clang s včetně optimalizací během fáze prolinkování (LTO).
    • Byl přidán nástroj hwnoise pro sledování zpoždění, která jsou způsobena specifiky práce hardwaru. Zjistí se odchylky v době provádění operací (jitter) při vypnutí zpracování přerušení, které přesahují jednu mikrosekundu za 10 minut výpočtů.
    • Byl přidán modul jádra s implementací testu výkonu Dhrystone, který lze použít k hodnocení výkonu CPU v konfiguracích bez komponent uživatelského prostoru (například ve fázi portování pro nové SoC, kde je implementováno pouze načtení jádra).
    • Byl přidán parametr příkazové řádky jádra „cgroup.memory=nobpf“, který zakazuje sledování spotřeby paměti pro BPF programy, což může být užitečné pro systémy s izolovanými kontejnery.
    • Pro BPF programy byla navržena implementace datové struktury červené-černé stromové, ve které jsou použity kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) místo přidání nového typu mapování.
    • Do mechanismu restartovatelných sekvencí (rseq, restartable sequences) byla přidána možnost předávání procesům identifikátorů paralelního vykonávání (memory-map concurrency ID), které jsou shodné s číslem CPU. Rseq poskytuje prostředky pro rychlé atomické provádění operací, které v případě přerušení jiným vláknem se vymažou a pokusí se o opětovné vykonání.
    • Na procesorech ARM byla zajištěna podpora pokynů SME 2 (Scalable Matrix Extension).
    • Pro architektury s390x a RISC-V RV64 byla implementována podpora mechanismu „BPF trampoline“, který umožňuje minimalizaci režijních nákladů při předávání volání mezi jádrem a BPF programy.
    • Na systémech s procesory založenými na architektuře RISC-V bylo implementováno používání pokynů „ZBB“ pro zrychlení operací se řetězci.
    • Pro systémy založené na architektuře sady pokynů LoongArch (používá se v procesorech Loongson 3 5000 a realizuje novou RISC ISA, podobnou MIPS a RISC-V) byla implementována podpora náhodění adresového prostoru jádra (KASLR), změny umístění jádra v paměti (relocation), hardwarových bodů zastavení a mechanismu kprobe.
    • V mechanismu DAMOS (Data Access Monitoring-based Operation Schemes), který umožňuje uvolnit paměť s ohledem na frekvenci přístupu k paměti, byla implementována podpora filtrů pro vyloučení určitých oblastí paměti z zpracování v DAMOS.
    • V minimální standardní C knihovně Nolibc byla implementována podpora architektury s390 a instrukčního setu Arm Thumb1 (kromě podpory ARM, AArch64, i386, x86_64, RISC-V a MIPS).
    • Byla provedena optimalizace objtool pro zrychlení kompilace jádra a snížení špičkové spotřeby paměti při kompilaci (při kompilaci jádra v režimu "allyesconfig" již nevznikají problémy se silným ukončením procesů na systémových s 32 GB RAM).
    • Byla ukončena podpora kompilace jádra kompilátorem Intel ICC, který již dlouhou dobu nebyl funkční a nikdo neprojevil zájem to opravit.
  • Diskový subsystém, vstup/výstup a souborové systémy
    • V tmpfs byla implementována podpora mapování identifikátorů uživatelů připojených souborových systémů, která se používá k přiřazení souborů určitého uživatele na připojeném cizím oddílu jinému uživateli v aktuálním systému.
    • V Btrfs pro snížení fragmentace skupin bloků bylo zajištěno rozdělení extentů podle velikosti při přidělování bloků, tj. jakákoliv skupina bloků je nyní omezena na malé (do 128 KB), střední (do 8 MB) a velké extentu. Byla provedena refaktorizace implementace raid56. Přepracován kód pro kontrolu kontrolních součtů. Byly provedeny optimalizace výkonu umožňující až 10násobné zrychlení operace send díky kešování utime pro adresáře a vykonávání příkazů pouze v případě potřeby. Operace fiemap byly zrychleny třikrát díky vynechání kontrol zpětných odkazů pro sdílená data (snapshoty). O 10 % byly zrychleny operace s metadaty díky optimalizaci hledání klíčů ve strukturách b-tree.
    • Byla zvýšena výkonnost FS ext4 díky možnosti současného vykonávání operací přímého vstupu/výstupu několika procesy v předem určených blocích, pomocí sdílených zámků inode místo exkluzivního zámku.
    • V f2fs byla provedena práce na zlepšení čitelnosti kódu. Byly vyřešeny důležité problémy týkající se atomického zápisu a nového keše extentů.
    • Ve souborovém systému EROFS (Enhanced Read-Only File System), určeném pro oblasti dostupné pouze pro čtení, byla implementována možnost vazby na CPU pro operace dekomprese zkomprimovaného obsahu souborů za účelem snížení zpoždění při přístupu k datům.
    • Do plánovače vstupu/výstupu BFQ byla přidána podpora pokročilých zařízení na rotujících discích, například takových, které využívají několik samostatně řízených pohonů hlaviček (Multi Actuator).
    • Do realizace klienta a serveru NFS byla přidána podpora šifrování dat s použitím algoritmu AES-SHA2.
    • Do subsystému FUSE (Filesystems In User Space) byla přidána podpora mechanismu rozšíření dotazů, který umožňuje vložit do dotazu další informace. Na základě této možnosti bylo realizováno přidání identifikátorů skupin k dotazu FS, nezbytných pro zohlednění práv přístupu při vytváření objektů ve FS (create, mkdir, symlink, mknod).
  • Virtualizace a bezpečnost
    • Do hypervizoru KVM pro systémy x86 byla přidána podpora rozšířených hypervolání Hyper-V a zajištěn jejich průchod do zpracovatele, který běží v hostitelském prostředí ve uživatelském prostoru. Tato změna umožnila realizaci podpory vnořeného spuštění hypervizoru Hyper-V.
    • V KVM bylo zjednodušeno omezení přístupu hostitelského systému k událostem PMU (Performance Monitor Unit) souvisejícím s měřením výkonu.
    • Do mechanismu memfd, který umožňuje identifikaci oblasti paměti prostřednictvím předávaného mezi procesy souborového deskriptoru, byla přidána možnost vytváření oblastí, ve kterých je zakázáno spouštění kódu (non-executable memfd) a v budoucnu není možné nastavit práva na vykonání.
    • Byla přidána nová prctl operace PR_SET_MDWE, blokující pokusy o povolení práv přístupu k paměti, která zároveň umožňují zápis a spouštění.
    • Byla přidána a ve výchozím nastavení aktivována ochrana proti útokům typu Spectre, realizovaná na základě automatického režimu IBRS (Enhanced Indirect Branch Restricted Speculation) navrženého v procesorech AMD Zen 4, který umožňuje adaptivně povolovat a zakazovat spekulativní vykonávání instrukcí během zpracování přerušení, systémových volání a přepínání kontextu. Navrhovaná ochrana vede k nižším nákladům v porovnání s ochranou Retpoline.
    • Byla odstraněna zranitelnost, která umožňuje obcházet ochranu proti útokům Spectre v2 při použití technologie simultánního vícethreadingu (SMT nebo Hyper-Threading), vyplývající z deaktivace mechanismu STIBP (Single Thread Indirect Branch Predictors) při volbě módu ochrany IBRS.
    • Pro systémy založené na architektuře ARM64 byla přidána nová cílová sestavení „virtconfig“, při jejímž výběru se aktivuje pouze minimální sada komponent jádra potřebná pro spuštění ve virtualizačních systémech.
    • Pro architekturu m68k byla přidána podpora filtrování systémových volání pomocí mechanismu seccomp.
    • Byla přidána podpora integrovaných v procesorech AMD Ryzen zařízení CRB TPM2 (Command Response Buffer), založených na technologii Microsoft Pluton.
  • Síťová subsystém
    • Byl přidán netlinkový interface pro konfiguraci podúrovně prevence kolizí PLCA (Physical Layer Collision Avoidance), určeného ve specifikaci IEEE 802.3cg-2019 a používaného v ethernetových sítích 802.3cg (10Base-T1S), optimalizovaných pro připojení zařízení internetu věcí a průmyslových systémů. Použití PLCA umožňuje zvýšit výkon v ethernetových sítích se sdíleným médiem.
    • Byla ukončena podpora API „wireless extensions“ pro správu bezdrátových rozhraní WiFi 7 (802.11be), protože toto API nezahrnuje všechna potřebná nastavení. Při pokusu o použití API „wireless extensions“, které stále zůstává podporováno jako emulační vrstva, bude nyní zobrazováno varování pro většinu aktuálních zařízení.
    • Byla připravena podrobná dokumentace k API netlink (pro vývojáře jádra a pro vývojáře aplikací v uživatelském prostoru). Byla implementována utilita ynl-gen-c pro generování C kódu na základě YAML specifikací protokolu Netlink.
    • Do síťových soketů byla přidána podpora možnosti IP_LOCAL_PORT_RANGE pro usnadnění konfigurace odchozích spojení přes překladače adres bez použití SNAT. Při použití jednoho IP adres na několika hostitelích IP_LOCAL_PORT_RANGE umožňuje použití na každém hostiteli vlastního rozsahu odchozích síťových portů, a na bráně přepojuje pakety na základě čísel portů.
    • Pro MPTCP (MultiPath TCP) byla implementována možnost zpracování smíšených toků, ve kterých se používají protokoly IPv4 a IPv6. MPTCP je rozšířením protokolu TCP, které umožňuje provoz TCP spojení s doručováním paketů současně přes více tras různými síťovými rozhraními přiřazenými k různým IP adresám.
    • Pro IPv4 byla implementována možnost použití rozšíření BIG TCP, které umožňuje zvýšit maximální velikost TCP paketu na 4 GB pro optimalizaci provozu vysoce rychlých vnitřních sítí datových center. Toto zvýšení velikosti paketu při 16bitovém poli v hlavičce se dosahuje implementací „jumbo“ paketů, jejichž velikost v IP hlavičce je nastavena na 0, přičemž skutečná velikost je předávána v samostatném 32bitovém poli v připojené hlavičce.
    • Byl přidán nový sysctl parametr default_rps_mask, který umožňuje nastavit výchozí konfiguraci RPS (Receive Packet Steering), odpovídající za distribuci zpracování příchozího provozu po jádrech CPU na úrovni obsluhy přerušení.
    • Byla ukončena podpora frontových zpracovatelských disciplín pro omezení provozu CBQ (class-based queuing), ATM (ATM virtuální okruhy), dsmark (differentiated service marker), tcindex (traffic-control index) a RSVP (resource reservation protocol). Tyto disciplíny byly dlouho opuštěné a nenašel se nikdo, kdo by pokračoval v jejich údržbě.
  • Hardware
    • Byly odstraněny všechny grafické ovladače založené na DRI1: i810 (staré integrované grafické karty Intel 8xx), mga (Matrox GPU), r128 (ATI Rage 128 GPU, včetně karet Rage Fury, XPERT 99 a XPERT 128), savage (S3 Savage GPU), sis (Crusty SiS GPU), tdfx (3dfx Voodoo) a via (VIA IGP), které byly označeny jako zastaralé v roce 2016 a nejsou podporovány v Mesa od roku 2012.
    • Byly odstraněny zastaralé ovladače framebufferu (fbdev): omap1, s3c2410, tmiofb a w100fb.
    • Byl přidán DRM ovladač pro integrované CPU Intel Meteor Lake (14. generace) bloky VPU (Versatile Processing Unit), určené k urychlení operací spojených s počítačovým viděním a strojovým učením. Ovladač byl implementován pomocí subsystému „accel“, cíleného na zajištění podpory akcelerátorů výpočtů, které mohou být dodávány jako samostatné ASIC nebo jako IP bloky uvnitř SoC a GPU.
    • V ovladači i915 (Intel) byla rozšířena podpora diskrétních grafických karet Intel Arc (DG2/Alchemist), byla implementována předběžná podpora GPU Meteor Lake, včetně podpory GPU Intel Xe HP 4tile.
    • V ovladači amdgpu byla přidána podpora technologie AdaptiveSync a možnost použití bezpečnostního režimu pro více displejů (Secure Display). Byla aktualizována podpora DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x a DP 2.1.
    • V ovladači msm (GPU Qualcomm Adreno) byla přidána podpora pro platformy SM8350, SM8450, SM8550, SDM845 a SC8280XP.
    • V ovladači Nouveau byla ukončena podpora starých volání ioctl.
    • V ovladači etnaviv byla přidána experimentální podpora NPU VerSilicon (VeriSilicon Neural Network Processor).
    • Byl implementován ovladač pata_parport pro IDE uložiště připojená přes paralelní port. Přidaný ovladač umožnil odstranit starý ovladač PARIDE z jádra a modernizovat subsystém ATA. Omezením nového ovladače je nemožnost současného připojení tiskárny a disku přes paralelní port.
    • Byl přidán ovladač ath12k pro bezdrátové karty na čipech Qualcomm s podporou Wi-Fi 7. Byla přidána podpora bezdrátových karet na čipech RealTek RTL8188EU.
    • Byla přidána podpora 46 desek s procesory na bázi architektury ARM64, mezi kterými jsou Samsung Galaxy tab A (2015), Samsung Galaxy S5, BananaPi R3, Debix Model A, EmbedFire LubanCat 1/2, Facebook Greatlakes, Orange Pi R1 Plus, Tesla FSD, jakož i zařízení na bázi SoC Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 a SDM632, Rockchips RK3128 TV box, RV1126 Vision, RK3588, RK3568, RK3566, RK3588 a RK3328, TI K3 (AM642/AM654/AM68/AM69).

Mezitím latinskoamerický Fond svobodného software vytvořil variantu zcela svobodného jádra 6.3 — Linux-libre 6.3-gnu, očištěného od prvků firmwaru a ovladačů obsahujících nesvobodné komponenty nebo části kódu, jejichž použití je omezeno výrobcem. V vydání 6.3 bylo provedeno čištění blobů v nových ovladačích ath12k, aw88395 a peb2466, stejně jako v nových souborech devicetree pro zařízení qcom na bázi architektury AArch64. Bylo aktualizováno čištění blobů v ovladačích a subsystémech amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110, stejně jako v ovladačích pro DVB karty se softwarovým dekódováním a v předkompilovaných BPF souborech. Čištění bylo ukončeno v ovladačích mga, r128, tm6000, cpia2 a r8188eu, protože byly odstraněny z jádra. Bylo zlepšeno čištění od blobů ovladače i915.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster