Vydání jádra Linux 6.10

Po dvou měsících vývoje Linus Torvalds představil vydání jádra Linux 6.10. Mezi nejvýraznějšími změnami jsou: ovladač ntsync s primitivy pro synchronizaci Windows NT, komponenty DRM Panic pro implementaci ekvivalentu „modré obrazovky smrti“, ukončení podpory starých CPU Alpha, možnost ověření integrity ve FS založené na FUSE, omezení přístupu k ioctl prostřednictvím mechanismu Landlock, subsystém pro profilování operací alokace paměti, systémové volání mseal(), možnost šifrované výměny dat s TPM zařízeními, podpora vysoce prioritních pracovních front v dm-crypt, ovladač panthor pro desátou generaci GPU Mali.

Do nové verze bylo zahrnuto 14564 oprav od 1989 vývojářů, velikost patche je 41 MB (změny se dotkly 12509 souborů, přidáno 547663 řádků kódu, odstraněno 312464 řádků). V minulém vydání bylo 15680 oprav od 2106 vývojářů, velikost patche byla 54 MB. Přibližně 41 % všech změn ve verzi 6.10 se týká ovladačů zařízení, asi 15 % změn se vztahuje k aktualizaci kódu specifického pro hardwarové architektury, 13 % je spojeno s síťovým zásobníkem, 5 % s файловými системами a 4 % s vnitřními subsystémy jádra.

Hlavní novinky v jádru 6.10:

  • Diskový subsystém, vstup/výstup a souborové systémy
    • Byla přidána nová fcntl operace F_DUPFD_QUERY, pomocí které může proces určit, že dva různé souborové deskriptory odkazují na jeden a ten samý soubor. Na rozdíl od podobných možností, které poskytuje systémové volání kcmp(), F_DUPFD_QUERY neodhaluje zbytečné informace a funguje na systémech s vypnutým kcmp().
    • V subsystému FUSE, používaném pro implementaci souborových systémů v uživatelském prostoru, byla implementována možnost použití mechanismu fs-verity pro ověření integrity a autenticity souborů.
    • Do modulu dm-crypt, používaného pro šifrování blokových zařízení, byla přidána volba „high_priority“, která umožňuje zapnutí vysoce prioritních pracovních front pro zlepšení výkonu na výkonných serverech. Ve výchozím nastavení je režim vypnutý, protože může na běžných PC vést k větším prodlevám při provádění úloh nesouvisejících se šifrováním, jako je zpracování zvuku.
    • Byl přidán protokol založený na netlink pro správu NFS serveru v jádře. Ve uživatelském prostoru byla na základě tohoto protokolu připravena utilita nfsdctl. Podpora montování NFS v2 je ve výchozím nastavení zakázána (podpora NFS v2 byla v utilitě mount.nfs zastavena již v roce 2021).
    • Ve souborovém systému XFS pokračuje práce na implementaci možnosti použití utility fsck pro kontrolu a opravu zjištěných problémů v online režimu, bez odmontování souborového systému. Byl přidán ioctl XFS_IOC_EXCHANGE_RANGE pro výměnu bajtových rozsahů mezi dvěma soubory v atomickém režimu.
    • V Btrfs byla implementována podpora zmenšovače (shrinker) nezajištěných map extentů, což může být užitečné pro snížení spotřeby paměti v případě nedostatku paměti v systému. Kód pro kompresi dat a funkce put_file_data() byly převedeny na používání bledých rámců paměti (page folios). Byla přepracována mechanismus zámku extentů při provádění operací zpětného zápisu.
    • V souborovém systému Ext4 byla přidána podpora ioctl FS_IOC_GETFSSYSFSPATH pro určení umístění daného připojeného FS v hierarchii /sys/fs.
    • Souborové systémy OPENPROMFS, ISOFS, QNX6, NILFS2, MINIX a FREEVXFS byly převedeny na použití nového API pro montování oddílů.
    • V souborovém systému EROFS (Extendable Read-Only File System), určeném pro použití na oddílech dostupných v režimu pouze pro čtení, byla přidána podpora algoritmu komprese Zstandard.
    • V Bcachefs byla připravena možnost provádění fsck bez odmontování oddílu (online kontrola). Byly přidány změny a opravy pro zvýšení spolehlivosti práce. Byla implementována možnost aktualizace a rollbacku formátu FS v režimu „nochanges“, který zakazuje zápis a ukládá metadata pouze v paměti.
    • Do souborového systému OverlayFS byla přidána podpora pro vytváření dočasných souborů s použitím možnosti O_TMPFILE.
    • Byla ukončena podpora mechanismu omezení propustnosti blokových zařízení „CONFIG_BLK_DEV_THROTTLING_LOW“, který od roku 2017 zůstal v experimentálním stavu, neprosadil se v praxi a ztěžuje údržbu subsystému blokových zařízení.
  • Paměť a systémové služby
    • Přidán, ale při sestavení deaktivován, ovladač ntsync, který implementuje symbolické zařízení /dev/ntsync a sadu primitiv pro synchronizaci používaných v jádře Windows NT. Implementace těchto primitiv na úrovni jádra výrazně zvyšuje výkon her pro Windows spouštěných pomocí Wine. Zvýšení výkonu je dosaženo díky odstranění režijních nákladů spojených s použitím RPC ve vícerozměrném prostoru. Vytvoření samostatného ovladače pro jádro Linux je odůvodněno problémovostí správné implementace synchronizačního API NT nad existujícími primitivy v jádře.
    • Přidána subsystém pro profilování operací alokace paměti v jádře Linux, který umožňuje odhalovat úniky paměti v jádře a usnadňuje optimalizaci spotřeby paměti. Subsystém zajišťuje nízké režijní náklady, což umožňuje používat ho nejen v ladicích sestavách jádra, ale i na pracovních systémech.
    • Přidána počáteční implementace zpracovatele havarijních situací v jádře — DRM Panic, který používá subsystém DRM (Direct Rendering Manager) k zobrazení názorné barevné zprávy ve stylu „modré obrazovky smrti“. V příštím vydání je plánováno přidání možnosti zobrazení loga a QR kódu na obrazovce při vzniku havarijního stavu.
    • Pokračoval přenos změn z větve Rust-for-Linux, které se týkají použití jazyka Rust jako druhého jazyka pro vývoj ovladačů a modulů jádra (podpora Rust není ve výchozím nastavení aktivována a nevede k zahrnutí Rust mezi povinné závislosti pro sestavení jádra). Došlo k přechodu na použití verze Rust 1.78, což umožnilo přepnout na využívání standardní knihovny alloc místo vlastního odvození. Přidány abstrakce pro práci s časem v jádře (wrapper nad strukturou ktime_t). Přidána podpora pro používání komponent jádra v jazyce Rust na systémech s architekturou RISC-V.
    • V BPF programech byla implementována možnost využití front čekání (wait queue) v jádře. Byly přidány funkce bpf_preempt_disable a bpf_preempt_enable, které umožňují vytvářet ne přerušitelné sekce kódu řízené plánovačem úloh. Byl poskytnut přístup BPF programů k kryptografickým funkcím jádra (crypto). Byla implementována podpora JIT kompilace BPF programů na systémech s 32bitovými procesory ARCv2.
    • Pro 32bitové systémy ARM byla implementována podpora pro sestavování jádra kompilátorem Clang se zapnutým režimem ochrany CFI (Control Flow Integrity), který blokuje porušení normálního postupu vykonávání (control flow) v důsledku exploitů měnících uložené ukazatele na funkce v paměti.
    • Byla přidána možnost přímého zrcadlení pomocí mmap() kruhových bufferů sledování pro přenos jejich obsahu do uživatelského prostoru bez dalšího kopírování.
    • Byl přidán systémový volání "mseal", který umožňuje procesům nastavit zámek na změnu určitých částí svého adresního prostoru. V praxi se plánuje použití této nové systémové volání v prohlížeči Chrome pro posílení sandboxové izolace.
    • Pro subarchitekturu x32, která poskytuje hybridní x86_64 ABI umožňující využití 32bitového modelu adresování paměti na 64bitových systémech (procesor pracuje v 64bitovém režimu, ale používá 32bitové ukazatele a aritmetické operace), byla přidána podpora mechanismu Shadow Stack, který blokuje činnost mnoha exploitů pomocí hardwarových schopností procesorů Intel pro ochranu proti přepsání adresy návratu z funkce v důsledku přetečení zásobníku.
    • Na systémech s architekturou ARM64 byly v systémovém volání userfaultfd(), které umožňuje vytvářet zpracovatele přístupů k nevydělaným stránkám paměti (page faults) v uživatelském prostoru, implementovány možnosti související s ochranou proti zápisu do oblastí paměti a položek tabulky stránek paměti.
    • Byl odstraněn kód pro podporu procesorů Alpha 21164 (EV5) a starších sérií vydávaných od roku 1995. Udržování kódu pro tyto procesory bylo zkomplikováno kvůli absenci možnosti přístupu k paměti na úrovni jednotlivých bytů. Alpha byla první architekturou, na kterou bylo portováno jádro Linux, které bylo původně dostupné pouze pro systémy x86.
  • Virtualizace a bezpečnost
    • Byla přidána podpora šifrované výměny dat s zařízeními TPM (Trusted Platform Module) a ověřování integrity transakcí.
    • Do modulu LSM Landlock, který umožňuje omezit interakci skupiny procesů s externím prostředím, byla přidána možnost aplikace pravidel pro omezení přístupu k voláním ioctl().
    • Byla navržena volba init_mlocked_on_free, která zajišťuje vynulování obsahu paměti chráněné proti vyhození do swapu pomocí volání mlock(), pokud je tato paměť uvolněna bez odemčení voláním munlock(). Použití této volby vylučuje uložení kryptografických klíčů v paměti při havárii aplikace, která s nimi pracuje.
    • V podsystému crypto bylo urychleno provádění operací diskového šifrování pomocí algoritmu AES-XTS na systémech x86_64 s procesory Intel a AMD, které podporují rozšíření VAES, AVX2, VPCLMULQDQ, AVX10 nebo AVX512.
    • Byla odstraněna možnost sběru statistik o používání kryptosystému jádra (CONFIG_CRYPTO_STATS). Tato možnost se v praxi nepoužívala a vedla k výraznému snížení výkonu, stejně jako vytvářela značné dodatečné zatížení na správce.
  • Síťová subsystém
    • Byl značně zvýšen výkon operací odesílání dat v režimu zero-copy při použití podsystému io_uring. Byla přidána možnost sloučení („bundle“) několika bufferů pro operace odesílání a příjmu dat.
    • Byl přepracován kód pro garbage collection, používaný při odesílání souborových popisovačů přes Unixové sockety s použitím zpráv SCM_RIGHTS. Změna umožňuje vyřešit problém s akumulací cyklických čítačů odkazů.
    • Byla přidána možnost nastavování filtrů pro protokol PFCP (Packet Forwarding Control Protocol), používaný v sítích 4G a 5G.
    • Byla přidána podpora možnosti síťových soketů SO_PEEK_OFF, která podobně jako stejná možnost pro Unix-sokety umožňuje určit offset dat v frontě, používaný systémovým voláním recv při zadání příznaku MSG_PEEK (označuje data jako nepřečtená a ta budou znovu vydána při dalším volání recv).
    • Do subsystému io_uring byla přidána podpora operace IORING_CQE_F_SOCK_NONEMPTY, která umožňuje určit u síťového soketu přítomnost požadavků na spojení čekajících na zpracování.
    • Byla navržena implementace technologie PoE (Power over Ethernet), založená na dříve dostupném kódu pro podporu PoDL (Power over Data Line) a kompatibilní s PoE-kontroléry Microchip PD692x0 a TI TPS23881.
    • Pro protokoly TCP, DCCP a MPTC byla přidána podpora mechanismu rstreason, který umožňuje určit důvod odeslání RST paketů (např. NO_SOCKET).
  • Hardware
    • Byl zařazen ovladač panthor pro desátou generaci GPU Mali (G310, G510, G710), který využívá technologii CSF (Command Stream Frontend), jež přenáší některé funkce ovladače na stranu firmwaru, aby se snížilo zatížení CPU, a nabízí nový model organizace vykonávání úkolů na GPU. Změny na podporu nového ovladače byly také přijaty v Mesa a zahrnuty do Gallium-ovladače panfrost pro GPU Mali.
    • Do ovladače i915 byly přidány PCI identifikátory nových diskrétních grafických karet Intel Arc (DG2/Alchemist).
    • Byla pokračována práce na drm-ovladači (Direct Rendering Manager) Xe pro GPU založené na architektuře Intel Xe, která se používá v grafických kartách Intel z rodiny Arc a integrované grafice počínaje procesory Tiger Lake. Byla přidána podpora CPU Arrow Lake H. Pokračovala realizace podpory procesorů Lunar Lake. Byla přidána počáteční podpora mechanismu SR-IOV (Single Root I/O Virtualization).
    • V ovladači AMDGPU byla přidána podpora SMU 14.0 (System Management Unit). Byla přidána možnost využití nových GPU AMD na systémech s architekturou RISC-V.
    • Byl přidán ovladač pro akcelerátor kryptografických operací Tegra Security Engine, který lze použít pro zrychlení AES a různých hashovacích algoritmů.
    • Byla přidána podpora obrazových panelů LG SW43408, Innolux G121XCE-L01 LVDS, RK3326 GameForce Chi, Crystal Clear CMT430B19N00, POWERTIP PH128800T006-ZHC01, Startek KD050HDFIA020-C020A, Pixel 3a, Khadas TS050 V2, Raydium RM69380, BOE NT116WHM-N44, CMN N116BCA-EA1 a AUO B120XAN01.0.
    • Byla přidána podpora zvukového subsystému notebooků Lenovo Thinkbook 13x Gen 4, Lenovo Thinkbook 16P Gen 5, Lenovo Thinkbook 13X a ASUS Zenbook 2024 HN7306W. Byla přidána podpora externích zvukových karet Vocaster One a Vocaster Two. Byl přidán ovladač pro zesilovače NAU8325 od společnosti Nuvoton Technology.
    • Ovladač HID-Steam nyní podporuje IMU (Inertial Measurement Unit) herního ovladače Steam Deck, což umožňuje použít samostatný uzel evdev pro přístup k datům gyroskopu a akcelerometru.
    • Byly zahrnuty změny pro podporu ARM SoC Snapdragon X Elite, který používá vlastní 12jádrový CPU Qualcomm Oryon a GPU Qualcomm Adreno. Čip je určen pro použití v noteboocích a PC a překonává v mnoha výkonnostních testech čipy Apple M3 a Intel Core Ultra 155H.
    • Byla přidána podpora ARM platforem, SoC a zařízení: PocketBook 614 Plus, Sony Xperia Z3, Xperia 1 V, Samsung Galaxy S5 China, Motorola Moto G, RK3326 GameForce Chi, Anbernic RG35XX (Plus/H/2024), Airoha EN7581, Radxa ROCK 3C, ArmSom Sige7, Tanix TX1, Toradex Colibri iMX8DX, Renesas RZ/V2H, Forlinx OK3588-C, Protonic MECSBC, Emcraft Systems NavQ+, NXP S32G3, Wolfvision pf5, Amlogic A4/A5, ASUS RT-AC3200, ASUS RT-AC5300, ASrock E3C256D4I, IBM system1 BMC, Meta Harma BMC(AST2600), ASRock X570D4U BMC, Au-Zone Maivin AI Vision Starter Kit.
    • Byla přidána podpora desek Milk-V Mars, které používají SoC Starfive JH7110 založený na architektuře RISC-V.

Současně latinskoamerická Nadace svobodného softwaru vytvořila variantu plně svobodného jádra 6.10 — Linux-libre 6.10-gnu, očištěného od prvků firmwaru a ovladačů, které obsahují nesvobodné komponenty nebo části kódu, jejichž použití je omezeno výrobcem. Ve vydání 6.10 byl aktualizován kód pro čištění blobů v ovladačích Intel i915, rtl8xxxu, qla2xxx a QCAI sahara. Bylo provedeno čištění jmen blobů v dts souborech (device tree) pro architekturu Aarch64. Nové soubory přidané v ovladačích Adreno, Intel IPU3 a PRUEth byly očištěny od blobů. Bylo provedeno čištění nových ovladačů Panthor, Intel IPU6, PRUEth SR1, rtw8703b, tps23881, air_en8811h, Intel ISH HID a pcm6240. Čištění USB ovladače Prism2.5/3 USB bylo ukončeno, protože byl odstraněn z jádra.

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