Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds slÀppet av Linux kÀrna 6.7. Bland de mest mÀrkbara förÀndringarna finns: integration av filsystemet Bcachefs, upphörande av stöd för Itanium-arkitekturen, möjlighet för Nouveau att fungera 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, prestandaoptimering av schemalÀggaren fq (Fair Queuing), stöd för TCP-AO (TCP Authentication Option) och möjlighet att begrÀnsa nÀtverksanslutningar i Landlock-skyddsmekanismen, samt tillagd Ätkomsthantering för user namespace och io_uring genom AppArmor.
I den nya versionen har 18405 patchar accepterats frÄn 2066 utvecklare, patchstorleken Àr 72 MB (förÀndringarna berörde 13467 filer, 906147 rader kod har lagts till, och 341048 rader har tagits bort). I den föregÄende versionen fanns 15291 patchar frÄn 2058 utvecklare, och patchstorleken var 39 MB. UngefÀr 45% av alla förÀndringar i 6.7 Àr relaterade till enhetsdrivrutiner, cirka 14% av förÀndringarna handlar om uppdatering av arkitekturspecifik kod, 13% Àr relaterade till nÀtverksstacken, 5% handlar om filsystem och 3% om interna kÀrnsystem.
Huvudnyheterna i kÀrna 6.7:
- Disksubsystem, in- och utmatning och filsystem
- Koden för filsystemet Bcachefs har accepterats i kÀrnan, dÀr man har försökt att uppnÄ nivÄer av prestanda, tillförlitlighet och skalbarhet som Àr typiska för XFS, i kombination med inslag av utökad funktionalitet som finns i Btrfs och ZFS. Till exempel stöder Bcachefs funktioner som att inkludera flera enheter i en partition, flerlagerslagring av enheter (lÀge med ofta anvÀnda data pÄ snabba SSD-enheter och ett överliggande lager med mindre efterfrÄgade data frÄn hÄrddiskar), replikering (RAID 1/10), cachelagring, transparent datakompression (LZ4, gzip och ZSTD-lÀgen), snapshots, integritetsverifiering via checksummor, möjlighet att lagra Reed-Solomon felkorrigeringskoder (RAID 5/6) och lagring av information i krypterad form (anvÀnder ChaCha20 och Poly1305). NÀr det gÀller prestanda övertrÀffar Bcachefs Btrfs och andra filsystem baserade pÄ Copy-on-Write-mekanismen och visar en hastighet som ligger nÀra Ext4 och XFS.
- I filsystemet Btrfs har en förenklad kvotlÀge introducerats som möjliggör högre prestanda genom att spÄra extents endast i den underkategori dÀr de skapas, vilket avsevÀrt förenklar berÀkningarna och ökar prestandan, men inte tillÄter att beakta extents som anvÀnds gemensamt i flera underkategorier.
- Btrfs har fÄtt en ny datastruktur "stripe tree", som Àr lÀmplig för logisk mappning av extents i situationer dÀr den fysiska mappningen inte överensstÀmmer mellan olika enheter. Strukturen anvÀnds för nÀrvarande i implementationer av RAID0 och RAID1 för zonerade blockenheter. I framtiden planeras denna struktur att anvÀndas Àven i RAID av högre nivÄ, vilket kommer att lösa flera problem i den nuvarande implementationen.
- I filsystemet Ceph har stöd för mappning av anvÀndaridentifierare för monterade filsystem implementerats, vilket anvÀnds för att kartlÀgga filer tillhörande en viss anvÀndare pÄ en monterad, frÀmmande partition till en annan anvÀndare i det aktuella systemet.
- I efivarfs har möjligheten att ange uid och gid vid montering lagts till för att möjliggöra Àndringar av UEFI-variabler av processer som körs utan root-rÀttigheter.
- I exFAT har ioctl-anrop lagts till för att lÀsa och Àndra filsystemets attribut. Stöd för kataloger med noll storlek har lagts till.
- I F2FS har funktionen att anvÀnda block av storlek 16K implementerats.
- AutofjÀllssystemet autofs har övergÄtt till att anvÀnda det nya API:et för monteringspartitioner.
- I OverlayFS har monteringsalternativen "lowerdir+" och "datadir+" föreslagits. Stöd för inbÀddad montering av OverlayFS med xattrs har lagts till.
- I XFS har CPU-belastningen optimerats i koden för blockdistribution i realtid. Möjlighet för samtidig utförande av lÀsoperationer och FICLONE har sÀkerstÀllts.
- Koden för EXT2 har övergÄtt till att anvÀnda sidoförteckningar för minnet (page folios).
- Minne och systemtjÀnster
- Stöd för ia64-arkitekturen, som anvÀndes i Intel Itanium-processorer, har upphört, och försÀljningen av dessa avslutades helt 2021. Itanium-processorerna introducerades av Intel 2001, men ia64-arkitekturen kunde inte konkurrera med AMD64, huvudsakligen pÄ grund av högre prestanda hos AMD64 och en smidigare övergÄng frÄn 32-bitars x86-processorer. Som ett resultat har Intels intressen flyttats till x86-64-processorer, med Itanium som en kvarleva. servrar HP Integrity, vars ordermottagning upphörde för tre Är sedan. Stödkoden för ia64 har tagits bort frÄn kÀrnan frÀmst pÄ grund av avsaknaden av stöd för denna plattform under en lÀngre tid. Linus Torvalds har uttryckt villighet att Äterinföra ia64-stödet i kÀrnan, men endast om nÄgon kan visa att de kan upprÀtthÄlla stöd för plattformen utanför kÀrnan under minst ett Är.
- En kÀrnkommandoradsparameter "ia32_emulation" har lagts till, vilket möjliggör aktivering och avaktivering av stöd för 32-bitars emulering under uppstart för kÀrnor som Àr byggda för x86-64-arkitekturen. Praktiskt sett gör den nya parametern det möjligt att bygga kÀrnor med kompatibilitet för 32-bitars applikationer, men stÀnger av detta lÀge som standard för att minska attackytan pÄ kÀrnan, eftersom API:erna för att sÀkerstÀlla kompatibilitet Àr mindre testade Àn de primÀra kÀrninterfaces.
- Ăverföringen av Ă€ndringar frĂ„n Rust-for-Linux-grenen fortsĂ€tter, som rör anvĂ€ndning av Rust som ett andra sprĂ„k för utveckling av drivrutiner och kĂ€rnmoduler (stöd för Rust Ă€r inte aktivt som standard och gör inte Rust till obligatoriska byggberoenden för kĂ€rnan). I den nya versionen har övergĂ„ngen till Rust 1.73 genomförts och ett set av bindningar för arbete med arbetsscheman har föreslagits.
- Möjligheten att anvÀnda mekanismen binfmt_misc har lagts till för att stödja nya format för körbara filer (till exempel för att köra kompilerade applikationer pÄ Java eller Python) inom separata opersonliga namnrymder.
- I cgroup-kontroller cpuset, som möjliggör hantering av vilka CPU-kÀrnor som anvÀnds vid uppgifternas utförande, möjliggör uppdelning i lokal och fjÀrrpartitionering (remote partition), som skiljer sig Ät beroende pÄ om den överordnade cgroupen Àr en korrekt rotsektion eller inte. Nya instÀllningar "cpuset.cpus.exclusive" och "cpuset.cpus.exclusive.effective" har ocksÄ lagts till för exklusiv koppling till CPU.
- I BPF-underavdelningen har stöd för undantag implementerats, vilka hanteras som en omedelbar utgÄng frÄn BPF-programmet med möjlighet till sÀker avveckling av stackramar. Dessutom tillÄts anvÀndning av pekare kptr i BPF-program i samband med CPU.
- I io_uring-underavdelningen har stöd för operationer med futexar lagts till, och nya operationer har implementerats: IORING_OP_WAITID (den asynkrona versionen av waitid), SOCKET_URING_OP_GETSOCKOPT (varianter av getsockopt) och SOCKET_URING_OP_SETSOCKOPT (varianter av setsockopt) samt IORING_OP_READ_MULTISHOT (flera lÀsningsoperationer som fortsÀtter tills det inte finns nÄgra data kvar eller bufferten Àr fylld).
- En implementation av lÀttviktiga enkelriktade FIFO-köer har lagts till, vilket krÀver spin-lÄsning endast för borttagning frÄn kön i ett processkontext och kan göras utan spin-lÄsning för atomÀr tillÀgg i kön i vilken kontext som helst.
- En cirkulÀr buffert "objpool" med en skalbar implementation av en högpresterande kö för allokering och ÄterlÀmning av objekt har lagts till.
- Den första delen av förÀndringarna för implementationen av det nya API:et futex2 har lagts till, vilket har högre prestanda pÄ NUMA-system, stödjer storlekar som inte Àr 32 bit och kan anvÀndas istÀllet för det multiplexade systemanropet futex().
- 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 har möjligheten att anvÀnda det i Clang 17 tillgÀngliga lÀget för kontroll av Shadow-Call Stack implementerats, avsett för att skydda mot överskrivning av returadressen frÄn funktionen vid buffertöverflöd i stacken. Skyddet innebÀr att returadressen sparas i en separat "skugg"-stack efter att kontrollen överlÀmnats till funktionen och att denna adress hÀmtas innan funktionen avslutas.
- En ny intelligent skanningslÀge har lagts till i mekanismen för sammanslagning av identiska minnessidor (KSM: Kernel Samepage Merging) som spÄrar felaktigt skannade sidor och minskar intensiteten av deras om-skanning. En instÀllning för att aktivera det nya lÀget har lagts till pÄ /sys/kernel/mm/ksm/smart_scan.
- En ny ioctl-kommando PAGEMAP_SCAN har lagts till, som nÀr den anvÀnds med userfaultfd(), gör det möjligt att bestÀmma skrivningar till ett specifikt minnesomrÄde. Denna nya funktion kan exempelvis anvÀndas i systemet för att spara och ÄterstÀlla tillstÄnd av CRIU-processer eller i spelens anti-fusk-system.
- I byggsystemet Àr kompilatorn Clang som standard aktiverad för att bygga exempel pÄ anvÀndning av perf-subsystemet, skrivna som BPF-program.
- Det gamla lagret videobuf, som anvÀndes för att hantera framebuffers i mediesubsystemet och för mer Àn 10 Är sedan ersattes av en ny implementering videobuf2, har tagits bort.
- Virtualisering och sÀkerhet
- I fscrypt-subsystemet har möjligheten att kryptera data i block som Àr mindre Àn blockstorleken i filsystemet lagts till. Detta kan vara nödvÀndigt för att aktivera hÄrdvarumekanismer för kryptering som bara stöder smÄ block (till exempel, UFS-kontroller som endast stöder blockstorleken 4096 kan anvÀndas med ett filsystem med blockstorleken 16K).
- Subsytemet âiommufdâ, som möjliggör hantering av minnessidor för I/O Memory-Management Unit (IOMMU) via filbeskrivare frĂ„n anvĂ€ndarutrymmet, har fĂ„tt tillĂ€gg av spĂ„rning av Ă€nnu icke-cacheade (dirty) data för DMA-operationer, vilket Ă€r nödvĂ€ndigt för att identifiera minne med osparade data vid processflyttning.
- I Landlock-mekanismen, som tillÄter begrÀnsning av interaktion mellan en grupp processer och den externa miljön, har stöd för att definiera regler för Ätkomst till TCP-sockets lagts till. Till exempel kan en regel skapas för att endast tillÄta anslutningar via nÀtverksport 443 för att etablera HTTPS-anslutningar.
- I AppArmor-subsystemet har möjligheten att hantera Ätkomst till io_uring-mekanismen och skapa anvÀndaridentifierar (user namespaces) lagts till, vilket möjliggör selektiv beviljande av Ätkomst till dessa funktioner för endast vissa processer.
- En API för att intyga virtuella maskiner integriteten av deras lastningsprocesser har lagts till.
- LoongArch-system har implementerat virtualisering med hjÀlp av hypervisorn KVM.
- Med hypervisorn KVM pÄ RISC-V-system har stöd för Smstateen-tillÀgget lagts till, vilket blockerar virtuell maskinÄtkomst till CPU-register som inte uttryckligen stöds av hypervisorn. Stöd för anvÀndning av Zicond-tillÀgget i gÀstsystem har ocksÄ lagts till, vilket möjliggör vissa villkorliga heltalsoperationer.
- I KVM-gÀstsystem baserade pÄ x86-arkitekturen Àr anvÀndning av upp till 4096 virtuella CPU:er tillÄten.
- NĂ€tverkssystemet
- I NVMe-TCP-drivrutinen (NVMe över TCP), som möjliggör Ätkomst till NVMe-lagringsenheter över nÀtverket (NVM Express over Fabrics) med TCP-protokollet, har stöd för kryptering av dataöverföringskanalen med TLS lagts till (KTLS anvÀnds och en bakgrundsprocess i anvÀndarutrymmet tlshd för att förhandla om anslutningen).
- Prestandan i paketplaneraren fq (Fair Queuing) har optimerats och resulterat i en ökning av kapaciteten med 5% under hög belastning i tcp_rr (TCP Request/Response)-testet och med 13% under obegrÀnsad ström av UDP-paket.
- I TCP-protokollet har en valfri funktion för anvÀndning av tidsstÀmplar (TCP TS) med mikrosekundnoggrannhet (RFC 7323) lagts till, vilket möjliggör en mer exakt bedömning av fördröjningar och skapande av mer avancerade överbelastningshanteringsmoduler. För att aktivera kan kommandot 'ip route add 10/8 ⊠features tcp_usec_ts' anvÀndas.
- I TCP-stacken har stöd för TCP-AO (TCP Authentication Option, RFC 5925) lagts till, vilket gör det möjligt att verifiera TCP-rubriker med MAC-koder (Message Authentication Code) med modernare algoritmer HMAC-SHA1 och CMAC-AES-128 istÀllet för den tidigare tillgÀngliga TCP-MD5-alternativet baserat pÄ den förÄldrade MD5-algoritmen.
- En ny typ av virtuella nÀtverksenheter, 'netkit', har lagts till, dÀr logiken för dataöverföring definieras med en BPF-applikation.
- I KSMBD, SMB-serverimplementationen pÄ kÀrnnivÄ, har stöd för omvandling av filnamn som innehÄller surrogatpar av sammansatta tecken lagts till.
- I NFS har implementationen av strömmar med RPC-tjÀnster förbÀttrats. Stöd för skrivdelegation har lagts till (för NFSv4.1+). I NFSD har stöd för netlink-handlaren rpc_status lagts till. Klientstödet för NFSv4.x har förbÀttrats vid Äterexportering till knfsd.
- Utrustning
- KÀrnmodulen Nouveau har fÄtt initialt stöd för GSP-RM-firmware, som anvÀnds i NVIDIA RTX 20+ GPU:er för att hantera initialisering och kontroll av GPU:n via en separat GSP (GPU System Processor) mikrocontroller. GSP-RM-stöd gör att Nouveau-drivrutinen kan fungera genom att anropa firmwaren istÀllet för att direkt programmera interaktionsoperationer med hÄrdvaran, vilket förenklar tillÀgg av stöd för nya NVIDIA GPU:er genom att anvÀnda befintliga anrop för initialisering och energihantering.
- I AMDGPU-drivrutinen har stöd för GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 och DML2 implementerats. Stödet för sömlös laddning (utan flimmer vid vÀxling av videolÀge) har förbÀttrats.
- I i915-drivrutinen har stöd för Intel Meteor Lake-chips implementerats och en initial implementation av Intel LunarLake (Xe 2) har lagts till.
- Stöd för asymmetriska överföringskanaler som lagts till i USB4 v2-specifikationen (120/40G) har lagts till.
- Stöd för ARM SoC:er har lagts till: Qualcomm Snapdragon 720G (anvÀnds i Xiaomi-smartphones), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (anvÀnds i routrar och NAS).
- Stöd för Fairphone 5-smarttelefonen och ARM-plattformarna Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 Powkiddy RGB30 har lagts till.
- Stöd för RISC-V-plattformarna Milk-V Pioneer och Milk-V Duo har lagts till.
- Stöd för ljudgrÀnssnitt i HUAWEI-laptops som levereras med AMD CPU:er har lagts till. Stöd för extra högtalare som installeras pÄ Dell Oasis 13/14/16-laptops har lagts till. Stöd för inbyggda högtalare i ASUS K6500ZC har lagts till. Stöd för ljudavstÀngningsindikatorer pÄ HP 255 G8 och G10-laptops har lagts till. Stöd för ljuddrivrutiner acp6.3 har lagts till. Stöd för professionella ljudinspelningsgrÀnssnitt Focusrite Clarett+ 2Pre och 4Pre har lagts till.
Samtidigt har den latinamerikanska stiftelsen för fri programvara skapat en helt fri version av kĂ€rnan 6.7 â Linux-libre 6.7-gnu, som Ă€r renad frĂ„n firmware och drivrutiner som innehĂ„ller icke-fria komponenter eller kodavsnitt vars anvĂ€ndning Ă€r begrĂ€nsad av tillverkaren. I version 6.7 har koden för rensning av blobs uppdaterats i olika drivrutiner och delsystem, exempelvis i drivrutinerna amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs och btqca. Koden för rensning av drivrutinerna localtalk och rtl8192u har tagits bort pĂ„ grund av deras uteslutning frĂ„n kĂ€rnan. Ăverskottskomponenter för rensning av drivrutinerna xhci-pci, rtl8xxxu och rtw8822b, som tidigare lagts till av misstag, har avlĂ€gsnats. Rensning av blobs-namn i dts-filer för Aarch64-arkitekturen har genomförts. Blobs i de nya drivrutinerna mt7925, tps6598x, aw87390 och aw88399 har tagits bort.
KĂ€lla: opennet.ru
