Linux-kärnan version 6.7

Efter två månaders utveckling presenterade Linus Torvalds releasen av Linux-kärnan 6.7. Bland de mest anmärkningsvärda förändringarna: integration av Bcachefs filsystem, upphörande av stöd för Itanium-arkitekturen, Nouveas förmåga att arbeta med GSP-R-firmware, stöd för TLS-kryptering i NVMe-TCP, möjligheten att använda undantag i BPF, stöd för futex i io_uring, optimering av fq (Fair Queuing) schemaläggarens prestanda ), stöd för tillägget TCP-AO (TCP Authentication Option) och möjligheten att begränsa nätverksanslutningar i Landlock-säkerhetsmekanismen, lagt till åtkomstkontroll till användarnamnutrymme och io_uring via AppArmor.

Den nya versionen innehåller 18405 2066 korrigeringar från 72 13467 utvecklare, patchstorleken är 906147 MB (ändringarna påverkade 341048 15291 filer, 2058 39 rader kod lades till, 45 6.7 rader raderades). Den senaste utgåvan hade 14 korrigeringar från 13 utvecklare, patchstorleken var 5 MB. Cirka 3 % av alla ändringar som introduceras i XNUMX är relaterade till drivrutiner, cirka XNUMX % av ändringarna är relaterade till uppdateringskod som är specifik för hårdvaruarkitekturer, XNUMX % är relaterade till nätverksstacken, XNUMX % är relaterade till filsystem och XNUMX % är relaterade till interna kärndelsystem.

