Verze jádra Linux 6.7

Po dvou měsících vývoje Linus Torvalds představil verzi jádra Linux 6.7. Mezi nejvýznamnější změny patří: integrace souborového systému Bcachefs, ukončení podpory architektury Itanium, možnost provozu Nouveau s firmwarem GSP-R, podpora šifrování TLS v NVMe-TCP, možnost použití výjimek v BPF, podpora futex v io_uring, optimalizace výkonu plánovače fq (Fair Queuing), podpora rozšíření TCP-AO (TCP Authentication Option) a možnost omezení síťových připojení v mechanismu ochrany Landlock, přidáno řízení přístupu k uživatelskému prostoru a io_uring prostřednictvím AppArmor.

Do nové verze bylo přidáno 18405 oprav od 2066 vývojářů, velikost patche je 72 MB (změny se týkaly 13467 souborů, bylo přidáno 906147 řádků kódu, odstraněno 341048 řádků). V předchozí verzi bylo 15291 oprav od 2058 vývojářů, velikost patche byla 39 MB. Přibližně 45 % všech změn ve verzi 6.7 se týká ovladačů zařízení, přibližně 14 % změn se týká aktualizace kódu specifického pro hardware, 13 % souvisí se síťovým stackem, 5 % s souborovými systémy a 3 % s vnitřními subsystémy jádra.

Hlavní novinky v jádře 6.7:

  • Diskový subsystém, vstup/výstup a souborové systémy
    • Do jádra byl přijat kód souborového systému Bcachefs, jehož cílem je dosáhnout úrovně výkonnosti, spolehlivosti a škálovatelnosti charakteristické pro XFS, v kombinaci s prvky rozšířené funkčnosti přítomné v Btrfs a ZFS. Například Bcachefs podporuje takové funkce jako zahrnutí více zařízení do svazku, vícestupňové uspořádání úložišť (spodní vrstva s často používanými daty na rychlých SSD a horní vrstva s méně požadovanými daty z pevných disků), replikaci (RAID 1/10), caching, průhledné kompresi dat (módy LZ4, gzip a ZSTD), snapshoty, ověřování integrity kontrolními součty, možnost ukládání kódů pro opravu chyb Reed-Solomon (RAID 5/6), zabezpečené úložiště dat (používají se ChaCha20 a Poly1305). Z hlediska výkonu Bcachefs předčí Btrfs a další souborové systémy založené na mechanizmu Copy-on-Write a vykazuje rychlost práce blízkou Ext4 a XFS.
    • V souborovém systému Btrfs byl zaveden zjednodušený režim kvót, který umožňuje dosáhnout vyššího výkonu sledováním jednotlivých bloků pouze v podřetězcích, ve kterých byly vytvořeny, což výrazně zjednodušuje výpočty a zvyšuje výkon, avšak neumožňuje sledovat bloky sdílené mezi více podřetězci.
    • Do Btrfs byla přidána nová datová struktura „stripe tree“, vhodná pro logické mapování bloků v situacích, kdy fyzické mapování nesouhlasí na různých zařízeních. Tato struktura je zatím využívána v implementacích RAID0 a RAID1 pro zónované blokové zařízení. V budoucnu se plánuje, že tato struktura bude použita i v RAID vyšší úrovně, což umožní vyřešit řadu stávajících problémů.
    • V souborovém systému Ceph 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ů konkrétního uživatele na připojeném cizím oddílu k jinému uživateli v aktuálním systému.
    • Do efivarfs byla přidána možnost určení uid a gid při připojení pro umožnění změny proměnných UEFI procesy spuštěnými bez práv root.
    • Do exFAT byly přidány ioctl výzvy pro čtení a měnění atribútů FS. Bylo přidáno zpracování nulových adresářů.
    • V F2FS byla implementována možnost použití bloků velikosti 16K.
    • Mechanismus automatického připojení autofs byl převeden na použití nového API pro připojení oddílů.
    • V OverlayFS byly navrženy možnosti mountování „lowerdir+“ a „datadir+“. Byla přidána podpora vnořeného mountování OverlayFS s xattrs.
    • V XFS byla optimalizována zátěž CPU v kódu pro rozdělování bloků v reálném čase. Byla zajištěna možnost současného provádění operací čtení a FICLONE.
    • Kód EXT2 byl převeden na použití svazků stránek paměti (page folios).
  • Paměť a systémové služby
    • Podpora architektury ia64, používané v procesorech Intel Itanium, byla ukončena, přičemž prodeje těchto procesorů byly zcela zastaveny v roce 2021. Procesory Itanium byly uvedeny společností Intel v roce 2001, ale architektura ia64 nedokázala obstát v konkurenci s AMD64, zejména kvůli vyššímu výkonu AMD64 a hladšímu přechodu z 32bitových procesorů x86. V důsledku toho se zájmy Intelu přesunuly k procesorům x86-64, zatímco Itanium zůstalo. servery HP Integrity, jehož objednávky byly zastaveny před třemi lety. Kód na podporu ia64 byl odstraněn z jádra, zejména kvůli dlouhému nedostatku údržby této platformy, přičemž Linus Torvalds vyjádřil ochotu vrátit podporu ia64 do jádra, ale pouze pokud se najde údržbář, který prokáže kvalitní údržbu této platformy mimo hlavní jádro minimálně po dobu jednoho roku.
    • Byl přidán parametr příkazového řádku jádra „ia32_emulation“, který umožňuje během načítání zapnout a vypnout podporu emulace 32bitového režimu v jádrech sestavených pro architekturu x86-64. Z praktického hlediska nový parametr umožňuje sestavit jádro s podporou kompatibility se 32bitovými aplikacemi, ale standardně je tento režim vypnut pro snížení vektoru útoku na jádro, protože API pro zajištění kompatibility bylo méně testováno než hlavní rozhraní jádra.
    • Pokračuje přenos změn z větve Rust-for-Linux, týkajících se používání 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 zařazení Rustu mezi povinné závislosti pro sestavení jádra). V nové verzi došlo k přechodu na využití vydání Rust 1.73 a byl navržen soubor vazeb pro práci s pracovními frontami (workqueues).
    • Byla poskytnuta možnost využití mechanismu binfmt_misc pro přidání podpory nových formátů spustitelných souborů (například pro spuštění zkompilovaných aplikací v Javě nebo Pythonu) uvnitř jednotlivých nepriviligovaných prostorů názvů (namespace).
    • V cgroup kontroléru cpuset, který umožňuje řídit využití CPU jader při vykonávání úkolu, je zajištěno rozdělení na lokální a vzdálené sekcionování (remote partition), které se liší tím, zda je nadřazený cgroup správnou kořenovou sekcí či nikoli. V cpuset byly také přidány nové nastavení „cpuset.cpus.exclusive“ a „cpuset.cpus.exclusive.effective“ pro exkluzivní přidělení k CPU.
    • V subsystému BPF byla implementována podpora výjimek, které jsou zpracovávány jako naléhavý výstup z BPF programu s možností bezpečného rozbalení zásobníku. Dále je v BPF programech povoleno používat ukazatele kptr v přidělení k CPU.
    • Do subsystému io_uring byla přidána podpora operací s futexy a byly implementovány nové operace: IORING_OP_WAITID (asynchronní verze waitid), SOCKET_URING_OP_GETSOCKOPT (varianta getsockopt) a SOCKET_URING_OP_SETSOCKOPT (varianta setsockopt) a IORING_OP_READ_MULTISHOT (opakované operace čtení, které nepřestávají, dokud jsou k dispozici data nebo není vyplněn buffer).
    • Byla přidána implementace lehkých jednosměrných FIFO front, které vyžadují spin-lock pouze pro odstranění z fronty v kontextu procesu a obejdou se bez spin-locku pro atomické přidání do fronty v jakémkoliv kontextu.
    • Byl přidán kruhový buffer „objpool“ s škálovatelnou implementací vysoce výkonné fronty pro přidělování a vracení objektů.
    • Byla přidána počáteční část změn pro implementaci nového API futex2, které se vyznačuje vyšším výkonem na NUMA systémů, podporuje velikosti odlišné od 32 bitů a může být použito místo multiplexovaného systémového volání futex().
    • Pro architektury ARM32 a S390x byla přidána podpora aktuálního souboru (cpuv4) instrukcí BPF.
    • Pro architekturu RISC-V byla realizována možnost využití režimu kontroly Shadow-Call Stack dostupného v Clang 17, určeného k ochraně před přepisováním návratové adresy z funkce v případě přetečení zásobníku. Podstata ochrany spočívá v uchování návratové adresy v samostatném „stínovém“ zásobníku po předání řízení funkci a vytažení této adresy před odchodem z funkce.
    • Do mechanismu sloučení identických stránek paměti (KSM: Kernel Samepage Merging) byl přidán nový inteligentní režim skenování paměti, který sleduje neúspěšně skenované stránky a snižuje intenzitu jejich opětovného skenování. Pro aktivaci nového režimu byla přidána nastavení /sys/kernel/mm/ksm/smart_scan.
    • Byl přidán nový příkaz ioctl PAGEMAP_SCAN, který ve spojení s userfaultfd() umožňuje určovat případy zápisu do určitého rozsahu paměti. Nová funkce může například být používána v systému pro ukládání a obnovování stavu procesů CRIU nebo v herních anti-cheat systémech.
    • V sestavovacím systému je při přítomnosti překladače Clang ve výchozím nastavení zapnuta sestava příkladů použití subsystému perf, napsaných ve formě BPF programů.
    • Byla odstraněna stará vrstva videobuf, která se používala k řízení rámcových vyrovnávacích pamětí v mediálním subsystému a byla před více než 10 lety nahrazena novou implementací videobuf2.
  • Virtualizace a bezpečnost
    • Do subsystému fscrypt byla přidána možnost šifrování dat v blocích menších než je velikost bloku v souborovém systému. Tato funkce může být potřebná pro aktivaci hardwarových mechanismů šifrování, které podporují pouze malé bloky (například řadiče UFS, které podporují pouze velikost bloku 4096, budou moci být použity s FS o velikosti bloku 16K).
    • Do subsystému 'iommufd', který umožňuje řízení tabulek stránek paměti I/O Memory-Management Unit (IOMMU) prostřednictvím deskriptorů souborů z prostoru uživatele, bylo přidáno sledování ještě nesmazaných z cache dat (dirty) pro operace DMA, což je nezbytné pro určení paměti s nesmazanými daty při migraci procesů.
    • Do mechanismu Landlock, který umožňuje omezit interakci skupiny procesů s vnějším prostředím, byla přidána podpora pro definici pravidel řízení přístupu k TCP socketům. Například lze vytvořit pravidlo, které povoluje pouze přístup přes síťový port 443 pro navazování HTTPS spojení.
    • Do subsystému AppArmor byla přidána možnost řízení přístupu k mechanismu io_uring a vytváření jmenných prostorů uživatelských identifikátorů (user namespaces), což umožňuje selektivně povolit přístup k těmto funkcím pouze určitým procesům.
    • Bylo přidáno API pro attestaci virtuálních strojů pro potvrzení integrity procesu jejich spuštění.
    • Na systémech LoongArch je implementována podpora virtualizace pomocí hypervizoru KVM.
    • Při použití hypervizoru KVM na systémech RISC-V byla přidána podpora rozšíření Smstateen, které blokuje přístup virtuálního stroje k registrům CPU, které hypervizor výslovně nepodporuje. Také byla přidána podpora pro používání rozšíření Zicond v hostitelských systémech, které umožňuje provádět některé podmíněné celociferné operace.
    • Ve virtuálních systémech běžících pod KVM na architektuře x86 je povoleno použití až 4096 virtuálních CPU.
  • Síťová subsystém
    • Do ovladače NVMe-TCP (NVMe přes TCP), který umožňuje přístup k NVMe úložným zařízením přes síť (NVM Express přes Fabrics), byla přidána podpora šifrování datového kanálu pomocí TLS (využívá se KTLS a proces na pozadí v uživatelském prostoru tlshd pro vyjednávání připojení).
    • Byla provedena optimalizace výkonu plánovače paketů fq (Fair Queuing), která zvýšila propustnost o 5 % při vysokých zátěžích v testu tcp_rr (TCP Request/Response) a o 13 % při neomezeném toku UDP paketů.
    • Do protokolu TCP byla přidána volitelná možnost používání časových razítek (TCP TS) s mikrosekundovou přesností (RFC 7323), což umožňuje přesněji vyhodnocovat latence a vytvářet pokročilejší moduly pro řízení přetížení. Chcete-li je aktivovat, můžete použít příkaz „ip route add 10/8 … features tcp_usec_ts“.
    • Do TCP zásobníku byla přidána podpora rozšíření TCP-AO (TCP Authentication Option, RFC 5925), které umožňuje verifikovat TCP hlavičky podle MAC kódů (Message Authentication Code), pomocí modernějších algoritmů HMAC-SHA1 a CMAC-AES-128 místo dříve dostupné volby TCP-MD5 založené na zastaralém algoritmu MD5.
    • Byl přidán nový typ virtuálních síťových zařízení „netkit“, jejichž logika přenosu dat je definována pomocí programu BPF.
    • Do KSMBD, jádrové implementace SMB serveru, byla přidána podpora pro převod názvů souborů, které obsahují surrogátní páry složených znaků.
    • V NFS byla vylepšena implementace toků s RPC službami. Byla přidána podpora pro delegaci zápisu (pro NFSv4.1+). V NFSD byla přidána podpora pro netlink zpracovatele rpc_status. Byla vylepšena podpora klientů NFSv4.x při opětovném exportování do knfsd.
  • Hardware
    • Do jádra modulu Nouveau byla přidána počáteční podpora firmware GSP-RM, které se používá v GPU NVIDIA RTX 20+ k delegaci inicializačních operací a řízení GPU na samostatný mikrořadič GSP (GPU System Processor). Podpora GSP-RM umožňuje ovladači Nouveau pracovat prostřednictvím volání na firmware, místo přímého programování operací interakce s hardwarem, což výrazně usnadňuje přidávání podpory pro nové GPU NVIDIA díky využití již připravených volání pro inicializaci a řízení spotřeby energie.
    • V ovladači AMDGPU byla implementována podpora pro GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 a DML2. Byla zlepšena podpora bezproblémového zavádění (bez blikání při přepínání video režimu).
    • V ovladači i915 byla implementována podpora procesorů Intel Meteor Lake a byla přidána počáteční implementace Intel LunarLake (Xe 2).
    • Byla přidána podpora asymetrických přenosových kanálů, které byly přidány ve specifikacích USB4 v2 (120/40G).
    • Byla přidána podpora ARM SoC: Qualcomm Snapdragon 720G (používá se ve smartphonech Xiaomi), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (používá se v routerech a NAS).
    • Byla přidána podpora pro smartphone Fairphone 5 a ARM desky Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 Powkiddy RGB30.
    • Byla přidána podpora pro RISC-V desky Milk-V Pioneer a Milk-V Duo.
    • Byla přidána podpora pro zvukové rozhraní notebooků HUAWEI dodávaných s procesory AMD. Byla přidána podpora pro další reproduktory instalované na notebooky Dell Oasis 13/14/16. Byla přidána podpora vestavěných reproduktorů ASUS K6500ZC. Byla přidána podpora pro indikátor ztlumení zvuku na notebookech HP 255 G8 a G10. Byla přidána podpora pro zvukové ovladače acp6.3. Byla přidána podpora pro profesionální zvukové nahrávací rozhraní Focusrite Clarett+ 2Pre a 4Pre.

Latinskoamerická organizace pro svobodný software mezitím vytvořila verzi plně svobodného jádra 6.7 — Linux-libre 6.7-gnu, vyč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.7 byl aktualizován kód pro čištění blobů v různých ovladačích a subsystémech, například v ovladačích amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs a btqca. Byl odstraněn kód pro čištění ovladačů localtalk a rtl8192u kvůli jejich vyloučení ze složení jádra. Byly odstraněny nadbytečné komponenty čištění ovladačů xhci-pci, rtl8xxxu a rtw8822b, které byly dříve přidány omylem. Bylo provedeno čištění jmen blobů v dts-souboru pro architekturu Aarch64. Byly odstraněny blobs v nových ovladačích mt7925, tps6598x, aw87390 a aw88399.

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