Linux-kernens frigivelse 7.0

Efter to måneders udvikling præsenterede Linus Torvalds udgivelsen af Linux-kernen 7.0. Blandt de mest markante ændringer er: regler for anvendelse af AI-assistenter, indførelsen af Rust som en del af kernen, forbedret swap-ydeevne, aktivering af PREEMPT_LAZY som standard, understøttelse af filtre til io_uring-operationer, ny filsystem Nullfs, fserror-infrastruktur, XFS-overvågningsværktøjer, understøttelse af remapping i Btrfs, aktivering af NFS-version 4.1 som standard, integration af post-kvantum kryptografisk algoritme ML-DSA, aktivering af AccECN i netværkssystemet samt grundlæggende understøttelse af WiFi 8.

Nummer 7.0 er blevet tildelt, da der i 6.x-grenen er akkumuleret et tilstrækkeligt antal udgivelser til at ændre det første tal i versionsnummeret (den gang blev 6.0 udgivet efter 5.19). Nummerændringen sker af æstetiske årsager og er et formelt skridt, der fjerner ubehag ved akkumulationen af et stort antal udgivelser i serien.

Den nye version inkluderer 15624 rettelser fra 2477 udviklere; patchstørrelsen er 56 MB (ændringerne omfattede 18053 filer, der blev tilføjet 704060 linjer kode, og 278132 linjer blev fjernet). I den forrige udgave var der 15657 rettelser fra 2237 udviklere, og patchstørrelsen var 52 MB. Omkring 51% af alle ændringerne i 7.0 vedrører enhedsdrrivere, cirka 11% af ændringerne angår opdatering af hardware-specifik kode, 14% relaterer sig til netværksstakken, 5% til filsystemer og 3% til interne systemer i kernen.

