Vydání jádra Linux 6.7

Po dvou měsících vývoje představil Linus Torvalds vydání linuxového jádra 6.7. Mezi nejpozoruhodnější změny patří integrace souborového systému Bcachefs, ukončení podpory architektury Itanium, schopnost Nouvea pracovat s firmwarem GSP-R, podpora šifrování TLS v NVMe-TCP, možnost používat výjimky v BPF, podpora pro futex v io_uring, optimalizace výkonu plánovače fq (Fair Queuing), podpora pro rozšíření TCP-AO (možnost ověřování TCP) a možnost omezit síťová připojení v bezpečnostním mechanismu Landlock, přidána kontrola přístupu k uživatelskému jmennému prostoru a io_uring přes AppArmor.

Nová verze obsahuje 18405 2066 oprav od 72 13467 vývojářů, velikost opravy je 906147 MB (změny se dotkly 341048 15291 souborů, bylo přidáno 2058 39 řádků kódu, smazáno 45 6.7 řádků). Poslední vydání mělo 14 oprav od 13 vývojářů, velikost opravy byla 5 MB. Přibližně 3 % všech změn zavedených v XNUMX souvisí s ovladači zařízení, přibližně XNUMX % změn souvisí s aktualizací kódu specifického pro hardwarové architektury, XNUMX % se týká síťového zásobníku, XNUMX % se týká souborových systémů a XNUMX % souvisí s vnitřními subsystémy jádra.