Huvudsakliga innovationer i kärnan 6.7:

  • Diskundersystem, I/O och filsystem
    • Kärnan använder Bcachefs filsystemkod, som försöker uppnå prestanda, tillförlitlighet och skalbarhet för XFS, kombinerat med delar av den avancerade funktionaliteten som finns i Btrfs och ZFS. Till exempel stöder Bcachefs funktioner som att inkludera flera enheter i en partition, enhetslayouter i flera lager (det nedre lagret med ofta använda data baserade på snabba SSD-enheter och det översta lagret med mindre använda data från hårddiskar), replikering (RAID) 1/10), cachelagring, transparent datakomprimering (LZ4, gzip och ZSTD-lägen), tillståndssnitt (ögonblicksbilder), integritetsverifiering med kontrollsummor, möjligheten att lagra Reed-Solomon felkorrigeringskoder (RAID 5/6), lagring av information i krypterad form (ChaCha20 och Poly1305 används ). När det gäller prestanda ligger Bcachefs före Btrfs och andra filsystem baserade på Copy-on-Write-mekanismen, och visar drifthastighet nära Ext4 och XFS.
    • Btrfs-filsystemet introducerar ett förenklat kvotläge som gör att du kan uppnå högre prestanda genom att spåra omfattningar endast i underpartitionen där de skapas, vilket avsevärt förenklar beräkningar och förbättrar prestanda, men inte tillåter dig att ta hänsyn till omfattningar som delas i flera underpartitioner.
    • Btrfs har lagt till en ny "stripe tree"-datastruktur, lämplig för logisk omfattningskartering i situationer där fysiska mappningar inte stämmer överens mellan enheter. Strukturen används för närvarande i implementeringar av RAID0 och RAID1 för zonerade blockenheter. I framtiden planerar de att använda denna struktur i RAID på högre nivåer, vilket kommer att lösa ett antal problem som finns i den nuvarande implementeringen.
    • Ceph-filsystemet implementerar stöd för kartläggning av användar-ID:n för monterade filsystem, som används för att matcha filerna för en specifik användare på en monterad främmande partition med en annan användare på det aktuella systemet.
    • Lade till möjligheten att specificera uid och gid vid mount till efivarfs för att tillåta icke-rotprocesser att ändra UEFI-variabler.
    • Lade till ioctl-anrop till exFAT för att läsa och ändra FS-attribut. Tillagd hantering av kataloger i nollstorlek.
    • F2FS implementerar möjligheten att använda 16K block.
    • Autofs automonteringsmekanism har ändrats för att använda det nya partitionsmonterings-API.
    • OverlayFS erbjuder monteringsalternativ "lowerdir+" och "datadir+". Lade till stöd för kapslad montering av OverlayFS med xattrs.
    • XFS har optimerat CPU-belastningen i realtidsblockallokeringskoden. Möjligheten att samtidigt utföra läs- och FICLONE-operationer tillhandahålls.
    • EXT2-koden har konverterats för att använda sidfolios.
  • Minnes- och systemtjänster
    • Stödet för ia64-arkitekturen som används i Intel Itanium-processorer, som helt avvecklades 2021, har upphört. Itanium-processorer introducerades av Intel 2001, men ia64-arkitekturen kunde inte konkurrera med AMD64, främst på grund av högre prestanda hos AMD64 och den mjukare övergången från 32-bitars x86-processorer. Som ett resultat skiftade Intels intressen till förmån för x86-64-processorer, och Itaniums parti förblev HP Integrity-servrar, som beställningar stoppades för tre år sedan. Koden för ia64-stöd togs bort från kärnan främst på grund av den långvariga bristen på stöd för denna plattform, medan Linus Torvalds uttryckte sin vilja att återföra ia64-stöd till kärnan, men bara om det finns en underhållare som kan visa hög kvalitet stöd för denna plattform utanför huvudkärnan i minst ett år.
    • Lade till "ia32_emulation" kärnlinjekommandoparametern, som låter dig aktivera eller inaktivera stöd för 32-bitars emulering i kärnor byggda för x86-64-arkitekturen vid uppstart. På den praktiska sidan låter det nya alternativet dig bygga kärnan med stöd för kompatibilitet med 32-bitars applikationer, men inaktivera detta läge som standard för att minska attackvektorn på kärnan, eftersom kompatibilitets-API:et är mindre testat än huvudkärnan gränssnitt.
    • Fortsatt migrering av ändringar från Rust-for-Linux-grenen relaterade till användningen av Rust-språket som ett andra språk för att utveckla drivrutiner och kärnmoduler (Rust-stöd är inte aktivt som standard och leder inte till inkluderingen av Rust bland nödvändiga monteringsberoenden för kärnan). Den nya versionen gör övergången till att använda Rust 1.73-versionen och erbjuder en uppsättning bindningar för att arbeta med arbetsköer.
    • Det är möjligt att använda binfmt_misc-mekanismen för att lägga till stöd för nya körbara filformat (till exempel för att köra kompilerade Java- eller Python-applikationer) inom separata oprivilegierade namnutrymmen.
    • Cgroup-kontrollern cpuset, som låter dig styra användningen av CPU-kärnor när du kör en uppgift, ger en uppdelning i lokal och fjärrpartitionering, som skiljer sig åt i om den överordnade cgroupen är rätt rotsektion eller inte. Nya inställningar "cpuset.cpus.exclusive" och "cpuset.cpus.excluisve.effective" har också lagts till cpuset för exklusiv CPU-bindning.
    • BPF-delsystemet implementerar stöd för undantag, som bearbetas som en nödutgång från ett BPF-program med möjlighet att säkert avveckla stackramar. Dessutom tillåter BPF-program användning av kptr-pekare i anslutning till CPU:n.
    • Stöd för operationer med futex har lagts till i delsystemet io_uring, och nya operationer har implementerats: IORING_OP_WAITID (asynkron version av waitid), SOCKET_URING_OP_GETSOCKOPT (getsockoptand option), SOCKET_URING_OP_SETSOCKOPT (setsockopt-alternativet_ och REHOTIOAD läser inte MULTIRING) det finns data eller är inte full buffert).
    • Lade till implementering av lätta enkelkopplade FIFO-köer som kräver ett spinlock endast för avköning i ett processsammanhang och avstår från ett spinlock för atomära tillägg till kön i alla sammanhang.
    • Lade till en ringbuffert "objpool" med en skalbar implementering av en högpresterande kö för att allokera och returnera objekt.
    • Den första delen av ändringarna har lagts till för att implementera det nya futex2 API, som har bättre prestanda på NUMA-system, stöder andra storlekar än 32 bitar och kan användas istället för det multiplexerade futex()-systemanropet.
    • För ARM32- och S390x-arkitekturer har stöd för den aktuella uppsättningen (cpuv4) av BPF-instruktioner lagts till.
    • För RISC-V-arkitekturen är det möjligt att använda Shadow-Call Stack-kontrollläget som är tillgängligt i Clang 17, designat för att skydda mot överskrivning av returadressen från en funktion i händelse av ett buffertspill på stacken. Kärnan i skyddet är att spara returadressen i en separat "skuggstack" efter att ha överfört kontrollen till en funktion och hämtat denna adress innan funktionen avslutas.
    • Ett nytt smart minnessidaskanningsläge har lagts till mekanismen för att slå samman identiska minnessidor (KSM: Kernel Samepage Merging), som spårar misslyckade skannade sidor och minskar intensiteten i deras återskanning. För att aktivera det nya läget har inställningen /sys/kernel/mm/ksm/smart_scan lagts till.
    • Lade till ett nytt ioctl-kommando PAGEMAP_SCAN, som, när det används med userfaultfd(), låter dig fastställa fakta om att skriva till ett specifikt minnesområde. Den nya funktionen kan till exempel användas i systemet för att spara och återställa tillståndet för CRIU-processer eller i anti-cheat-system.
    • I monteringssystemet, om Clang-kompilatorn är tillgänglig, är sammansättningen av exempel på användning av perf-delsystemet, skrivet som BPF-program, aktiverat som standard.
    • Det gamla videobuf-lagret, som användes för att hantera framebuffers i medieundersystemet och ersattes av en ny implementering av videobuf10 för mer än 2 år sedan, har tagits bort.
  • Virtualisering och säkerhet
    • Möjligheten att kryptera data i block som är mindre än blockstorleken i filsystemet har lagts till i fscrypt-undersystemet. Detta kan krävas för att aktivera hårdvarukrypteringsmekanismer som endast stöder små block (till exempel UFS-kontroller som endast stöder en 4096 blockstorlek kan användas med ett filsystem med en 16K blockstorlek).
    • "iommufd"-undersystemet, som låter dig hantera IOMMU (I/O Memory-Management Unit) minnessidetabeller genom filbeskrivningar från användarutrymmet, har lagt till spårning av data som ännu inte har tömts från cachen (smutsig) för DMA operationer, som är nödvändiga för att fastställa minne med outspädd data under processmigrering.
    • Stöd för att definiera regler för åtkomstkontroll för TCP-sockets har lagts till i Landlock-mekanismen, som låter dig begränsa interaktionen mellan en grupp processer och den externa miljön. Du kan till exempel skapa en regel som endast tillåter åtkomst till nätverksport 443 för att upprätta HTTPS-anslutningar.
    • AppArmor-delsystemet har lagt till möjligheten att kontrollera åtkomst till io_uring-mekanismen och skapa användarnamnrymder, vilket gör att du selektivt kan tillåta åtkomst till dessa funktioner endast för vissa processer.
    • Lade till virtuell maskin attestation API för att verifiera integriteten för den virtuella maskinens startprocess.
    • LoongArch-system stöder virtualisering med KVM-hypervisorn.
    • När du använder KVM-hypervisorn på RISC-V-system har stöd för Smstateen-tillägget dykt upp, vilket blockerar den virtuella maskinen från att komma åt CPU-register som inte uttryckligen stöds av hypervisorn. Lade också till stöd för användningen av Zicond-tillägget i gästsystem, vilket tillåter användning av vissa villkorade heltalsoperationer.
    • I x86-baserade gästsystem som körs under KVM är upp till 4096 virtuella processorer tillåtna.
  • Nätverksdelsystem
    • Drivrutinen NVMe-TCP (NVMe over TCP), som låter dig komma åt NVMe-enheter över nätverket (NVM Express over Fabrics) med TCP-protokollet, har lagt till stöd för kryptering av dataöverföringskanalen med TLS (med KTLS och en bakgrundsprocess i användarutrymme tlshd för anslutningsförhandling).
    • Prestandan för paketschemaläggaren fq (Fair Queuing) optimerades, vilket gjorde det möjligt att öka genomströmningen med 5 % under tunga belastningar i tcp_rr (TCP Request/Response)-testet och med 13 % med ett obegränsat flöde av UDP-paket.
    • TCP lägger till en valfri mikrosekundprecisionstidstämpel (TCP TS)-kapacitet (RFC 7323), som möjliggör mer exakt latensuppskattning och mer avancerade överbelastningskontrollmoduler. För att aktivera det kan du använda kommandot "ip route add 10/8 ... features tcp_usec_ts".
    • TCP-stacken har lagt till stöd för tillägget TCP-AO (TCP Authentication Option, RFC 5925), vilket gör det möjligt att verifiera TCP-huvuden med hjälp av MAC-koder (Message Authentication Code), med hjälp av modernare algoritmer HMAC-SHA1 och CMAC-AES- 128 istället tidigare tillgängligt TCP-MD5-alternativ baserat på den äldre MD5-algoritmen.
    • En ny typ av virtuella nätverksenheter "netkit" har lagts till, där dataöverföringslogiken ställs in med hjälp av ett BPF-program.
    • KSMBD, en implementering på kärnnivå av en SMB-server, har lagt till stöd för att lösa filnamn som innehåller surrogatpar av sammansatta tecken.
    • NFS har förbättrat implementeringen av trådar med RPC-tjänster. Tillagt stöd för skrivdelegering (för NFSv4.1+). NFSD har lagt till stöd för rpc_status netlink-hanteraren. Förbättrat stöd för NFSv4.x-klienter vid återexport till knfsd.
  • Оборудование
    • Initialt stöd för GSP-RM-firmware har lagts till Nouveau-kärnmodulen, som används i NVIDIA RTX 20+ GPU för att flytta initialiserings- och GPU-kontrolloperationer till sidan av en separat GSP-mikrokontroller (GPU System Processor). GSP-RM-stöd låter Nouveau-drivrutinen arbeta genom anrop till fast programvara, snarare än att direkt programmera hårdvaruinteraktioner, vilket gör det mycket lättare att lägga till stöd för nya NVIDIA GPU:er genom att använda förbyggda anrop för initiering och energihantering.
    • AMDGPU-drivrutinen stöder GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 och DML2. Förbättrat stöd för sömlös laddning (inget flimmer vid byte av videoläge).
    • i915-drivrutinen lägger till stöd för Intel Meteor Lake-chips och lägger till en initial implementering av Intel LunarLake (Xe 2).
    • Tillagt stöd för asymmetriska överföringskanaler lagt till USB4 v2 (120/40G) specifikationen.
    • Tillagt stöd för ARM SoC: Qualcomm Snapdragon 720G (används i Xiaomi-smarttelefoner), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (används i routrar och NAS).
    • Lade till stöd för Fairphone 5-smarttelefonen och ARM-korten Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 Powkiddy RGB30.
    • Tillagt stöd för RISC-V-brädorna Milk-V Pioneer och Milk-V Duo.
    • Tillagt stöd för ljudgränssnitt för bärbara HUAWEI-datorer som levereras med AMD-processorer. Tillagt stöd för ytterligare högtalare installerade på bärbara datorer från Dell Oasis 13/14/16. Tillagt stöd för inbyggda högtalare ASUS K6500ZC. Lade till stöd för mute-indikatorn på HP 255 G8 och G10 bärbara datorer. Tillagt stöd för acp6.3 ljuddrivrutiner. Tillagt stöd för Focusrite Clarett+ 2Pre och 4Pre professionella inspelningsgränssnitt.

Samtidigt bildade Latin American Free Software Foundation en version av den helt fria kärnan 6.7 - Linux-libre 6.7-gnu, rensat från element av firmware och drivrutiner som innehåller icke-fria komponenter eller kodsektioner, vars omfattning är begränsad av tillverkaren. I version 6.7 har blob-rensningskoden uppdaterats i olika drivrutiner och delsystem, till exempel i drivrutinerna amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs och btqca. Koden för rengöring av localtalk- och rtl8192u-drivrutinerna har tagits bort på grund av att de uteslutits från kärnan. Tog bort onödiga komponenter för rengöring av xhci-pci, rtl8xxxu och rtw8822b drivrutiner, som tidigare lagts till av misstag. Rensat upp blobnamn i dts-filer för Aarch64-arkitekturen. Tog bort blobbar i de nya drivrutinerna mt7925, tps6598x, aw87390 och aw88399.

Källa: opennet.ru

Lägg en kommentar