Vydanie jadra Linux 6.7

Po dvoch mesiacoch vývoja predstavil Linus Torvalds vydanie linuxového jadra 6.7. Medzi najvýznamnejšie zmeny patrí integrácia súborového systému Bcachefs, ukončenie podpory architektúry Itanium, schopnosť Nouvea pracovať s firmvérom GSP-R, podpora šifrovania TLS v NVMe-TCP, možnosť používať výnimky v BPF, podpora pre futex v io_uring, optimalizácia výkonu plánovača fq (Fair Queuing), podpora pre rozšírenie TCP-AO (možnosť overenia TCP) a možnosť obmedziť sieťové pripojenia v bezpečnostnom mechanizme Landlock, pridaná kontrola prístupu k priestoru názvov používateľov a io_uring cez AppArmor.

Nová verzia obsahuje 18405 2066 opráv od 72 13467 vývojárov, veľkosť záplaty je 906147 MB (zmeny sa dotkli 341048 15291 súborov, bolo pridaných 2058 39 riadkov kódu, zmazaných 45 6.7 riadkov). Posledné vydanie malo 14 opráv od 13 vývojárov, veľkosť opravy bola 5 MB. Približne 3 % všetkých zmien zavedených v XNUMX súvisí s ovládačmi zariadení, približne XNUMX % zmien súvisí s aktualizáciou kódu špecifického pre hardvérové ​​architektúry, XNUMX % súvisí so sieťovým zásobníkom, XNUMX % súvisí so súborovými systémami a XNUMX % súvisia s internými subsystémami jadra.

Kľúčové inovácie v jadre 6.7:

  • Diskový subsystém, I/O a súborové systémy
    • Jadro používa kód súborového systému Bcachefs, ktorý sa pokúša dosiahnuť výkon, spoľahlivosť a škálovateľnosť XFS v kombinácii s prvkami pokročilej funkcionality nájdenej v Btrfs a ZFS. Napríklad Bcachefs podporuje funkcie, ako je zahrnutie viacerých zariadení do oddielu, viacvrstvové rozloženie diskov (spodná vrstva s často používanými údajmi založenými na rýchlych SSD a horná vrstva s menej používanými údajmi z pevných diskov), replikácia (RAID 1/10), ukladanie do vyrovnávacej pamäte, transparentná kompresia dát (režimy LZ4, gzip a ZSTD), stavové rezy (snímky), overenie integrity pomocou kontrolných súčtov, možnosť ukladať kódy opravy chýb Reed-Solomon (RAID 5/6), ukladanie informácií do zašifrovanej forme (používajú sa ChaCha20 a Poly1305). Pokiaľ ide o výkon, Bcachefs je pred Btrfs a inými súborovými systémami založenými na mechanizme Copy-on-Write a demonštruje prevádzkovú rýchlosť blízku Ext4 a XFS.
    • Súborový systém Btrfs zavádza zjednodušený režim kvót, ktorý umožňuje dosiahnuť vyšší výkon sledovaním rozsahov iba v pododdiele, v ktorom sú vytvorené, čo výrazne zjednodušuje výpočty a zlepšuje výkon, ale neumožňuje brať do úvahy rozsahy zdieľané vo viacerých pododdielov.
    • Btrfs pridal novú dátovú štruktúru „stripe tree“, vhodnú na mapovanie logických rozsahov v situáciách, keď sa fyzické mapovania medzi zariadeniami nezhodujú. Štruktúra sa v súčasnosti používa v implementáciách RAID0 a RAID1 pre zónované blokové zariadenia. V budúcnosti plánujú túto štruktúru použiť v RAID vyššej úrovne, čím sa vyrieši množstvo problémov existujúcich v súčasnej implementácii.
    • Súborový systém Ceph implementuje podporu pre mapovanie ID používateľov pripojených súborových systémov, ktoré sa používajú na porovnávanie súborov konkrétneho používateľa na pripojenom cudzom oddiele s iným používateľom v aktuálnom systéme.
    • Pridaná možnosť špecifikovať uid a gid pri pripájaní k efivarfs, aby umožnili procesom, ktoré nie sú root, meniť premenné UEFI.
    • Pridané volania ioctl do exFAT na čítanie a zmenu atribútov FS. Pridané spracovanie adresárov s nulovou veľkosťou.
    • F2FS implementuje schopnosť používať 16K bloky.
    • Mechanizmus automatického pripájania autofs bol prepnutý tak, aby používal nové API na pripojenie oddielu.
    • OverlayFS ponúka možnosti pripojenia „lowerdir+“ a „datadir+“. Pridaná podpora pre vnorenú montáž OverlayFS s xattrs.
    • XFS optimalizovalo zaťaženie CPU v kóde prideľovania blokov v reálnom čase. Poskytuje sa schopnosť súčasne vykonávať operácie čítania a FICLONE.
    • Kód EXT2 bol skonvertovaný na používanie fólií strán.
  • Pamäťové a systémové služby
    • Podpora architektúry ia64 používanej v procesoroch Intel Itanium, ktoré boli úplne ukončené v roku 2021, bola ukončená. Procesory Itanium predstavil Intel v roku 2001, ale architektúra ia64 nedokázala konkurovať AMD64, najmä kvôli vyššiemu výkonu AMD64 a plynulejšiemu prechodu z 32-bitových x86 procesorov. V dôsledku toho sa záujmy Intelu posunuli v prospech procesorov x86-64 a Itanium zostali servery HP Integrity, ktorých objednávky boli zastavené pred tromi rokmi. Kód pre podporu ia64 bol z jadra odstránený najmä z dôvodu dlhodobého nedostatku podpory pre túto platformu, pričom Linus Torvalds vyjadril ochotu vrátiť jadru podporu ia64, ale iba v prípade, že existuje správca, ktorý dokáže preukázať vysokú kvalitu podpora pre túto platformu mimo hlavného jadra najmenej jeden rok.
    • Pridaný parameter príkazového riadku jadra „ia32_emulation“, ktorý vám umožňuje povoliť alebo zakázať podporu emulácie 32-bitového režimu v jadrách vytvorených pre architektúru x86-64 vo fáze zavádzania. Z praktického hľadiska vám nová možnosť umožňuje zostaviť jadro s podporou kompatibility s 32-bitovými aplikáciami, ale tento režim predvolene zakážete, aby sa znížil vektor útoku na jadro, pretože API kompatibility je menej testované ako hlavné jadro. rozhrania.
    • Pokračujúca migrácia zmien z vetvy Rust-for-Linux súvisiacich s používaním jazyka Rust ako druhého jazyka na vývoj ovládačov a modulov jadra (podpora Rust nie je štandardne aktívna a nevedie k zahrnutiu Rust medzi požadované závislosti zostavy pre jadro). Nová verzia prechádza na používanie vydania Rust 1.73 a ponúka sadu väzieb pre prácu s pracovnými frontami.
    • Je možné použiť mechanizmus binfmt_misc na pridanie podpory pre nové formáty spustiteľných súborov (napríklad na spustenie kompilovaných aplikácií Java alebo Python) v rámci samostatných neprivilegovaných menných priestorov.
    • Radič cgroup cpuset, ktorý vám umožňuje riadiť využitie jadier CPU pri vykonávaní úlohy, poskytuje rozdelenie na lokálne a vzdialené rozdelenie, ktoré sa líšia v tom, či je nadradená cgroup správna koreňová sekcia alebo nie. Do cpuset boli tiež pridané nové nastavenia „cpuset.cpus.exclusive“ a „cpuset.cpus.excluisve.effective“ pre exkluzívne viazanie CPU.
    • Subsystém BPF implementuje podporu pre výnimky, ktoré sú spracované ako núdzový východ z programu BPF so schopnosťou bezpečne odvíjať stohovacie rámce. Okrem toho programy BPF umožňujú použitie ukazovateľov kptr v spojení s CPU.
    • Do subsystému io_uring bola pridaná podpora pre operácie s futexom a boli implementované nové operácie: IORING_OP_WAITID (asynchrónna verzia waitid), SOCKET_URING_OP_GETSOCKOPT (možnosť getsockoptand), SOCKET_URING_OP_SETSOCKOPT (možnosť setsockopt) a IORING_OP_WAITID, kým sa operácie nezastavia. existujú údaje alebo nie je plná vyrovnávacia pamäť).
    • Pridaná implementácia ľahkých, jednoducho pripojených FIFO frontov, ktoré vyžadujú spinlock iba na vyradenie z frontu v kontexte procesu a upustili od spinlocku pre atómové pridávanie do frontu v akomkoľvek kontexte.
    • Pridaný kruhový buffer "objpool" so škálovateľnou implementáciou vysokovýkonného frontu na prideľovanie a vracanie objektov.
    • Počiatočná časť zmien bola pridaná na implementáciu nového API futex2, ktoré má lepší výkon na systémoch NUMA, podporuje iné veľkosti ako 32 bitov a možno ho použiť namiesto systémového volania multiplexovaného futex().
    • Pre architektúry ARM32 a S390x bola pridaná podpora pre aktuálnu sadu (cpuv4) inštrukcií BPF.
    • Pre architektúru RISC-V je možné použiť režim kontroly Shadow-Call Stack dostupný v Clang 17, určený na ochranu pred prepísaním návratovej adresy z funkcie v prípade pretečenia vyrovnávacej pamäte na zásobníku. Podstatou ochrany je uloženie návratovej adresy do samostatného „tieňového“ zásobníka po prenose riadenia na funkciu a načítaní tejto adresy pred ukončením funkcie.
    • Do mechanizmu zlučovania identických pamäťových stránok pribudol nový režim skenovania inteligentnej pamäte (KSM: Kernel Samepage Merging), ktorý sleduje neúspešne naskenované stránky a znižuje intenzitu ich opätovného skenovania. Na povolenie nového režimu bolo pridané nastavenie /sys/kernel/mm/ksm/smart_scan.
    • Pridaný nový príkaz ioctl PAGEMAP_SCAN, ktorý pri použití s ​​userfaultfd() umožňuje určiť fakty zápisu do špecifického rozsahu pamäte. Nová funkcia môže byť napríklad použitá v systéme na uloženie a obnovenie stavu procesov CRIU alebo v herných anti-cheat systémoch.
    • Ak je v zostavovacom systéme dostupný kompilátor Clang, zostavenie príkladov použitia podsystému perf, napísaného ako programy BPF, je štandardne povolené.
    • Stará vrstva videobuf, ktorá sa používala na správu framebufferov v mediálnom subsystéme a pred viac ako 10 rokmi bola nahradená novou implementáciou videobuf2, bola odstránená.
  • Virtualizácia a bezpečnosť
    • Do subsystému fscrypt bola pridaná možnosť šifrovania údajov v blokoch menších ako je veľkosť bloku v súborovom systéme. To môže byť potrebné na povolenie mechanizmov hardvérového šifrovania, ktoré podporujú iba malé bloky (napríklad radiče UFS, ktoré podporujú iba veľkosť bloku 4096, možno použiť so systémom súborov s veľkosťou bloku 16 kB).
    • Subsystém „iommufd“, ktorý vám umožňuje spravovať tabuľky stránok pamäte IOMMU (I/O Memory-Management Unit) prostredníctvom deskriptorov súborov z používateľského priestoru, pridal sledovanie údajov, ktoré ešte neboli vymazané z vyrovnávacej pamäte (špinavé) pre DMA. operácie, ktoré sú potrebné na určenie pamäte s nevyprázdnenými dátami počas migrácie procesov.
    • Do mechanizmu Landlock bola pridaná podpora pre definovanie pravidiel riadenia prístupu pre TCP sockety, čo umožňuje obmedziť interakciu skupiny procesov s vonkajším prostredím. Môžete napríklad vytvoriť pravidlo, ktoré povoľuje prístup iba k sieťovému portu 443 na vytvorenie pripojení HTTPS.
    • Subsystém AppArmor pridal možnosť riadiť prístup k mechanizmu io_uring a vytvárať užívateľské menné priestory, čo umožňuje selektívne povoliť prístup k týmto schopnostiam len určitým procesom.
    • Pridané rozhranie API na overenie virtuálneho počítača na overenie integrity procesu zavádzania virtuálneho počítača.
    • Systémy LoongArch podporujú virtualizáciu pomocou hypervízora KVM.
    • Pri používaní hypervízora KVM na systémoch RISC-V sa objavila podpora rozšírenia Smstateen, ktoré blokuje virtuálny stroj v prístupe k registrom CPU, ktoré hypervízor výslovne nepodporuje. Pridaná aj podpora pre použitie rozšírenia Zicond v hosťujúcich systémoch, ktoré umožňuje použitie niektorých podmienených celočíselných operácií.
    • V hosťovských systémoch založených na x86 bežiacich pod KVM je povolených až 4096 virtuálnych CPU.
  • Sieťový subsystém
    • Ovládač NVMe-TCP (NVMe over TCP), ktorý vám umožňuje pristupovať k jednotkám NVMe cez sieť (NVM Express over Fabrics) pomocou protokolu TCP, pridal podporu pre šifrovanie kanála prenosu údajov pomocou TLS (pomocou KTLS a procesu na pozadí v používateľskom priestore tlshd na vyjednávanie pripojenia).
    • Optimalizovaný bol výkon plánovača paketov fq (Fair Queuing), čo umožnilo zvýšiť priepustnosť o 5 % pri veľkom zaťažení v teste tcp_rr (TCP Request/Response) a o 13 % pri neobmedzenom toku UDP paketov.
    • TCP pridáva voliteľnú funkciu časovej pečiatky s presnosťou na mikrosekundu (TCP TS) (RFC 7323), ktorá umožňuje presnejší odhad latencie a pokročilejšie moduly riadenia preťaženia. Ak to chcete povoliť, môžete použiť príkaz „ip route add 10/8 ... features tcp_usec_ts“.
    • Do zásobníka TCP bola pridaná podpora pre rozšírenie TCP-AO (TCP Authentication Option, RFC 5925), ktoré umožňuje overiť TCP hlavičky pomocou MAC kódov (Message Authentication Code), pomocou modernejších algoritmov HMAC-SHA1 a CMAC-AES- 128 namiesto predtým dostupnej možnosti TCP-MD5 založenej na starom algoritme MD5.
    • Pribudol nový typ virtuálnych sieťových zariadení „netkit“, v ktorom je logika prenosu dát nastavená pomocou programu BPF.
    • KSMBD, implementácia servera SMB na úrovni jadra, pridala podporu pre rozlíšenie názvov súborov obsahujúcich náhradné páry zložených znakov.
    • NFS zlepšil implementáciu vlákien so službami RPC. Pridaná podpora pre delegovanie zápisu (pre NFSv4.1+). NFSD pridal podporu pre obslužný program netlink rpc_status. Vylepšená podpora pre klientov NFSv4.x pri opätovnom exporte do knfsd.
  • Оборудование
    • Počiatočná podpora firmvéru GSP-RM bola pridaná do modulu jadra Nouveau, ktorý sa používa v GPU NVIDIA RTX 20+ na presun operácií inicializácie a ovládania GPU na stranu samostatného mikrokontroléra GSP (GPU System Processor). Podpora GSP-RM umožňuje ovládaču Nouveau pracovať prostredníctvom volaní firmvéru namiesto priameho programovania interakcií s hardvérom, vďaka čomu je oveľa jednoduchšie pridať podporu pre nové GPU NVIDIA pomocou vopred vytvorených volaní na inicializáciu a správu napájania.
    • Ovládač 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 pre bezproblémové načítanie (bez blikania pri prepínaní režimu videa).
    • Ovládač i915 pridáva podporu pre čipy Intel Meteor Lake a pridáva počiatočnú implementáciu Intel LunarLake (Xe 2).
    • Pridaná podpora pre asymetrické prenosové kanály pridaná do špecifikácie USB4 v2 (120/40G).
    • Pridaná podpora pre ARM SoC: Qualcomm Snapdragon 720G (používaný v smartfónoch Xiaomi), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (používaný v smerovačoch a NAS).
    • Pridaná podpora pre smartfón Fairphone 5 a ARM dosky Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 Powkiddy RGB30.
    • Pridaná podpora pre RISC-V dosky Milk-V Pioneer a Milk-V Duo.
    • Pridaná podpora pre zvukové rozhrania notebookov HUAWEI dodávaných s procesormi AMD. Pridaná podpora pre ďalšie reproduktory nainštalované na notebookoch Dell Oasis 13/14/16. Pridaná podpora pre vstavané reproduktory ASUS K6500ZC. Pridaná podpora pre indikátor stlmenia na notebookoch HP 255 G8 a G10. Pridaná podpora pre zvukové ovládače acp6.3. Pridaná podpora pre profesionálne nahrávacie rozhrania Focusrite Clarett+ 2Pre a 4Pre.

V tom istom čase Latin American Free Software Foundation vytvorila verziu úplne slobodného jadra 6.7 - Linux-libre 6.7-gnu, zbavenú prvkov firmvéru a ovládačov obsahujúcich neslobodné komponenty alebo časti kódu, ktorých rozsah je obmedzený. výrobcom. Vo verzii 6.7 bol aktualizovaný kód čistenia blob v rôznych ovládačoch a podsystémoch, napríklad v ovládačoch amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs a btqca. Kód na čistenie ovládačov localtalk a rtl8192u bol odstránený z dôvodu ich vylúčenia z jadra. Odstránené nepotrebné komponenty na čistenie ovládačov xhci-pci, rtl8xxxu a rtw8822b, ktoré boli predtým pridané omylom. Vyčistené názvy objektov blob v súboroch dts pre architektúru Aarch64. Odstránené bloby v nových ovládačoch mt7925, tps6598x, aw87390 a aw88399.

Zdroj: opennet.ru

Pridať komentár