De vigtigste nyheder i kernen 7.0 (1, 2, 3):

  • DiskSubsystem, input/output og filsystemer
    • Fserror-infrastrukturen er implementeret, og der er tilføjet et API til at hente oplysninger om input/output-fejl og metadata-korruption, når der arbejdes med filer. Den foreslåede infrastruktur standardiserer transmissionen af fejloplysninger fra filsystemerne til brugerrummet via fsnotify-mekanismen.
    • I XFS er der tilføjet nye muligheder for overvågning af filsystemets tilstand fra brugerrummet. Der er foreslået en ioctl-operation, XFS_IOC_HEALTH_MONITOR, der returnerer en filbeskriver, som giver oplysninger om fejl relateret til metadata-korruption eller input/output-fejl samt overvågning af ændringer i filsystemets tilstand, såsom afmontering og nedlukning. Derudover er en systemd-styret baggrundsproces, xfs_healer, foreslået til at håndtere tilstandsændringer i filsystemet fra brugerrummet og automatisk igangsætte genopretningsprocedurer efter behov.
    • Filessystemen Btrfs har fået eksperimentel støtte til strukturen "remap tree", som i fremtiden kan anvendes som et mellemlag under input/output-operationer. Den nye mulighed gør det muligt, at efter flytning af data på lagringsenheden bevares gamle og nye adresser for dataene i det ekstra lag "remap tree", i stedet for at opdatere alle relaterede strukturer. Dette gør adressen til data nemmere at udskifte ved adgang. Den nye tilgang præsenteres som mere pålidelig og fleksibel samt som en, der forenkler fremtidig funktionalitet i Btrfs.
    • Btrfs har implementeret støtte til direkte input/output i situationer, hvor blokstørrelsen overstiger hukommelsesside-størrelsen i systemet.
    • Den nye filsystem "Nullfs" er blevet inkluderet, og kan anvendes som enDummy for rod-FS. Nullfs er altid tom, indeholder ingen data og understøtter ikke ændringer. Formålet med Nullfs er at fungere som det indledende FS for at forenkle systemets bootproces — andre FS bliver derefter monteret over Nullfs, og systemopkaldet pivot_root() anvendes til at skifte rod-FS i stedet for at rydde initramfs-indholdet og bruge den tilknyttede rod-FS.
    • Der er implementeret opdatering af information om filmodifikationstid i ikke-blokeringsmodus. Tidligere returnerede opkaldet file_update_time_flags() med flaget IOCB_NOWAIT fejlen "-EAGAIN", hvilket forhindrede brugen af direkte skrivning i ikke-blokeringsmodus.
    • Støtten til notifikationslås (lease) i filsystemerne er blevet konverteret til en separat mulighed. Som standard aktiveres denne mekanisme ikke på grund af problemer med FS, der oprindeligt ikke var designet til dens anvendelse. For eksempel understøtter FS 9p og cephfs det ikke.
    • I filsystemet EROFS (Extendable Read-Only File System), der er beregnet til brug på partitioner tilgængelige i skrivebeskyttet tilstand, anvendes algoritmen LZMA til kompression som standard. Valgfrit er algoritmerne DEFLATE og Zstandard tilgængelige, som ikke længere er markeret som eksperimentelle. Der er implementeret deling af poster i siden cache (page-cache) for identiske filer i separate EROFS-filsystemer.
    • Laptop-mode, der sparer energi ved at udsætte og kombinere skriveoperationer til harddisken for at forlænge diskens tid i dvale og reducere antallet af opvågninger, er blevet fjernet. Denne tilstand er blevet irrelevant, da moderne mobile enheder har erstattet harddiske med solid-state drev.
    • Filsystemet F2FS er overgået til at bruge store sidefollier (large folios).
    • Arbejdet med ntfs3-driveren, udviklet af Paragon Software, er blevet genoptaget. Der er tilføjet support til filoperationer baseret på iomap, implementeret llseek SEEK_DATA/SEEK_HOLE muligheder, og tilføjet delalloc til forsinket blokallokering. I mellemtiden blev en ny implementation af NTFS — ntfsplus, udviklet til at erstatte ntfs3, godkendt til inkludering i en fremtidig version af kernen i udviklernes mailingliste i februar.
    • Som standard er version 4.1 af NFS-protokollen (CONFIG_NFS_V4_1) aktiveret ved bygning. Eksportbeskyttelse gennem NFS for specialiserede pseudo-FS som pidfs og nsfs er implementeret. NFSD har fået en eksperimentel mulighed for at bruge POSIX ACL, og der er tilføjet støtte til dynamisk ændring af trådpoolen (thread-pool) baseret på belastning.
  • Hukommelse og systemtjenester
    • De officielle regler for anvendelse af AI-assistenter og inkluderingen af automatisk genereret indhold i kernen er blevet godkendt. Ved overførsel af genereret kode skal dette mærkes med den anvendte AI-assistent via taggen "Assisted-by". AI-assistenter må ikke tilføje tagget "Signed-off-by" — personen, der har sendt patchen, betragtes som dens forfatter, er ansvarlig for den overførte ændring og garanterer for dens kvalitet. Udviklerne er forpligtet til at udføre manuel gennemgang af den via AI genererede kode og sikre, at resultatet er i overensstemmelse med licenskravene.
    • Støtte til Rust er blevet flyttet fra eksperimentelle til kernefunktioner. Støtte til Rust er ikke aktiveret som standard og medfører ikke, at Rust er en obligatorisk byggedependency for kernen.
    • Integration into the core of the "Swap Table" mechanism has been completed, which enhances paging performance. This acceleration is achieved by reducing competition for access to the paging cache, improving search efficiency within the cache, and decreasing fragmentation. The backend based on Swap Table is utilized for caching paging instead of the XArray backend, allowing for a 22% increase in the number of processed requests in the redis-benchmark test with BGSAVE.
    • Support for the Thread Safety Analysis extension introduced in Clang 22 has been added, enabling the detection of potential race conditions and errors caused by incorrect locking at compile time. The extension offers a series of attributes such as GUARDED_BY(…), REQUIRES(…), RELEASE(…) and ACQUIRE(…), allowing for labeling of functions covered by locks and distinguishing the scope of locks (defining context). At compile time, a correctness check is performed for the use of synchronization primitives, such as mutexes, based on the assessment of the activity or inactivity of the associated context.
    • The open_tree system call has been enhanced with the OPEN_TREE_NAMESPACE flag to simplify the configuration of isolated containers and accelerate container startup on systems with a large number of mount points. Similar to OPEN_TREE_CLONE, the new flag copies only the specified mount tree but returns a file descriptor in a new namespace of mount points, where the copied tree is mounted on top of a copy of the real root filesystem. The OPEN_TREE_NAMESPACE flag is essential for avoiding separate executions of unshare(CLONE_NEWNS) and pivot_root() operations used during container creation.
    • The rseq system call has been enhanced with a time slice extension mechanism, allowing additional CPU time for uninterrupted execution of critical sections. The idea is to avoid the task scheduler interrupting the critical section with a lock set, which leads to control being transferred to other threads using resources still held under that lock. The time slice extension is implemented without additional overhead, but without the strict guarantees provided by full priority regulation.
    • 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 (modes PREEMPT_NONE and PREEMPT_VOLUNTARY are retained only for architectures that do not support PREEMPT_FULL and PREEMPT_LAZY). The PREEMPT_LAZY mode applies the full preemption model (PREEMPT_FULL) for real-time tasks (RR/FIFO/DEADLINE), but delays the preemption of normal tasks (SCHED_NORMAL) until the tick boundary. This introduced delay reduces the number of preemptions of lock holders, thereby aligning performance closer to configurations that use a voluntary preemption model, i.e., PREEMPT_LAZY allows maintaining the capabilities of full preemption concerning real-time tasks while minimizing performance degradation for normal tasks.

      Enabling PREEMPT_LAZY led to a significant regression, halving PostgreSQL performance on ARM64 systems. To address the performance drop, PostgreSQL developers have been advised to enable the PR_RSEQ_SLICE_EXTENSION option to reduce the likelihood of preempting a lock holder.

    • Work continues on integrating changes from the Rust-for-Linux branch related to the use of the Rust language as a second language for developing drivers and kernel modules. Thanks to the previously integrated library 'syn', which simplifies writing complex macros, the amount of Rust code in the kernel has been reduced by simplifying the definitions of existing procedural macros. The functionalities of the kernel, macros, and pin-init libraries have been expanded.
    • An option has been added to the io_uring asynchronous input/output system for using non-circular submission queues, which are more efficiently cached in situations where a request's execution completes before returning from the system call.
    • In the eBPF subsystem, the BTF (BPF Type Format) mechanism, which provides type checking information in BPF pseudocode, employs binary search to retrieve debugging information, enhancing the efficiency of loading BPF programs. eBPF has added support for implicit arguments when calling kfunc (kernel functions available for use in BPF programs) defined with the KF_IMPLICIT_ARGS flag.
    • Koden til støtte for den indledende RAM-disk (initrd) baseret på linuxrc er blevet fjernet, da det for længe siden blev annonceret som forældet. De resterende implementationer af initrd planlægges at blive fjernet i 2027. I stedet bør initramfs anvendes (forskellen er, at initrd placerer det indledende bootmiljø i et diskbillede, mens initramfs placerer det i filsystemet).
    • Logikken i blok enheden zram, der anvendes til komprimeret lagring af swap-partition i hukommelsen, er ændret i forbindelse med skcompressed hukommelsessider ved valgfrie flytninger af data til permanent lager i tilfælde af udnyttelse af den tilgængelige RAM. Tidligere blev hukommelsessiderne udpakket inden de blev skrevet til den fysiske enhed, men nu gemmes de som de er i komprimeret form, hvilket reducerer belastningen på CPU'en og sparer energi under batteridrift.
    • Der er tilføjet en mulighed „—bpf-action“ til værktøjet timerlat, som måler forsinkelser i opgaveplanlæggerens arbejde, for at starte BPF-programmer, når en angiven grænse overskrides.
    • Ftrace-systemet har fået en indstilling „bitmask-list“ til at udskrive bitmasker på en læsbar måde (i listeform i stedet for som et hex-tal). Tracefs har fået funktioner til audit af filtre og triggers. Kommandoen „perf sched stats“ er tilføjet for at indsamle og vise statistik vedrørende opgaveplanlæggerens arbejde.
    • Byggeindstillingerne LOGO_LINUX_MONO_FILE, LOGO_LINUX_VGA16_FILE og LOGO_LINUX_CLUT224_FILE er blevet tilføjet for at bestemme billedfilen med logoet, der vises ved opstart af kernen i stedet for standardlogoet med pingvinen Tux.
  • Virtualisering og sikkerhed
    • I io_uring-systemet til asynkron input/output er muligheden for at vedhæfte BPF-programmer med filtre, der kontrollerer, hvad specifikke SQE (Submission Queue Entry) operationer kan gøre (ligesom systemopkald i io_uring), blevet implementeret. Den nye mulighed svarer til systemopkaldsfiltre. Filtrene kan knyttes til specifikke opgaver og arves, når der oprettes nye processer efter et fork()-opkald. Når der er aktive filtre, kan de tilsatte filtre kun pålægge yderligere begrænsninger, men ikke deaktivere eksisterende. Den implementerede mulighed vil gøre det muligt at blokere for metoder til at omgå filtreringen af systemopkald i sandbox-miljøer, baseret på udførelse af operationer, der ligner systemopkald, givet i io_uring.
    • I SELinux er der tilføjet en funktion til at administrere adgangen til BPF-tokens, hvilket tillader ikke-privilegerede processer at udføre visse privilegerede operationer med BPF, såsom at indlæse BPF-programmer i kernen og oprette map-strukturer.
    • Der er tilføjet støtte til digital signaturgenereringsalgoritmen ML-DSA (CRYSTALS-Dilithium), som er baseret på gitterteori og modstandsdygtig over for kvanteberegning. Der er mulighed for at bruge ML-DSA til autentificering af kerne-moduler.
    • Muligheden for at bruge digitale signaturskemaer med SHA-1-algoritmen til at bekræfte kerne-moduler er fjernet (støtte til indlæsning af signerede moduler er bevaret).
    • Audit-posten NETFILTER_PKT har fået tilføjet felterne ‘sport’ og ‘dport’ for inspektion af netværksportnumre, og ikke kun IP-adresser.
    • For systemer med RISC-V-arkitektur er der implementeret støtte for udvidelserne Zicfiss og Zicfilp, der giver hardwaremuligheder til at anvende CFI (Control Flow Integrity) beskyttelse, der forhindrer overtrædelser af den normale udførelsesrækkefølge af instruktioner (control flow) som følge af udnyttelse, der ændrer funktionernes pegepunkter, der er gemt i hukommelsen.
    • I hypervisoren KVM Muligheden for at overføre oplysninger om, at CPU'en understøtter ERAPS (Enhanced Return Address Predictor Security)-udvidelsen er implementeret, hvilket muliggør, at visse CPU-tilstandsafslutningsoperationer kan undgås, når kontrollen returneres til værtsystemet fra gæste-systemet. Desuden er der tilføjet støtte til at tildele hardware til gæste-systemer til overvågning af ydeevne (PMU, Performance Monitoring Unit), hvilket øger præcisionen af profilering i forhold til brugen af emulerede PMU.
    • Der er tilføjet støtte til debugfs-interface i Hyper-V-hypervisorens driver for at se statistikker om hypervisorens drift.
  • Netværkssubsystem
    • AccECN (Accurate Explicit Congestion Notification) udvidelse er som standard aktiveret, hvilket implementerer en forbedret version af ECN-udvidelsen, der gør det muligt for værter at markere IP-pakker i tilfælde af overbelastning i stedet for at kassere dem. Dette muliggør identificering af tidlige stadier af trafikpropper i kommunikationskanaler uden tab af pakker. Den oprindelige ECN-udvidelse har en begrænsning, der gør det muligt at sende kun ét signal om overbelastning pr. cyklus for TCP-overførsel (RTT, Round-Trip Time, sending af anmodning og modtagelse af svar). AccECN fjerner denne begrænsning og giver modtageren mulighed for at sende mere end ét signal om overbelastning til afsenderen i TCP-pakkens header. Algoritmer til overbelastningskontrol kan bruge de modtagne oplysninger til mere præcist at reagere på overbelastning uden pludseligt at reducere pakkesendingens intensitet ved små overbelastninger.
    • Implementeringen af netværkskøstyringsalgoritmen Cake har fået mulighed for at håndtere flere køer for belastningsfordeling på flere CPU-kerner. CAKE-algoritmen anvendes til at mindske den negative påvirkning af midlertidig pakkebuffering på grænse-netværksudstyr og sigter mod at opnå maksimal mulig båndbredde og minimal forsinkelse, selv på langsomme kommunikationskanaler.
    • VSOCK-sockets, der anvendes til interaktion med virtuelle maskiner, har fået støtte til netværksnavneområder (network namespace).
    • Den indledende implementering af den kommende WiFi 8-standard (802.11bn, Ultra High Reliability WiFi) er tilføjet.
    • Der er tilføjet optimeringer, der har øget ydeevnen ved behandling af indkommende UDP-pakker med 12% under stresstest i et 100-gigabit netværk.
  • Udstyr
    • AMDGPU-driveren har fået implementeret støtte til IP-blokke, der anvendes i nye 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 og JPEG 5.3.
    • I Nouveau-driveren er frekvensstyringen forbedret på Tegra 186+ systemer.
    • Driveren i915 har fået indledende støtte til display IP-blokken Xe3p_LPD, der anvendes i Intel Nova Lake-P processorer.
    • Arbejdet med DRM-driveren (Direct Rendering Manager) Xe til GPU'er baseret på Intel Xe-arkitekturen, der anvendes i Intel Arc grafikkort og integreret grafik, begyndende med Tiger Lake-processorerne, er fortsat. Multi Queue-tilstand er blevet tilføjet. Komponenter, der er nødvendige for at diagnosticere GPU-låsninger i Mesa, er blevet tilføjet. Understøttelsen af MERT-mekanismen til styring af GPU-hukommelsesadgang er blevet tilføjet.
    • Integrationen af Nova-driverkomponenterne til NVIDIA GPU'er, der er udstyret med GSP-firmware, som anvendes fra NVIDIA GeForce RTX 2000-serien baseret på Turing mikroarkitekturen, er fortsat. Driveren er skrevet i Rust. I den nye version er forberedelserne til understøttelse af GPU'er baseret på Turing mikroarkitekturen blevet gennemført, og forskellige interne ændringer er blevet foretaget.
    • Understøttelse af controllere og perifere enheder med flermodusbiserede SPI (Serial Peripheral Interface) er blevet tilføjet, hvilket muliggør dataoverførsel i flere parallelle strømme.
    • Der er tilføjet en driver til kombinerede Type-C-stik, der anvendes på enheder med Apple Silicon-chips og kombinerer USB3-, DP-AltMode- og Thunderbolt/USB4-interfaser.
    • Der er tilføjet understøttelse af lydsystemer til Tegra238-chips, Minisforum V3 SE, iBasso DC04U, Intel Nova Lake, Nova Lake S og Focusrite Forte.
    • Der er tilføjet understøttelse af ARM-platforme, SoC'er og enheder: 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.
    • Tilføjet support for smartphones og tablets: Fairphone Gen 6 (SoC Qualcomm Milos/Snapdragon 7s Gen 3), Pixel 3/3 xl, Microsoft surface pro 11.

Samtidig har det Latinamerikanske Fond for Fri Software udviklet en version af det helt frie kernel 7.0 — Linux-libre 7.0-gnu, renset for firmware- og driverkomponenter, der indeholder ikke-frie dele eller koder, hvis anvendelse er begrænset af producenten. I version 7.0 er driveren iwlwifi blevet renset for blobs. Rensningen af koden i amdgpu-, adreno-, TI PRUeth-, air_en8811h-, ath12k-, TI VPE-, rtw8852b-, rt1320-, rt5575 SPI-, tas2783- og Intel catpt-drivere er blevet opdateret. Rensningen af blob-navne i dts-filer (devicetree) for ARM-chips er blevet udført.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster