Etter to mÄneder med utvikling har Linus Torvalds presentert utgivelsen av Linux-kjerne 7.0. Blant de mest bemerkelsesverdige endringene er: retningslinjer for bruk av AI-assistenter, inkludering av Rust som en kjernekomponent, forbedringer i swap-ytelse, standardaktivering av PREEMPT_LAZY-modus, stÞtte for filtre i io_uring-operasjoner, ny filsystem Nullfs, fserror-infrastruktur, overvÄkningsverktÞy for XFS, stÞtte for remapping i Btrfs, standardaktivering av NFS versjon 4.1, integrasjon av post-kvante kryptografialgoritmen ML-DSA, aktivering av AccECN i nettverks-subsystemet, og tidlig stÞtte for WiFi 8.
Nummer 7.0 ble tildelt fordi det i 6.x-grenen har akkumulert tilstrekkelig antall utgivelser til Ă„ endre hovednummeret (den gang ble 6.0 utgitt etter 5.19). Endringen av nummereringen skjer av estetiske grunner og er et formelt steg som fjerner ubehag ved det store antallet utgivelser i serien.
Den nye versjonen inkluderer 15624 feilrettinger fra 2477 utviklere, patch-stĂžrrelsen er 56 MB (endringene berĂžrte 18053 filer, 704060 linjer med kode ble lagt til, og 278132 linjer ble fjernet). I forrige utgave var det 15657 feilrettinger fra 2237 utviklere, og patch-stĂžrrelsen var 52 MB. Omtrent 51 % av alle endringene i 7.0 er relatert til enhetsdrivere, omtrent 11 % av endringene gjelder oppdatering av arkitekturespesifikk kode, 14 % er relatert til nettverksstakken, 5 % til filsystemer, og 3 % til interne kjerne-subsystemer.
Hovednyhetene i kjerne 7.0 (1, 2, 3):
- Disk subsystem, I/O og filsystemer
- fserror-infrastruktur er implementert, og det er lagt til et API for Ä hente informasjon om inndata/utdata-feil og metadata-korrupsjon ved filoperasjoner. Den foreslÄtte infrastrukturen standardiserer overfÞringen av feilmeldinger til brukerrommet i filsystemer via fsnotify-mekanismen.
- XFS har fÄtt nye muligheter for Ä overvÄke tilstanden til filsystemet fra brukerrommet. Det er foreslÄtt en ioctl-operasjon XFS_IOC_HEALTH_MONITOR som returnerer en filhandle, der man kan fÄ informasjon om feil knyttet til metadata-korrupsjon eller inndata/utdata-feil, samt spore tilstandsendringer i FS, som avmontering og nedstengning. I tillegg er en systemd-styrt bakgrunnsprosess xfs_healer foreslÄtt, som hÄndterer hendelser om FS-tilstand fra brukerrommet og, om nÞdvendig, automatisk starter gjenopprettingsprosedyrer.
- Det er lagt til eksperimentell stÞtte for strukturen «remap tree» i Btrfs-filsystemet, som i fremtiden kan brukes som et mellomlag for I/O-operasjoner. Den nye funksjonen innebÊrer at etter flytting av data pÄ lagringsmediet, lagres bÄde gamle og nye datadresser i en ekstra «remap tree»-struktur, i stedet for Ä oppdatere alle tilknyttede strukturer. NÄr dataene deretter aksesseres, blir adressene byttet ut. Den nye tilnÊrmingen presenteres som mer pÄlitelig og fleksibel, og forenkler videre funksjonell utvidelse av Btrfs.
- Btrfs stÞtter direkte inn- og utdata i situasjoner hvor blokkstÞrrelsen overskrider stÞrrelsen pÄ minnesiden i systemet.
- Det har blitt lagt til et nytt filsystem kalt «Nullfs», som kan brukes som en plassholder for rotfilsystemet. Nullfs-filsystemet er alltid tomt, inneholder ingen data og stĂžtter ikke endringer. FormĂ„let med Nullfs er Ă„ brukes som startfilsystem for Ă„ forenkle oppstartprosessen â andre filsystemer blir deretter montert over Nullfs, og systemanropet pivot_root() brukes for Ă„ bytte rotfilsystem uten Ă„ tĂžmme innholdet i initramfs og bruke det tilknyttede rotfilsystemet.
- Det er implementert oppdatering av filmodifikasjonstid i ikke-blokkerende modus. Tidligere returnerte anropet file_update_time_flags() med flagget IOCB_NOWAIT feilen «-EAGAIN», som hindret bruk av direkte skriving i ikke-blokkerende modus.
- StÞtte for leasing-meldinger er nÄ klassifisert som en egen valgfri funksjon i filsystemene. Som standard aktiveres ikke denne mekanismen pÄ grunn av problemer med filsystemer som ikke opprinnelig er designet for dens bruk. For eksempel stÞtter ikke filsystemene 9p og cephfs dette.
- I EROFS-filsystemet (Extendable Read-Only File System), som er beregnet for bruk pÄ partisjoner som kun er tilgjengelige for lesing, benyttes LZMA-algoritmen som standard for kompresjon. Valgfritt kan algoritmene DEFLATE og Zstandard brukes, som ikke lenger er merket som eksperimentelle. Det er implementert felles bruk av poster i sidelengden cache (page-cache) for identiske filer i forskjellige EROFS-filsystemer.
- Laptop_mode-funksjonen, som sparer strÞm ved Ä utsette og kombinere skriveoperasjoner pÄ harddisken for Ä forlenge diskens hvilemodus og redusere antall oppvÄkninger, er fjernet. Modusen har mistet relevans ettersom harddisker har blitt erstattet av solid-state-disker i moderne mobile enheter.
- Filsystemet F2FS har blitt oppdatert til Ă„ bruke store minnesider (large folios).
- Arbeidet med driveren ntfs3, utviklet av Paragon Software, er gjenopptatt. StĂžtte for filoperasjoner basert pĂ„ iomap er lagt til, llseek-opsjonene SEEK_DATA/SEEK_HOLE er implementert, og delalloc-modus for utsatt tildeling av blokker er lagt til. I mellomtiden ble en ny implementering av NTFS â ntfsplus, utviklet for Ă„ erstatte ntfs3, godkjent for inkludering i en av de fremtidige kjerneversjonene i utviklerens e-postliste i februar.
- Som standard er versjonen av NFS-protokollen 4.1 (CONFIG_NFS_V4_1) aktivert ved bygging. Det er sikret eksportlÄs via NFS for spesialiserte pseudo-FS-er som pidfs og nsfs. NFSD implementerer en eksperimentell mulighet for bruk av POSIX ACL og har lagt til stÞtte for dynamisk endring av trÄdpoolen avhengig av belastning.
- Minne og systemtjenester
- Offisielle regler for bruk av AI-assistenter og inkludering av automatisk generert innhold i kjernen er godkjent. Ved overfĂžring av generert kode skal den merkes med den brukte AI-assistenten gjennom taggen «Assisted-by». AI-assistenter fĂ„r ikke legge til taggen «Signed-off-by» â personen som leverer patchen regnes som forfatter, har ansvar for den overfĂžrte endringen og garanterer for kvaliteten. Utviklerne er pĂ„lagt Ă„ utfĂžre manuell gjennomgang av koden generert av AI og kontrollere at resultatet overholder lisenskravene.
- StĂžtten for Rust er flyttet fra eksperimentell til hovedfunksjoner i kjernen. StĂžtten for Rust er ikke aktivert som standard og fĂžrer ikke til at Rust blir en obligatorisk byggavhengighet for kjernen.
- Integrasjonen av Swap Table-mekanismen er fullfÞrt, noe som Þker ytelsen til swap. Akselerasjonen oppnÄs gjennom redusert konkurranse om tilgang til swap-cache, mer effektiv sÞk i cachen og redusert fragmentering. Swap Table-bakenden er implementert for caching av swap i stedet for XArray-bakenden, noe som i redis-benchmark-test med BGSAVE har Þkt antallet behandlete forespÞrsel med 22%.
- StĂžtten for den nylig introduserte Thread Safety Analysis-utvidelsen i Clang 22 er lagt til. Denne lar en identifisere potensielle race conditions og feil forĂ„rsaket av feilaktig lĂ„sing pĂ„ kompileringstidspunktet. Utvidelsen tilbyr en serie attributter som GUARDED_BY(âŠ), REQUIRES(âŠ), RELEASE(âŠ) og ACQUIRE(âŠ), som lar en merke funksjoner som er beskyttet av lĂ„ser og skille omrĂ„der med lĂ„ser (definere konteksten). Kompileringen kontrollerer korrektheten av bruken av synkroniseringsprimitive som mutexer basert pĂ„ vurderingen av aktivitet eller inaktivitet i den tilknyttede konteksten.
- SYSTEMKALL open_tree har fÄtt flagget OPEN_TREE_NAMESPACE for Ä forenkle oppsettet av isolerte containere og akselerere starten av containere pÄ systemer med mange monteringspunkter. I likhet med OPEN_TREE_CLONE kopierer det nye flagget kun den spesifiserte monteringsstrukturen (mount tree), men i stedet for Ä returnere en lokal filbeskrivelse, gir det en filbeskrivelse i det nye navnerommet for monteringspunkter, der den kopierte strukturen monteres over kopien av det faktiske rotfilsystemet. OPEN_TREE_NAMESPACE-flagget er etterspurt for Ä unngÄ separate operasjoner unshare(CLONE_NEWNS) og pivot_root() som brukes ved oppretting av containere.
- SYSTEMKALL rseq har fÄtt en mekanisme for utvidelse av tidskvoter (time slice), som gir ekstra prosessortid for uavbrutt utfÞrelse av kritiske seksjoner. Ideen er Ä unngÄ at planleggeren avbryter en kritisk seksjon med lÄs, noe som fÞrer til at kontrollen overfÞres til andre trÄder som bruker ressursen, der lÄsen fortsatt er aktiv. Utvidelsen av tidskvoten skjer uten ekstra kostnader, men heller uten strenge garantier som ved ordentlig prioriteringsregulering.
- For architectures arm64, loongarch, powerpc, riscv, s390, and x86, the task preemption mode in the scheduler has been changed from PREEMPT_NONE to PREEMPT_LAZY by default. The number of possible modes has been reduced from four to two â PREEMPT_FULL and PREEMPT_LAZY (PREEMPT_NONE and PREEMPT_VOLUNTARY modes are retained only for architectures that do not support PREEMPT_FULL and PREEMPT_LAZY). The PREEMPT_LAZY mode applies a full preemption model (PREEMPT_FULL) for realtime tasks (RR/FIFO/DEADLINE) but delays the preemption of normal tasks (SCHED_NORMAL) until the tick boundary. The resulting delay reduces the chances of preempting lock holders, allowing performance to approach that of configurations using voluntary preemption, i.e., PREEMPT_LAZY maintains full preemption capabilities for realtime tasks while minimizing performance drops for normal tasks.
Enabling PREEMPT_LAZY has led to a serious regression, halving the performance of PostgreSQL on ARM64 systems. To mitigate the performance drop, PostgreSQL developers are advised to enable the PR_RSEQ_SLICE_EXTENSION option to reduce the likelihood of preempting the lock holder.
- The transfer of changes from the Rust-for-Linux branch related to using Rust as a secondary language for developing drivers and kernel modules continues. Thanks to the previously integrated library 'syn', which simplifies the writing of complex macros, the size of Rust code in the kernel has been reduced by simplifying the definitions of existing procedural macros. The capabilities of the kernel, macros, and pin-init libraries have been expanded.
- An option for using non-circular submission queues has been added to the io_uring asynchronous input/output system, making it more efficiently cacheable when a request completes before returning from the system call.
- In the eBPF subsystem within the BTF (BPF Type Format) mechanism, which provides information for type checking in BPF pseudocode, binary search has been used to find debugging information, increasing the efficiency of loading BPF programs. eBPF now supports implicit arguments when invoking kfunc (kernel functions available for use in BPF programs) defined with the KF_IMPLICIT_ARGS flag.
- Koden for Ä stÞtte initial RAM-disk (initrd) basert pÄ linuxrc er fjernet, lenge kunngjort som foreldet. De gjenvÊrende implementasjonene av initrd planlegger Ä bli fjernet i 2027. I stedet for initrd bÞr initramfs brukes (forskjellen er at initrd plasserer det fÞrste oppstartsmiljÞet i et diskbilde, mens initramfs gjÞr det i filsystemet).
- I blokkenheten zram, brukt for komprimert lagring av byttepartisjoner i minnet, er logikken for hÄndtering av komprimerte minnesider endret ved valgfri flytting av data til permanent lagring i tilfelle tilgjengelig RAM er fylt opp. Tidligere ble minnesidene dekomprimert fÞr skriving til fysisk lagringsmedium, mens de nÄ lagres som de er i komprimert form, noe som reduserer CPU-belastningen og sparer energi under drift uten nettverk.
- I verktĂžyet timerlat, designet for Ă„ mĂ„le forsinkelser i oppgaveplanleggerens arbeid, er alternativet "âbpf-action" lagt til for Ă„ kjĂžre BPF-programmer hvis det angitte terskelen overskrides.
- I ftrace-trasingsystemet er innstillingen "bitmask-list" lagt til for Ä gi ut bitmasker i lesbart format (i form av en liste med biter, ikke et hexadecimal tall). I tracefs er det lagt til muligheter for revisjon av filtre og triggere. En kommando "perf sched stats" for Ä samle inn og vise statistikk om oppgaveplanleggerens drift er ogsÄ lagt til.
- Kompileringsalternativene LOGO_LINUX_MONO_FILE, LOGO_LINUX_VGA16_FILE og LOGO_LINUX_CLUT224_FILE er lagt til for Ä definere filen med logoen som vil bli vist nÄr kjernen lastes inn, i stedet for den vanlige logoen med pingvinen Tux.
- Virtualisering og sikkerhet
- I systemet for asynkron I/O io_uring er det implementert muligheter for Ä feste BPF-programmer med filtre som kontrollerer hva spesifikke SQE (Submission Queue Entry) operasjoner kan gjÞre (analogt med systemanrop i io_uring). Den tilleggte muligheten fungerer som filtre for systemanrop. Filtrene kan knyttes til spesifikke oppgaver og arves ved opprettelse av andre prosesser etter et fork(). NÄr det er aktive filtre, kan filtre som legges til ikke deaktivere eksisterende, men bare pÄlegge ytterligere begrensninger. Den implementerte muligheten vil blokkere metoder for omgÄelse av filtrering av systemanrop i sandkassemiljÞer, basert pÄ Ä utfÞre lignende operasjoner i stedet for systemanrop, levert i io_uring.
- I SELinux er det lagt til mulighet for Ă„ kontrollere tilgangen til BPF-token, som lar upprivilegerte prosesser utfĂžre enkelte privilegerte operasjoner med BPF, som Ă„ laste inn BPF-programmer i kjernen og opprette map-strukturer.
- Det er lagt til stÞtte for algoritmen for generering av digitale signaturer ML-DSA (CRYSTALS-Dilithium), basert pÄ gitterteori og motstandsdyktig mot brute force-angrep pÄ en kvantedatamaskin. Muligheten for Ä bruke ML-DSA for autentisering av kjerne-moduler er ogsÄ tilgjengelig.
- Muligheten for Ă„ bruke digitale signaturordninger med SHA-1-algoritmen for Ă„ bekrefte kjerne-moduler er fjernet (stĂžtte for lasting av signerte moduler er bevart).
- I NETFILTER_PKT-revisjonen er feltene âsportâ og âdportâ lagt til for inspeksjon av nettverksportnumre, ikke bare IP-adresser.
- For systemer med RISC-V-arkitektur er det implementert stÞtte for utvidelsene Zicfiss og Zicfilp, som gir maskinvarefunksjoner for Ä bruke CFI (Control Flow Integrity) beskyttelse, som blokkerer brudd pÄ normal instruksjonsflyt som et resultat av utnyttelse som endrer funksjonspekere lagret i minnet.
- I hypervisoren KVM Muligheten for Ä overfÞre informasjon om stÞtte for ERAPS-utvidelsen (Enhanced Return Address Predictor Security) fra prosessoren til gjestesystemene er implementert, noe som gjÞr det mulig Ä unngÄ enkelte tilstandsgjenopprettingsoperasjoner pÄ CPU nÄr kontrollen returneres til vertsmaskinen fra gjestesystemet. I tillegg er stÞtte for Ä tildele utstyr til gjestesystemer for ytelsessporing (PMU, Performance Monitoring Unit) lagt til, noe som gir mer nÞyaktig profilering sammenlignet med Ä bruke emulerte PMU-er.
- I driveren for Hyper-V-hypervisoren er stĂžtten for debugfs-grensesnittet lagt til for Ă„ vise statistikk om hypervisorens drift.
- Nettverks subsystem
- AccECN (NÞyaktig Eksplicit Overbelastningsvarsling) utvidelsen er aktivert som standard. Denne utvidelsen implementerer en forbedret versjon av ECN-utvidelsen, som gjÞr det mulig for verter Ä merke IP-pakker i tilfelle overbelastning istedenfor Ä forkaste dem. Dette gir muligheten til Ä identifisere tidlige tegn pÄ kÞ i kommunikasjonslinjene uten pakktap. Den originale ECN-utvidelsen har en begrensning som tillater bare ett overbelastningssignal per runde i TCP-overfÞring (RTT, Rundturstid, sending av forespÞrsel og mottak av svar). AccECN fjerner denne begrensningen og gir mottakeren mulighet til Ä sende flere overbelastningsmerker til avsenderen i TCP-pakkens overskrift. Algoritmer for overbelastningskontroll kan bruke denne informasjonen for mer presis respons pÄ overbelastninger og unngÄ brÄ reduksjoner i pakksending ved mindre overbelastninger.
- Det er lagt til muligheten for Ä behandle flere kÞer i implementeringen av nettverkskÞalgoritmen Cake, for Ä fordele belastningen pÄ flere CPU-kjerner. CAKE-algoritmen brukes til Ä redusere den negative effekten av mellomlagring av pakker pÄ grenseverktÞy, og har som mÄl Ä oppnÄ maksimal tilgjengelig bÄndbredde og minimal forsinkelse selv pÄ langsomme kommunikasjonslinjer.
- Det er lagt til stĂžtte for nettverksnavnrom (network namespace) i VSOCK-socketene, som brukes til Ă„ samhandle med virtuelle maskiner.
- En tidlig implementering av den kommende WiFi 8-standarden (802.11bn, Ultra High Reliability WiFi) er lagt til.
- Optimaliseringer er lagt til som har Ăžkt ytelsen ved behandling av innkommende UDP-pakker med 12 % under stresstester i et 100-gigabit nettverk.
- Utstyr
- I AMDGPU-driveren er det implementert stĂžtte for IP-blokker som brukes i nye AMD GPU-er, 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, og JPEG 5.3.
- I Nouveau-driveren er frekvenskontrollen forbedret pÄ Tegra 186+-systemer.
- I i915-driveren er det lagt til tidlig stĂžtte for display-IP-blokken Xe3p_LPD, brukt i Intel Nova Lake-P-prosessorer.
- Arbeidet med drm-driveren (Direct Rendering Manager) Xe for GPUer basert pÄ Intel Xe-arkitekturen, som brukes i Intel Arc grafikkort og integrert grafikk med Tiger Lake-prosessorer, er fortsatt i gang. Multi Queue-modus er lagt til. Komponenter som er nÞdvendige for diagnose av GPU-hengninger i Mesa er lagt til. StÞtte for MERT-mekanismen for minnetilgang til GPU-er er ogsÄ lagt til.
- Integrasjonen av Nova-driverkomponentene for NVIDIA GPU-er utstyrt med GSP-firmware, som brukes fra NVIDIA GeForce RTX 2000-serien basert pÄ Turing mikroarkitektur, fortsetter. Driveren er skrevet i Rust. I den nye versjonen er forberedelsene til implementering av stÞtte for GPU-er basert pÄ Turing mikroarkitektur utfÞrt, og ulike interne endringer er gjort.
- StĂžtte for kontroller og periferienheter med flerkanals SPI (Serial Peripheral Interface) er lagt til, noe som gjĂžr det mulig Ă„ overfĂžre data i flere parallelle strĂžmmer.
- En driver for kombinerte Type-C-kontakter, som brukes pÄ enheter med Apple Silicon-brikker og kombinerer USB3, DP-AltMode og Thunderbolt/USB4-grensesnitt, er lagt til.
- StĂžtte for lydsystemene til Tegra238-brikker, Minisforum V3 SE, iBasso DC04U, Intel Nova Lake, Nova Lake S og Focusrite Forte er lagt til.
- StĂžtte for ARM-plattformer, SoC-er og enheter: 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, er lagt til.
- StĂžtte for smarttelefoner og nettbrett er lagt til: Fairphone Gen 6 (SoC Qualcomm Milos/Snapdragon 7s Gen 3), Pixel 3/3 xl, Microsoft surface pro 11.
Samtidig har Latinamerikansk stiftelse for fri programvare utviklet en variant av den helt frie kjernen 7.0 â Linux-libre 7.0-gnu, renset for elementer fra mikroprogramvare og drivere som inneholder ikke-frie komponenter eller kodebiter hvis bruksomrĂ„de er begrenset av produsenten. I utgivelsen 7.0 har rensing fra iwlwifi-drivermikrobobler blitt gjort. Rensingen av kode i amdgpu, adreno, TI PRUeth, air_en8811h, ath12k, TI VPE, rtw8852b, rt1320, rt5575 SPI, tas2783, Intel catpt-drivere er oppdatert. Rensing av navngivning av bobler i dts-filer (devicetree) for ARM-brikker er utfĂžrt.
Kilde: opennet.ru
