Utgivelse av Linux-kjerne 7.0

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

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster