Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds Är kÀrnlansering Linux 7.0. Bland de mest anmÀrkningsvÀrda förÀndringarna finns: regler för anvÀndning av AI-assistenter, överföring av Rust till kÀrnans huvudfunktioner, ökad prestanda för swap, aktivering av PREEMPT_LAZY-lÀget som standard, stöd för filter för io_uring-operationer, den nya filsystemet Nullfs, fserror-infrastruktur, övervakningsverktyg för XFS, stöd för remapping i Btrfs, aktivering av NFS-version 4.1 som standard, integration av det post-kvantiska kryptografiska algoritmen ML-DSA, aktivering av AccECN i nÀtverksunderlaget, och inledande stöd för WiFi 8.
Nummer 7.0 tilldelades eftersom det i grenen 6.x hade samlats tillrÀckligt med utgÄvor för att byta det första numret (nÀr version 6.0 slÀpptes följde den direkt efter 5.19). Bytet av numrering görs av estetiska skÀl och Àr ett formellt steg som tar bort obehaget frÄn att ha ett stort antal utgÄvor i serien.
I den nya versionen har 15624 korrigeringar accepterats frÄn 2477 utvecklare, patchens storlek Àr 56 MB (förÀndringar har berört 18053 filer, 704060 rader kod har lagts till och 278132 rader har tagits bort). I den föregÄende utgÄvan gjordes det 15657 korrigeringar av 2237 utvecklare, patchens storlek var 52 MB. UngefÀr 51% av alla förÀndringar som presenterades i 7.0 Àr relaterade till enhetsdrivrutiner, cirka 11% av förÀndringarna Àr relaterade till uppdatering av kod specifik för hÄrdvaruarkitekturer, 14% Àr kopplade till nÀtverksstacken, 5% till filsystem och 3% till interna kÀrnsystem.
De viktigaste nyheterna i kÀrnan 7.0 (kernelnewbies.org, lwn.net, OpenNET):
- Disksubsystem, in- och utmatning och filsystem
- Fserror-infrastruktur har implementerats och tillagd API för att fÄ information om in-/utdatafel och metadataförstöring nÀr man arbetar med filer. Den föreslagna infrastrukturen förenar överföringen av felinformation till anvÀndarutrymmet genom fsnotify-mekanismen inom filssystemen.
- I XFS har lagts till finns nya möjligheter för övervakning av filsystemets tillstÄnd frÄn anvÀndarutrymmet. En ioctl-operation, XFS_IOC_HEALTH_MONITOR, föreslÄs, som returnerar en filbeskrivare genom vilken information kan erhÄllas om fel relaterade till metadataförstöring eller in-/utdatafel, samt att man kan övervaka förÀndringar i tillstÄndet för filsystemet, som avmontering och nedstÀngning. Dessutom har en bakgrundsprocess, xfs_healer, föreslagits som körs via systemd och hanterar hÀndelser om filsystemets tillstÄnd frÄn anvÀndarutrymmet och vid behov automatiskt startar ÄterstÀllningsprocedurer.
- Ett experimentellt stöd för "remapping tree"-strukturen har lagts till i filsystemet Btrfs (remap tree), som i framtiden kan anvÀndas som ett mellanlager vid utförande av in- och utdataoperationer. Huvudsyftet med den tillagda funktionen Àr att efter flyttning av data pÄ lagringsenheten, istÀllet för att uppdatera alla relaterade strukturer för dessa data i den extra strukturen "remap tree", behÄlla de gamla och nya adresscellerna för data, för att vid Ätkomst till data ersÀtta adresserna. Den nya metoden presenteras som mer pÄlitlig och flexibel, vilket ocksÄ förenklar ytterligare funktionalitetsutvidgning av Btrfs.
- I Btrfs har möjligheten stödet för direkt in- och utdata i situationer dÀr blockstorleken överstiger sidstorleken i systemet.
- I sammansĂ€ttningen Ă€r inkluderad den nya filsystemet Nullfs, som kan anvĂ€ndas som en platshĂ„llare för den rotfilssystemet. Filsystemet Nullfs Ă€r alltid tomt, innehĂ„ller inga data och stöder inga förĂ€ndringar. Syftet med Nullfs Ă€r att anvĂ€ndas som en initial FS för att förenkla systemets uppstart â andra FS mountas ovanpĂ„ Nullfs och systemanropet pivot_root() anvĂ€nds för att byta rotfilssystem istĂ€llet för att rensa initramfs-innehĂ„llet och anvĂ€nda dess relaterade rotfilssystem.
- Implementerad uppdatering av information om Àndringstider för filer i icke-blockerande lÀge. Tidigare returnerade anropet file_update_time_flags() med flaggan IOCB_NOWAIT ett fel -EAGAIN, vilket gjorde det omöjligt att anvÀnda direkt skrivoperationer i icke-blockerande lÀge.
- I filsystemen som avgrÀnsade separata alternativ översatts stödet för notifieringslÄs (lease). Som standard aktiveras inte en sÄdan mekanism nu pÄ grund av problemen med filsystem som ursprungligen inte var avsedda att anvÀndas. Till exempel stöds det inte av filsystem 9p och cephfs.
- I filsystemet EROFS (Extendable Read-Only File System), avsett för anvÀndning pÄ partitioner tillgÀngliga i skrivskyddat lÀge, anvÀnds som standard LZMA-algoritmen för komprimering. Valfria algoritmer DEFLATE och Zstandard, som inte lÀngre mÀrkts som experimentella, Àr ocksÄ tillgÀngliga. Delning av poster i sidcache (page-cache) för identiska filer i separata EROFS-filsystem har implementerats.
- Borttagen laptop_mode, som sparar energi genom att fördröja och slÄ samman skrivoperationer pÄ hÄrddisken för att förlÀnga tiden disken Àr i vilolÀge och minska antalet uppvaknanden. LÀge har förlorat relevans, eftersom moderna mobila enheter har ersatt hÄrddiskar med SSD-enheter.
- Filsystemet F2FS har översatts till att anvÀnda stora minnessidor (large folios).
- Arbetet med drivrutinen ntfs3 har Ă„terupptagits, som utvecklas av Paragon Software. Stöd har lagts till för filoperationer baserade pĂ„ iomap, funktionerna llseek SEEK_DATA/SEEK_HOLE har implementerats, och lĂ€get delalloc för fördröjd blockallokering har lagts till. Under tiden godkĂ€ndes i februari inkluderingen av en ny implementation av NTFS â ntfsplus , som har utvecklats för att ersĂ€tta ntfs3.Som standard vid byggnation
- anvÀnds version 4.1 av protokollet NFS (CONFIG_NFS_V4_1). Àr inkluderad ExportlÄsning via NFS av specialiserade pseudo-FS, sÄsom pidfs och nsfs, har sÀkerstÀllts. I NFSD stöd för navigering med musens framÄt/bakÄt-knappar i olika applikationer. stöd för dynamisk justering av trÄdpoolen beroende pÄ belastning. har möjligheten De officiella reglerna för har lagts till anvÀndning av AI-assistenter
- Minne och systemtjÀnster
-
och inkludering i kĂ€rnan automatiskt genererat innehĂ„ll . Vid överföring av genererad kod mĂ„ste den mĂ€rkas med den anvĂ€nda AI-assistentens namn genom taggen Assisted-by. AI-assistenter fĂ„r inte lĂ€gga till taggen Signed-off-by â personen som överförde patchen betraktas som dess författare, ansvarar för den överförda Ă€ndringen och gĂ„r i god för dess kvalitet. Utvecklare Ă„lĂ€ggs att genomföra manuell granskning av koden som tagits emot via AI och se till att resultatet uppfyller licenskraven. Stödet för Rusthar flyttats frĂ„n experimentella till
-
de grundlĂ€ggande funktionerna i kĂ€rnan översatts integrationen i kĂ€rnan av mekanismen â â, som möjliggör bĂ€ttre prestanda för swap. FörbĂ€ttringar uppnĂ„s genom att minska konkurrensen om Ă„tkomst till swap-cachen, effektivare sökning i cachen och minskad fragmentering. Backend baserad pĂ„ Swap Table har anvĂ€nts för cachelagring av swap istĂ€llet för backend XArray, vilket i redis-benchmark-testet med BGSAVE har lett till en ökning av antalet bearbetade förfrĂ„gningar med 22%..
-
Integrationen av drivrutinen Stöd har lagts till för den nya utvidgningen som introducerades i Clang 22,Swap TableThread Safety Analysis
-
Thread Safety Analysis Thread Safety Analysis, vilket gör det möjligt att identifiera potentiella race condition och fel orsakade av felaktig lĂ„sning vid kompilering. TillĂ€gget erbjuder en serie attribut som GUARDED_BY(âŠ), REQUIRES(âŠ), RELEASE(âŠ) och ACQUIRE(âŠ), som gör det möjligt att ange funktioner som omfattas av lĂ„s och skilja omrĂ„den för lĂ„s (definiera kontext). Under kompileringen kontrolleras korrektheten i tillĂ€mpningen av synkronisering primitiver, sĂ„som mutexar, baserat pĂ„ bedömning av aktiviteten eller inaktiviteten i den relaterade kontexten.
-
Till systemanropet open_tree tillagd flaggan OPEN_TREE_NAMESPACE för att förenkla konfigurationen av isolerade containrar och snabba upp lanseringen av containrar pÄ system med mÄnga monteringspunkter. PÄ samma sÀtt som OPEN_TREE_CLONE kopierar den nya flaggan endast den angivna monteringspunktstrÀdet (mount tree), men istÀllet för en lokal filbeskrivare returnerar den en filbeskrivare i det nya namespace för monteringspunkter, dÀr den kopierade trÀden monteras över en kopia av den verkliga rotfilsystemet. Flaggan OPEN_TREE_NAMESPACE Àr efterfrÄgad för att undvika separata operationer unshare(CLONE_NEWNS) och pivot_root(), som anvÀnds vid skapandet av containrar.
-
Till systemanropet rseq tillagd mekanismen för att utöka tidskvoter (time slice), vilket gör det möjligt att fÄ extra processortid för oavbruten exekvering av kritiska sektioner. Idén Àr att undvika att schemalÀggaren avbryter kritiska sektioner med en aktiv lÄs, vilket leder till att kontrollen överlÀmnas till andra trÄdar som anvÀnder resursen, vilkas lÄs fortfarande Àr aktiva. Utvidgningen av tidskvoten görs utan ytterligare overhead, men ocksÄ utan de strikta garantier som tillhandahÄlls vid fullstÀndig prioriteringsreglering.
-
För arkitekturer arm64, loongarch, powerpc, riscv, s390 och x86 Ă€r preemptionslĂ€get (preemption) i schemalĂ€ggaren som standard Ă€ndrat frĂ„n PREEMPT_NONE till PREEMPT_LAZY. Antalet möjliga lĂ€gen har minskat frĂ„n fyra till tvĂ„ â PREEMPT_FULL och PREEMPT_LAZY (lĂ€gena PREEMPT_NONE och PREEMPT_VOLUNTARY lĂ€mnas endast för arkitekturer som inte stöder PREEMPT_FULL och PREEMPT_LAZY). LĂ€ge PREEMPT_LAZY tillĂ€mpar en modell av fullstĂ€ndig preemption (PREEMPT_FULL) för realtidsuppgifter (RR/FIFO/DEADLINE), men skjuter upp preemption av vanliga uppgifter (SCHED_NORMAL) till tickgrĂ€nsen. Denna fördröjning leder till fĂ€rre fall av preemption av lĂ„sinhavare, vilket gör att prestandan nĂ€rmar sig konfigurationer som anvĂ€nder en modell av frivillig preemption (voluntary preemption), det vill sĂ€ga att PREEMPT_LAZY gör det möjligt att behĂ„lla kapabiliteter för fullstĂ€ndig preemption vad gĂ€ller realtidsuppgifter, men minimerar prestandaförsĂ€mringar för vanliga uppgifter.
Aktivering av PREEMPT_LAZY ledde till en allvarlig regression som halverar prestandan för PostgreSQL pÄ ARM64-system. För att ÄtgÀrda prestandafallet rekommenderar utvecklarna av PostgreSQL föreslagit att aktivera PR_RSEQ_SLICE_EXTENSION-alternativet för att minska risken för preemption av lÄsinhavare.
-
Fortsatt överföring av förÀndringar frÄn grenen Rust-for-Linux, relaterade till anvÀndningen av Rust som ett andrasprÄk för utveckling av drivrutiner och kÀrnmoduler (stöd för Rust Àr inte aktivt som standard och leder inte till att Rust ingÄr som en obligatorisk byggberoende till kÀrnan). Tack vare det tidigare integrerade biblioteket "syn (crates.io)" som förenklar skrivandet av komplexa makron, har storleken pÄ Rust-koden i kÀrnan kunnat minskas genom att förenkla definitionerna av befintliga procedurala makron. Möjligheterna för biblioteken kernel, macros och pin-init har utökats.
-
I systemet för asynkron in- och utmatning io_uring har lagts till ett alternativ för att anvÀnda icke-cirkulÀra köer (non-circular submission queue), som Àr mer effektivt cachat nÀr körningen av en begÀran avslutas innan retur frÄn systemanropet.
-
I eBPF-subsystemet i BTF-mekanismen (BPF Type Format), som tillhandahÄller information för typkontroll i BPF-pseudokod, för att söka efter felsökningsinformation aktiverad binÀr sökning, vilket har ökat effektiviteten vid inlÀsning av BPF-program. I eBPF har lagts till stöd för implicita argument vid anrop av kfunc (kÀrnfunktioner som Àr tillgÀngliga för anvÀndning i BPF-program), definierade med flaggan KF_IMPLICIT_ARGS.
-
Borttagen kod för att stödja initial RAM-disk (initrd) baserad pÄ linuxrc, som lÀnge har ansetts förÄldrad. De kvarvarande implementationerna av initrd planeras att tas bort Är 2027. IstÀllet för initrd bör man anvÀnda initramfs (skillnaden Àr att initrd placerar den initiala uppstartsmiljön i en diskavbild, medan initramfs ligger i filsystemet).
-
I blockenheten zram, som anvÀnds för komprimerad lagring av swap-partitionen i minnet, Àndrad logiken för arbete med komprimerade minnessidor vid valfri flytt av data till permanent lagring vid fyllning av tillgÀngligt RAM-minne. Tidigare packades minnessidor upp innan de skrevs till den fysiska enheten, men nu sparas de i komprimerat tillstÄnd, vilket minskar CPU- och energiförbrukningen vid drift utan ström.
-
I verktyget timerlat, avsett för att mĂ€ta fördröjningar vid arbetet med schemalĂ€ggaren, har lagts till alternativet âbpf-action för att köra BPF-program vid överskridande av angiven tröskel.
-
I ftrace-systemet har en bitmask-listparameter lagts till för att visa bitmasker i ett lÀsbart format (i form av en lista av bitar, snarare Àn ett hexadecimalt tal). I tracefs har funktioner lagts till för revision filter och utlösare. Tillagd kommandot perf sched stats för att samla och visa statistik om schemalÀggarens arbete.
-
Tillagda byggalternativen LOGO_LINUX_MONO_FILE, LOGO_LINUX_VGA16_FILE och LOGO_LINUX_CLUT224_FILE för att specificera en bildfil av logotypen som visas vid kÀrnans start istÀllet för den vanliga logotypen med pingvinen Tux.
-
- Virtualisering och sÀkerhet
- I systemet för asynkron in- och utdata io_uring har möjligheten möjligheten att fÀsta BPF-program med filter som kontrollerar vad specifika SQE (Submission Queue Entry) operationer kan göra (liknande systemanrop i io_uring). Den tillagda funktionen Àr en analog av systemanropsfilter. Filter kan kopplas till specifika uppgifter och de ÀrversegÄende nÀr andra processer skapas efter ett fork()-anrop. Vid aktiva filter kan endast ytterligare begrÀnsningar lÀggas pÄ, men befintliga kan inte stÀngas av. Den implementerade funktionen möjliggör att blockera metoder omgÄendefilter för systemanrop i sandbox-miljöer, baserat pÄ att utföra liknande operationer, som erbjuds i io_uring istÀllet för systemanrop.
- I SELinux har lagts till möjligheten att hantera Ätkomst till BPF-tokens, som tillÄter oprÀttad icke-privilegierad process att utföra vissa privilegierade operationer med BPF, till exempel att ladda BPF-program till kÀrnan och skapa map-strukturer.
- Tillagd stöd för algoritmen för digital signaturbildning ML-DSA (CRYSTALS-Dilithium), baserad pÄ gitterteori och motstÄndskraftig mot bruteforce-attacker pÄ kvantdatorer. TillhandahÄllet möjlighet att anvÀnda ML-DSA för autentisering av kÀrnmoduler.
- Borttagen möjlighet att anvÀnda signaturbildningsscheman med SHA-1-algoritmen för att verifiera kÀrnmoduler (stöd för laddning av signerade moduler Àr kvar).
- I NETFILTER_PKT-revisionsloggen har lagts till fÀlten sport och dport för inspektion av nÀtverksportnummer, och inte bara IP-adresser.
- För system med RISC-V-arkitektur har möjligheten stöd för Zicfiss och Zicfilp-förlÀngningar, som ger hÄrdvarufunktioner för att tillÀmpa CFI-skydd (Control Flow Integrity) som blockerar brott mot den normala exekveringsordningen (control flow) som en följd av exploateringar som Àndrar minneslagrade funktionspekare.
- I hypervisorn KVM har möjligheten möjlighet att överföra information till gÀstsystene om processorns stöd för ERAPS-förlÀngningen (Enhanced Return Address Predictor Security), vilket möjliggör att undvika vissa CPU-tillstÄndsresetoperationer nÀr kontrollen ÄterlÀmnas till vÀrden av ett gÀstsystem. Dessutom, har lagts till stöd för att fÀsta hÄrdvara till gÀstsystene för prestandaövervakning (PMU, Performance Monitoring Unit), vilket ökar noggrannheten i profilering jÀmfört med anvÀndning av emulerade PMU.
- I Hyper-V-hypervisordrivrutinen har lagts till stöd för debugfs-grÀnssnittet för att visa statistik om hypervisorens drift.
- NĂ€tverkssystemet
- Standardaktiverat Ă€r AccECN-förlĂ€ngningen (Accurate Explicit Congestion Notification), som implementerar en förbĂ€ttrad version av ECN (wikipedia.org), vilket gör det möjligt för vĂ€rdar att mĂ€rka IP-paket vid överbelastning istĂ€llet för att kassera dem, vilket ger möjlighet att identifiera tidiga tecken pĂ„ köer i samband utan att förlora paket. Den ursprungliga ECN-förlĂ€ngningen har en begrĂ€nsning som tillĂ„ter endast en signal om överbelastning per cykel av mottagning-överföring TCP (RTT, Round-Trip Time, skicka frĂ„ga och fĂ„ svar). AccECN tar bort denna begrĂ€nsning och ger mottagaren möjlighet att skicka mer Ă€n en överbelastningsmĂ€rkning till avsĂ€ndaren i TCP-paketets rubrik. Ăverbelastningskontrollalgoritmer kan anvĂ€nda den informationen för att reagera mer exakt pĂ„ överbelastning och undvika att drastiskt minska paketens sĂ€ndningsintensitet vid liten överbelastning.
- Implementeringen av algoritmen för nÀtverkskökontroll Cake har lagts till möjligheten att hantera flera köer för att fördela belastningen över flera CPU-kÀrnor. CAKE-algoritmen tillÀmpas för att minska den negativa pÄverkan av mellanliggande paketbuffring pÄ grÀnsnÀtverksutrustning och syftar till att uppnÄ maximal bandbredd och minimal fördröjning Àven pÄ lÄngsamma anslutningar.
- I sockets VSOCK, som anvÀnds för interaktion med virtuella maskiner, har lagts till stöd för nÀtverksnamnrymder (network namespace).
- Tillagd den första implementeringen av den framtida standarden WiFi 8 (802.11bn, Ultra High Reliability WiFi).
- Tillagda optimeringar som har ökat prestandan för bearbetning av inkommande UDP-paket med 12% vid stresstester i ett 100-gigabitnÀt.
- Utrustning
- I AMDGPU-drivrutinen har möjligheten stöd för IP-block, som anvÀnds i nya AMD GPU:er, sÄsom SMUIO 15.x, PSP 15.x, IH 6.1.1/7.1, MMHUB 3.4/4.2, GC 11.5.4/12.1, SDMA 6.1.4/7.1/7.11.4 och JPEG 5.3.
- I Nouveau-drivrutinen har frekvenshanteringen förbÀttrats pÄ system med Tegra 186+.
- I drivrutinen i915 har lagts till det första stödet för display-IP-blocket Xe3p_LPD, som anvÀnds i Intel Nova Lake-P processorer.
- FortsÀtter arbetet med drm-drivrutinen (Direct Rendering Manager) Xe för GPU:er baserade pÄ Intel Xe-arkitekturen, som anvÀnds i Intel Arc grafikkort och integrerad grafik, börjar med Tiger Lake-processorer. En lÀge har lagts till Multi Queue. Tillagda komponenterna som behövs för att diagnostisera GPU:ernas hÀngningar i Mesa. Tillagd stöd för MERT-mekanismen för att hantera Ätkomst till GPU-minnet.
- FortsÀtter Integration of driver components for NVIDIA GPUs equipped with GSP firmware, used starting from the NVIDIA GeForce RTX 2000 series based on the Turing microarchitecture. The driver is written in Rust. The new version includes preparations for implementing support for Turing-based GPUs and several internal changes.
- Tillagd Support for controllers and peripheral devices with a multi-channel SPI (Serial Peripheral Interface) interface, allowing data to be transmitted in multiple parallel streams.
- Tillagd Driver for combined Type-C connectors used on devices with Apple Silicon chips, integrating USB3, DP-AltMode, and Thunderbolt/USB4 interfaces.
- Added support for sound subsystems of Tegra238 chips, Minisforum V3 SE, iBasso DC04U, Intel Nova Lake, Nova Lake S, and Focusrite Forte.
- Added support for ARM platforms, SoCs, and devices: Arduino UnoQ, OrangePi 6 Plus, OrangePi CM5, Anbernic RG-DS, Realtek Kent, Qualcomm Kaanapali, Mediatek Ezurio, Facebook Anacapa, Microchip LAN9668, Khadas VIM1S, QNAP TS133, i.MX952, i.MX93, i.MX94, VHIP4 EvalBoard, TQ-Systems MBLS1028A, Agilex5, Radxa CM3J, Glymur,
- Stöd för smartphones och surfplattor har lagts till: Fairphone Gen 6 (SoC Qualcomm Milos/Snapdragon 7s Gen 3), Pixel 3/3 xl, Microsoft Surface Pro 11.
Samtidigt har den Latinamerikanska stiftelsen för fri programvara skapat en variant Fully free kernel 7.0 â Linux-libre 7.0-gnu, cleared of firmware and driver elements containing non-free components or code sections limited by the manufacturer. Release 7.0 includes a cleanup of the iwlwifi driver blobs. The cleanup code has been updated in the amdgpu, adreno, TI PRUeth, air_en8811h, ath12k, TI VPE, rtw8852b, rt1320, rt5575 SPI, tas2783, Intel catpt drivers. The names of blobs have been cleaned up in dts files (device tree) for ARM chips.
KĂ€lla: linux.org.ru