Klíčové inovace v jádře 6.7:

  • Diskový subsystém, I/O a souborové systémy
    • Jádro přijímá kód souborového systému Bcachefs, který se pokouší dosáhnout výkonu, spolehlivosti a škálovatelnosti XFS v kombinaci s prvky pokročilé funkčnosti, kterou najdete v Btrfs a ZFS. Například Bcachefs podporuje funkce, jako je zahrnutí více zařízení do oddílu, vícevrstvé rozložení disků (spodní vrstva s často používanými daty na rychlých SSD a horní vrstva s méně používanými daty z pevných disků), replikace (RAID 1/10), ukládání do mezipaměti, transparentní komprese dat (režimy LZ4, gzip a ZSTD), stavové řezy (snímky), ověřování integrity pomocí kontrolních součtů, možnost ukládat kódy opravy chyb Reed-Solomon (RAID 5/6), ukládání informací do zašifrovaná forma (používá se ChaCha20 a Poly1305). Pokud jde o výkon, Bcachefs je před Btrfs a dalšími souborovými systémy založenými na mechanismu Copy-on-Write a ukazuje provozní rychlost blízkou Ext4 a XFS.
    • Souborový systém Btrfs zavádí zjednodušený režim kvót, který umožňuje dosáhnout vyššího výkonu sledováním rozsahů pouze v pododdílu, ve kterém jsou vytvořeny, což výrazně zjednodušuje výpočty a zlepšuje výkon, ale neumožňuje brát v úvahu rozsahy sdílené v několika pododdíly.
    • Btrfs přidal novou datovou strukturu „stripe tree“, vhodnou pro mapování logického rozsahu v situacích, kdy se fyzické mapování mezi zařízeními neshoduje. Struktura se v současnosti používá v implementacích RAID0 a RAID1 pro zónovaná bloková zařízení. V budoucnu plánují tuto strukturu použít v RAIDech vyšší úrovně, což vyřeší řadu problémů existujících v současné implementaci.
    • Souborový systém Ceph implementuje podporu pro mapování uživatelských ID připojených souborových systémů, které se používají ke spárování souborů konkrétního uživatele na připojeném cizím oddílu s jiným uživatelem na aktuálním systému.
    • Byla přidána možnost zadat uid a gid při připojení k efivarfs, aby procesy bez rootu mohly měnit proměnné UEFI.
    • Do exFAT byla přidána volání ioctl pro čtení a změnu atributů FS. Přidáno zpracování adresářů s nulovou velikostí.
    • F2FS implementuje schopnost používat 16K bloky.
    • Mechanismus automatického připojení autofs byl přepnut tak, aby používal nové API pro připojení oddílu.
    • OverlayFS nabízí možnosti připojení „lowerdir+“ a „datadir+“. Přidána podpora pro vnořenou montáž OverlayFS s xattrs.
    • XFS optimalizovalo zatížení CPU v kódu alokace bloků v reálném čase. Je poskytována schopnost současně provádět operace čtení a FICLONE.
    • Kód EXT2 byl převeden na použití stránkových folií.
  • Paměťové a systémové služby
    • Podpora architektury ia64 používané v procesorech Intel Itanium, které byly v roce 2021 zcela ukončeny, byla ukončena. Procesory Itanium představil Intel v roce 2001, ale architektura ia64 nedokázala konkurovat AMD64, především kvůli vyššímu výkonu AMD64 a plynulejšímu přechodu od 32bitových x86 procesorů. V důsledku toho se zájmy Intelu přesunuly ve prospěch procesorů x86-64 a Itanium zůstaly servery HP Integrity, jejichž objednávky byly zastaveny před třemi lety. Kód pro podporu ia64 byl z jádra odstraněn především z důvodu dlouhodobého nedostatku podpory pro tuto platformu, zatímco Linus Torvalds vyjádřil ochotu vrátit podporu ia64 jádru, ale pouze v případě, že bude existovat správce, který dokáže prokázat vysokou kvalitu podpora pro tuto platformu mimo hlavní jádro po dobu nejméně jednoho roku.
    • Přidán parametr příkazového řádku jádra „ia32_emulation“, který umožňuje povolit nebo zakázat podporu emulace 32bitového režimu v jádrech vytvořených pro architekturu x86-64 ve fázi zavádění. Z praktického hlediska vám nová možnost umožňuje sestavit jádro s podporou kompatibility s 32bitovými aplikacemi, ale ve výchozím nastavení tento režim zakázat, aby se snížil vektor útoku na jádro, protože rozhraní API pro kompatibilitu je méně testováno než hlavní jádro. rozhraní.
    • Pokračující migrace změn z větve Rust-for-Linux souvisejících s použí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 zařazení Rust mezi požadované závislosti sestavení pro jádro). Nová verze přechází na verzi Rust 1.73 a nabízí sadu vazeb pro práci s pracovními frontami.
    • Je možné použít mechanismus binfmt_misc pro přidání podpory pro nové formáty spustitelných souborů (například pro spouštění kompilovaných aplikací Java nebo Python) v rámci samostatných neprivilegovaných jmenných prostorů.
    • Řadič cgroup cpuset, který umožňuje řídit využití jader CPU při provádění úlohy, poskytuje rozdělení na místní a vzdálené dělení, které se liší v tom, zda je nadřazená cgroup správná kořenová sekce nebo ne. Nová nastavení „cpuset.cpus.exclusive“ a „cpuset.cpus.excluisve.effective“ byla také přidána do cpuset pro exkluzivní vazbu CPU.
    • Subsystém BPF implementuje podporu pro výjimky, které jsou zpracovány jako nouzový východ z programu BPF s možností bezpečného odvíjení stohovaných rámců. Programy BPF navíc umožňují použití ukazatelů kptr ve spojení s CPU.
    • Do subsystému io_uring byla přidána podpora pro operace s futexem a byly implementovány nové operace: IORING_OP_WAITID (asynchronní verze waitid), SOCKET_URING_OP_GETSOCKOPT (volba getsockoptand), SOCKET_URING_OP_SETSOCKOPT (volba setsockopt) a IORING_OP_WAITID, zatímco operace se nezastavují. existují data nebo není plná vyrovnávací paměť).
    • Přidána implementace odlehčených front FIFO s jedním připojeným připojením, které vyžadují spinlock pouze pro vyřazení z fronty v kontextu procesu a upustily od spinlocku pro atomické přidání do fronty v jakémkoli kontextu.
    • Přidán kruhový buffer "objpool" se škálovatelnou implementací vysoce výkonné fronty pro alokaci a vracení objektů.
    • Počáteční část změn byla přidána k implementaci nového API futex2, které má lepší výkon na systémech NUMA, podporuje jiné velikosti než 32 bitů a lze jej použít místo multiplexovaného systémového volání futex().
    • Pro architektury ARM32 a S390x byla přidána podpora pro aktuální sadu (cpuv4) instrukcí BPF.
    • Pro architekturu RISC-V je možné použít kontrolní režim Shadow-Call Stack dostupný v Clang 17, určený k ochraně před přepsáním návratové adresy z funkce v případě přetečení bufferu na zásobníku. Podstatou ochrany je uložení návratové adresy do samostatného „stínového“ zásobníku po přenesení řízení na funkci a získání této adresy před ukončením funkce.
    • Do mechanismu pro slučování identických paměťových stránek (KSM: Kernel Samepage Merging) byl přidán nový režim skenování stránek v chytré paměti, který sleduje neúspěšně naskenované stránky a snižuje intenzitu jejich opětovného skenování. Pro aktivaci nového režimu bylo přidáno nastavení /sys/kernel/mm/ksm/smart_scan.
    • Přidán nový příkaz ioctl PAGEMAP_SCAN, který při použití s ​​userfaultfd() umožňuje určit fakta zápisu do určitého rozsahu paměti. Novou funkci lze například v systému použít k uložení a obnovení stavu procesů CRIU nebo v herních anti-cheat systémech.
    • V systému assembleru, pokud je k dispozici kompilátor Clang, je standardně povoleno sestavení příkladů použití subsystému perf napsaného jako programy BPF.
    • Stará vrstva videobuf, která se používala ke správě framebufferů v mediálním subsystému a byla před více než 10 lety nahrazena novou implementací videobuf2, byla odstraněna.
  • Virtualizace a bezpečnost
    • Do subsystému fscrypt byla přidána možnost šifrovat data v blocích menších, než je velikost bloku v souborovém systému. To může být vyžadováno pro povolení mechanismů hardwarového šifrování, které podporují pouze malé bloky (například řadiče UFS, které podporují pouze velikost bloku 4096, lze použít se systémem souborů s velikostí bloku 16 kB).
    • Subsystém „iommufd“, který vám umožňuje spravovat tabulky stránek paměti IOMMU (I/O Memory-Management Unit) prostřednictvím deskriptorů souborů z uživatelského prostoru, přidal sledování dat, která ještě nebyla vyprázdněna z mezipaměti (špinavá) pro DMA. operací, které jsou nezbytné pro určení paměti s nevyprázdněnými daty během migrace procesu.
    • Do mechanismu Landlock byla přidána podpora pro definování pravidel řízení přístupu pro TCP sockety, což umožňuje omezit interakci skupiny procesů s vnějším prostředím. Můžete například vytvořit pravidlo, které povolí přístup pouze k síťovému portu 443 za účelem vytvoření připojení HTTPS.
    • Subsystém AppArmor přidal možnost řídit přístup k mechanismu io_uring a vytvářet uživatelské jmenné prostory, což umožňuje selektivně povolit přístup k těmto schopnostem pouze určitým procesům.
    • Přidáno rozhraní API pro ověření virtuálního stroje pro ověření integrity procesu spouštění virtuálního stroje.
    • Systémy LoongArch podporují virtualizaci pomocí hypervizoru KVM.
    • Při použití hypervisoru KVM na systémech RISC-V se objevila podpora rozšíření Smstateen, které blokuje virtuální stroj v přístupu k registrům CPU, které nejsou explicitně podporovány hypervizorem. Také přidána podpora pro použití rozšíření Zicond v hostujících systémech, které umožňuje použití některých podmíněných celočíselných operací.
    • V hostovaných systémech založených na x86 běžících pod KVM je povoleno až 4096 virtuálních CPU.
  • Síťový subsystém
    • Ovladač NVMe-TCP (NVMe over TCP), který umožňuje přístup k jednotkám NVMe přes síť (NVM Express over Fabrics) pomocí protokolu TCP, přidal podporu pro šifrování kanálu přenosu dat pomocí TLS (pomocí KTLS a procesu na pozadí v uživatelském prostoru tlshd pro vyjednávání připojení).
    • Byl optimalizován výkon plánovače paketů fq (Fair Queuing), což umožnilo zvýšit propustnost o 5 % při velkém zatížení v testu tcp_rr (TCP Request/Response) a o 13 % při neomezeném toku UDP paketů.
    • TCP přidává volitelnou funkci časového razítka s přesností na mikrosekundu (TCP TS) (RFC 7323), která umožňuje přesnější odhad latence a pokročilejší moduly řízení zahlcení. Chcete-li to povolit, můžete použít příkaz „ip route add 10/8 ... features tcp_usec_ts“.
    • TCP stack přidal podporu pro rozšíření TCP-AO (TCP Authentication Option, RFC 5925), které umožňuje ověřit TCP hlavičky pomocí MAC kódů (Message Authentication Code), pomocí modernějších algoritmů HMAC-SHA1 a CMAC-AES- 128 namísto dříve dostupné možnosti TCP-MD5 založené na starším algoritmu MD5.
    • Byl přidán nový typ virtuálních síťových zařízení „netkit“, u kterého se logika přenosu dat nastavuje pomocí programu BPF.
    • KSMBD, implementace SMB serveru na úrovni jádra, přidala podporu pro překlad názvů souborů obsahujících náhradní páry složených znaků.
    • NFS zlepšil implementaci vláken se službami RPC. Přidána podpora pro delegování zápisu (pro NFSv4.1+). NFSD přidal podporu pro obslužný program netlink rpc_status. Vylepšená podpora pro klienty NFSv4.x při opětovném exportu do knfsd.
  • Оборудование
    • Počáteční podpora firmwaru GSP-RM byla přidána do modulu jádra Nouveau, který se používá v GPU NVIDIA RTX 20+ k přesunutí operací inicializace a ovládání GPU na stranu samostatného mikrokontroléru GSP (GPU System Processor). Podpora GSP-RM umožňuje ovladači Nouveau pracovat prostřednictvím volání firmwaru namísto přímého programování hardwarových interakcí, takže je mnohem snazší přidat podporu pro nové GPU NVIDIA pomocí předem připravených volání pro inicializaci a správu napájení.
    • Ovladač AMDGPU podporuje GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 a DML2. Vylepšená podpora pro plynulé načítání (žádné blikání při přepínání režimu videa).
    • Ovladač i915 přidává podporu pro čipy Intel Meteor Lake a přidává počáteční implementaci Intel LunarLake (Xe 2).
    • Do specifikace USB4 v2 (120/40G) přidána podpora pro asymetrické přenosové kanály.
    • Přidána podpora pro ARM SoC: Qualcomm Snapdragon 720G (používaný ve smartphonech Xiaomi), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (používaný v routerech a NAS).
    • 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.
    • Přidána podpora pro RISC-V desky Milk-V Pioneer a Milk-V Duo.
    • Přidána podpora pro zvuková rozhraní notebooků HUAWEI dodávaných s procesory AMD. Přidána podpora pro další reproduktory nainstalované na laptopech Dell Oasis 13/14/16. Přidána podpora pro vestavěné reproduktory ASUS K6500ZC. Přidána podpora indikátoru ztlumení u notebooků HP 255 G8 a G10. Přidána podpora pro zvukové ovladače acp6.3. Přidána podpora pro profesionální nahrávací rozhraní Focusrite Clarett+ 2Pre a 4Pre.

Ve stejné době vytvořila Latin American Free Software Foundation verzi zcela svobodného jádra 6.7 - Linux-libre 6.7-gnu, zbavenou prvků firmwaru a ovladačů obsahujících nesvobodné komponenty nebo části kódu, jejichž rozsah je omezený. výrobcem. Ve verzi 6.7 byl aktualizován kód pro čištění objektů blob v různých ovladačích a podsystémech, například v ovladačích amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs a btqca. Kód pro čištění ovladačů localtalk a rtl8192u byl odstraněn kvůli jejich vyloučení z jádra. Odstraněny nepotřebné součásti pro čištění ovladačů xhci-pci, rtl8xxxu a rtw8822b, které byly dříve přidány omylem. Vyčištěné názvy objektů blob v souborech dts pro architekturu Aarch64. Odstraněny blob v nových ovladačích mt7925, tps6598x, aw87390 a aw88399.

Zdroj: opennet.ru

Přidat komentář