Vydanie jadra Linux 6.7

Po dvoch mesiacoch vývoja predstavil Linus Torvalds vydanie jadra Linux 6.7. Medzi najvýznamnejšími zmenami sú: integrácia FS Bcachefs, ukončenie podpory architektúry Itanium, podpora Nouvea s firmware GSP-R, podpora šifrovania TLS v NVMe-TCP, možnosť používania výnimiek v BPF, podpora futex v io_uring, optimalizácia výkonu plánovača fq (Fair Queuing), podpora rozšírenia TCP-AO (TCP Authentication Option) a možnosť obmedzenia sieťových pripojení v ochrannom mechanizme Landlock, pridané riadenie prístupu k user namespace a io_uring cez AppArmor.

Nová verzia obsahuje 18405 opráv od 2066 vývojárov, veľkosť patchu je 72 MB (zmeny sa týkajú 13467 súborov, pridalo sa 906147 riadkov kódu, odstránilo sa 341048 riadkov). V predchádzajúcom vydaní bolo 15291 opráv od 2058 vývojárov, veľkosť patchu bola 39 MB. Približne 45% všetkých zmien v 6.7 sa týka ovládačov zariadení, asi 14% sa týka aktualizácie kódu špecifického pre hardvérové architektúry, 13% súvisí so sieťovým zásobníkom, 5% s файловými системami a 3% s vnútornými subsystémami jadra.

Hlavné novinky v jadre 6.7:

  • Diskový subsystém, I/O a súborové systémy
    • Do jadra bol prijatý kód súborového systému Bcachefs, v ktorom sa pokúsili dosiahnuť úroveň výkonu, spoľahlivosti a škálovateľnosti charakteristickú pre XFS, kombinovanú s prvkami rozšírenej funkčnosti, ktoré sa nachádzajú v Btrfs a ZFS. Napríklad, Bcachefs podporuje také možnosti ako zapojenie viacerých zariadení do jedného oddielu, viacúrovňové rozloženia úložísk (dolná vrstva s často používanými údajmi na rýchlych SSD a horná vrstva s menej využívanými údajmi z pevných diskov), replikácia (RAID 1/10), caching, transparentné kompresie údajov (módy LZ4, gzip a ZSTD), snímky stavu (snapshots), overenie integrity pomocou kontrolných súčtov, možnosť uchovávania kódov opravy chýb Reed-Solomon (RAID 5/6), uchovávanie informácií v zašifrovanej podobe (využívajú sa ChaCha20 a Poly1305). Pokiaľ ide o výkon, Bcachefs prekonáva Btrfs a ďalšie FS založené na mechanizme Copy-on-Write a dosahuje rýchlosť práce blízku Ext4 a XFS.
    • Vo файловom systéme Btrfs sa objavil zjednodušený režim kvót, ktorý umožňuje dosiahnuť vyšší výkon sledovaním extents iba v tej podpriečke, v ktorej boli vytvorené, čo podstatne zjednodušuje výpočty a zvyšuje výkon, ale neumožňuje brať do úvahy extents, ktoré sú spoločné pre niekoľko podpriečok.
    • V Btrfs bola pridaná nová dátová štruktúra „stripe tree“, vhodná na logické mapovanie extents v situáciách, keď fyzické mapovanie sa nesúhlasí na rôznych zariadeniach. Štruktúra je zatiaľ využívaná v realizáciách RAID0 a RAID1 pre zónované blokové zariadenia. V budúcnosti plánujú túto štruktúru použiť aj v RAID vyšších úrovní, čo umožní vyriešiť niekoľko existujúcich problémov v aktuálnej realizácii.
    • Vo файловom systéme Ceph bola realizovaná podpora mapovania identifikátorov používateľov namontovaných súborových systémov, používaná na porovnávanie súborov určitého používateľa na namontovanej cudzej partícii s iným používateľom v aktuálnom systéme.
    • V efivarfs bola pridaná možnosť určenia uid a gid pri montovaní na umožnenie zmeny premenných UEFI procesmi, ktoré sú spustené bez práv root.
    • V exFAT boli pridané ioctl-zavolania na čítanie a zmenu atribútov FS. Pridaná podpora pre nulté adresáre.
    • V F2FS bola realizovaná možnosť používania blokov veľkosti 16K.
    • Mechanizmus automontovania autofs bol prevedený na používanie nového API montovania partícií.
    • V OverlayFS boli navrhnuté možnosti montovania „lowerdir+“ a „datadir+“. Pridaná podpora pre vnorené montovanie OverlayFS s xattrs.
    • V XFS bola optimalizovaná záťaž CPU v kóde rozdeľovania blokov v reálnom čase. Zabezpečená možnosť súčasného vykonávania operácií čítania a FICLONE.
    • Kód EXT2 bol prevedený na používanie foliantov stránok pamäte (page folios).
  • Pamäť a systémové služby
    • Podpora architektúry ia64, používané v procesoroch Intel Itanium, bola ukončená, pričom predaj týchto procesorov bol úplne zastavený v roku 2021. Procesory Itanium sa objavili na trhu v roku 2001, ale architektúra ia64 nedokázala obstáť v konkurencii s AMD64, najmä kvôli vyššiemu výkonu AMD64 a plynulejšiemu prechodu z 32-bitových procesorov x86. V dôsledku toho sa záujmy spoločnosti Intel presunuli na procesory x86-64, pričom osud Itanium zostal nejasný. servery HP Integrity, na ktoré boli objednávky ukončené pred tromi rokmi. Kód na podporu ia64 bol odstránený z jadra hlavne kvôli dlhému obdobiu bezúdržby tejto platformy, pričom Linus Torvalds vyjadril ochotu vrátiť podporu ia64 do jadra, ale len v prípade, že sa nájde údržbár, ktorý preukáže kvalitnú údržbu tejto platformy mimo hlavného jadra aspoň počas jedného roka.
    • Bol pridaný parameter príkazového riadka jadra „ia32_emulation“, ktorý umožňuje aktivovať a deaktívovať podporu emulácie 32-bitového režimu v jadrach zostavených pre architektúru x86-64 počas štartu. Z praktického hľadiska tento nový parameter umožňuje zostavovať jadro so súcompatibilitou s 32-bitovými aplikáciami, ale predvolene deaktivuje tento režim na zníženie útočného vektora na jadro, keďže API na zabezpečenie kompatibility nebolo testované tak dôkladne ako základné rozhrania jadra.
    • Pokračuje sa v prenosoch zmien z vetvy Rust-for-Linux, súvisiacich s použitím jazyka Rust ako druhého jazyka pre vývoj ovládačov a modulov jadra (podpora Rust nie je predvolene aktivovaná a nevedie k zaradeniu Rust medzi povinné závislosti pre zostavenie jadra). V novej verzii prebehlo prechod na použitie uvoľnenia Rust 1.73 a bola navrhnutá sada viazaní pre prácu s pracovnými frontami (workqueues).
    • Bol zavedený mechanizmus binfmt_misc na pridanie podpory pre nové formáty spustiteľných súborov (napríklad pre spúšťanie skompilovaných aplikácií v Jave alebo Pythone) vo vnútri jednotlivých neprivilegovaných priestorov mien (namespace).
    • V cgroup kontrolleri cpuset, ktorý umožňuje spravovať využívanie jadier CPU pri vykonávaní úlohy, je zabezpečené rozdelenie na lokálne a vzdialené rozdelenie (remote partition), ktoré sa líšia tým, či je rodičovský cgroup správnou koreňovou sekciou alebo nie. V cpuset sú tiež pridané nové nastavenia „cpuset.cpus.exclusive“ a „cpuset.cpus.exclusive.effective“ pre exkluzívne viazanie na CPU.
    • V subsystéme BPF bola implementovaná podpora výnimiek, ktoré sú spracovávané ako naliehavé ukončenie BPF programu s možnosťou bezpečného rozvinovania rámcov zásobníka. Okrem toho je v BPF programoch povolené používanie ukazovateľov kptr v viazaní na CPU.
    • Do subsystému io_uring bola pridaná podpora operácií s futexami, ako aj boli implementované nové operácie: IORING_OP_WAITID (asynchrónna verzia waitid), SOCKET_URING_OP_GETSOCKOPT (varianta getsockopt) a SOCKET_URING_OP_SETSOCKOPT (varianta setsockopt) a IORING_OP_READ_MULTISHOT (viacnásobné operácie čítania, ktoré neprestanú, kým sú dáta alebo kým nie je zaplnený buffer).
    • Bola pridaná implementácia ľahkých jednosmerných FIFO frontov, ktoré vyžadujú spin-lock iba na odstránenie z frontu v kontexte procesu a obchádzajú sa bez spin-lock pre atomárne pridávanie do frontu v akomkoľvek kontexte.
    • Bol pridaný kruhový buffer „objpool“ s škálovateľnou implementáciou vysoko výkonného frontu na uzamykanie a vracanie objektov.
    • Bola pridaná počiatočná časť zmien pre implementáciu nového API futex2, ktoré sa vyznačuje vyšším výkonom na NUMA systémov, podporuje veľkosti rôzne od 32 bitov a môže sa použiť ako alternatíva k multiplexovanému systémovému volaniu futex().
    • Pre architektúry ARM32 a S390x bola pridaná podpora aktuálneho súboru (cpuv4) inštrukcií BPF.
    • Pre architektúru RISC-V bola implementovaná možnosť použitia režimu kontroly Shadow-Call Stack dostupného v Clang 17, určeného na ochranu pred prepísaním adresy návratu z funkcie v prípade pretečenia vyrovnávacej pamäte na zásobníku. Podstatou ochrany je uloženie adresy návratu do samostatného „tieňového“ zásobníka po predaní riadenia funkcii a jej vyzvanie pred výstupom z funkcie.
    • Do mechanism merging identical memory pages (KSM: Kernel Samepage Merging) has a new intelligent mode for scanning memory pages, which tracks unsuccessfully scanned pages and reduces their re-scanning intensity. A setting for enabling the new mode has been added to /sys/kernel/mm/ksm/smart_scan.
    • A new ioctl command PAGEMAP_SCAN has been added, which, when used with userfaultfd(), allows determining write events in a specific memory range. This new feature can be utilized in systems for saving and restoring CRIU process states or in gaming anti-cheat systems.
    • In the build system, with the presence of the Clang compiler, the building of perf subsystem usage examples written as BPF programs is enabled by default.
    • The old videobuf layer, which was used to manage framebuffer buffers in the media subsystem and replaced over 10 years ago with a new implementation videobuf2, has been removed.
  • Virtualizácia a bezpečnosť
    • The fscrypt subsystem has added the ability to encrypt data in blocks smaller than the filesystem's block size. This may be necessary to utilize hardware encryption mechanisms that support only small blocks (for example, UFS controllers that support only 4096 block size can be used with a filesystem with 16K block size).
    • The iommufd subsystem, which allows managing IOMMU (I/O Memory-Management Unit) page tables through file descriptors from user space, has added tracking of still dirty cached data for DMA operations, which is necessary to determine memory with unflushed data during process migration.
    • The Landlock mechanism, which restricts a group of processes' interaction with the external environment, has been updated to support defining access control rules for TCP sockets. For example, one can create a rule that allows access only over network port 443 for establishing HTTPS connections.
    • The AppArmor subsystem has added the ability to manage access to the io_uring mechanism and create user namespace identifiers, allowing selective access permissions to these capabilities for specific processes.
    • An attestation API has been added virtuálních strojů to confirm the integrity of their loading process.
    • Systémy LoongArch implementujú virtualizáciu s použitím hypervízora KVM.
    • Pri použití hypervízora KVM na systémoch RISC-V bola pridaná podpora rozšírenia Smstateen, ktoré blokuje prístup virtuálnej mašiny k CPU registrom, ktoré hypervízor výslovne nepodporuje. Takisto bola pridaná podpora pre rozšírenie Zicond, ktoré umožňuje vykonávať niektoré podmienené celočíselné operácie v hosťujúcich systémoch.
    • V hosťujúcich systémoch na báze architektúry x86 prevádzkovaných pod KVM je povolené používanie až 4096 virtuálnych CPU.
  • Sieťový subsystém
    • Do ovládača NVMe-TCP (NVMe over TCP), ktorý umožňuje prístup k NVMe diskovým jednotkám cez sieť (NVM Express over Fabrics) pomocou protokolu TCP, bola pridaná podpora šifrovania prenosového kanála s použitím TLS (využíva sa KTLS a spúšťač v užívateľskom priestore tlshd na vyjednávanie spojenia).
    • Bola optimalizovaná výkonnosť plánovača paketov fq (Fair Queuing), čo umožnilo zvýšiť priepustnosť o 5% pri veľkých záťažiach v teste tcp_rr (TCP Request/Response) a o 13% pri neobmedzenom toku UDP paketov.
    • Do protokolu TCP bola pridaná voliteľná možnosť používania časových pečiatok (TCP TS) s mikrosekundovou presnosťou (RFC 7323), čo umožňuje presnejšie hodnotenie latencie a vytváranie pokročilejších modulov na riadenie preťaženia. Pre aktiváciu je možné použiť príkaz "ip route add 10/8 … features tcp_usec_ts".
    • Do TCP zásobníka bola pridaná podpora rozšírenia TCP-AO (TCP Authentication Option, RFC 5925), ktoré umožňuje verifikáciu TCP hlavičiek podľa MAC kódov (Message Authentication Code) s použitím moderných algoritmov HMAC-SHA1 a CMAC-AES-128 namiesto predtým dostupnej možnosti TCP-MD5 založenej na zastaranom algoritme MD5.
    • Bol pridaný nový typ virtuálnych sieťových zariadení "netkit", kde je logika prenosu dát definovaná pomocou BPF programu.
    • V KSMBD, implementácii SMB servera na úrovni jadra, bola pridaná podpora pre konverziu názvov súborov obsahujúcich surrogate páry zložených znakov.
    • V NFS bola vylepšená implementácia prúdov s RPC službami. Pridaná podpora pre delegovanie zápisu (pre NFSv4.1+). V NFSD bola pridaná podpora pre netlink spracovateľ rpc_status. Vylepšená podpora klientov NFSv4.x pri opätovnom exporte do knfsd.
  • Zariadenie
    • Do modulu jadra Nouveau bola pridaná základná podpora firmvéru GSP-RM, ktorý sa používa v GPU NVIDIA RTX 20+ na presunutie operácií iniciácie a správy GPU na samostatný mikrokontrolér GSP (GPU System Processor). Podpora GSP-RM umožňuje ovládaču Nouveau pracovať prostredníctvom volania firmvéru, namiesto priameho programovania operácií interakcie s hardvérom, čo výrazne zjednodušuje pridávanie podpory nových GPU NVIDIA vďaka už existujúcim volaniam na iniciáciu a správu spotreby energie.
    • V ovládači AMDGPU bola implementovaná podpora GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 a DML2. Zlepšená podpora bezproblémového načítania (bez blikania pri prepínaní videorežimu).
    • V ovládači i915 bola implementovaná podpora čipov Intel Meteor Lake a pridaná základná implementácia Intel LunarLake (Xe 2).
    • Pridaná podpora asymetrických kanálov prenosu, pridaných do špecifikácií USB4 v2 (120/40G).
    • Pridaná podpora ARM SoC: Qualcomm Snapdragon 720G (používa sa v smartfónoch Xiaomi), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (používa sa v routeroch a NAS).
    • Pridaná podpora smartfónu Fairphone 5 a ARM platforiem Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 Powkiddy RGB30.
    • Pridaná podpora RISC-V platforiem Milk-V Pioneer a Milk-V Duo.
    • Pridaná podpora zvukových rozhraní notebookov HUAWEI dodávaných s CPU AMD. Pridaná podpora dodatočných reproduktorov nainštalovaných na notebookoch Dell Oasis 13/14/16. Pridaná podpora vstavaných reproduktorov ASUS K6500ZC. Pridaná podpora indikátora vypnutia zvuku na notebookoch HP 255 G8 a G10. Pridaná podpora zvukových ovládačov acp6.3. Pridaná podpora profesionálnych zvukových rozhraní Focusrite Clarett+ 2Pre a 4Pre.

Zároveň latinskoamerická Nadácia slobodného softvéru vytvorila variantu úplne slobodného jadra 6.7 — Linux-libre 6.7-gnu, ktoré je vyčistené od prvkov firmvéru a ovládačov, ktoré obsahujú neslobodné komponenty alebo úseky kódu, ktorých použitie je obmedzené výrobcom. Vo vydaní 6.7 bol aktualizovaný kód čistenia blobov v rôznych ovládačoch a subsystémoch, ako sú napríklad ovládače amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs a btqca. Kód čistenia ovládačov localtalk a rtl8192u bol odstránený z dôvodu ich vylúčenia zo zloženia jadra. Odstránili sa nadbytočné komponenty čistenia ovládačov xhci-pci, rtl8xxxu a rtw8822b, ktoré boli predtým pridané omylom. Prebehlo čistenie názvov blobov v dts-súboroch pre architektúru Aarch64. Bloby v nových ovládačoch mt7925, tps6598x, aw87390 a aw88399 boli odstránené.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster