Efter to måneders udvikling præsenterede Linus Torvalds udgivelsen af Linux-kernen 7.1. Blandt de mest bemærkelsesværdige ændringer er: en ny ntfsplus-driver, den første fase af ophør af support til CPU i486, fjernelse af gamle Ethernet-adaptere, fjernelse af ISDN- og AX.25-protokoller, standardaktivering af Intel FRED-mekanismen, support for BPF-håndterere i io_uring, optimering af swap-subsystemet, support for underplanlæggere i sched_ext, zero-copy input/output i ublk-driveren, ioctl-operationen "shutdown" i Btrfs, dynamisk skifting af ydeevnemode i amd-pstate-driveren, samt support for xattr til Unix-sockets.
Den nye version indeholder 17275 rettelser fra 2589 udviklere,
patchstørrelsen er 57 MB (ændringerne berørte 13528 filer, 751785 kodelinjer blev tilføjet, 405916 kodelinjer blev fjernet). I den forrige udgivelse var der 15624 rettelser fra 2477 udviklere, og patchstørrelsen var 56 MB. Omtrent 41% af alle ændringerne i 7.1 relaterer sig til enhedsdrivere, cirka 12% af ændringerne vedrører opdatering af arkitekturspecifik kode, 14% relaterer sig til netværksstakken, 5% til filsystemer og 3% til interne kerneundersystemer.
De vigtigste nyheder i kernen 7.1 (1, 2, 3):
- DiskSubsystem, input/output og filsystemer
- En ny implementering af NTFS-filsystemet — ntfsplus, baseret på koden fra den klassiske ntfs-driver, der blev fjernet fra kernen, er blevet inkluderet. Den gamle driver er blevet omarbejdet, udvidet med mulighed for at skrive data og tilpasset til at understøtte moderne funktioner som brug af pages of memory (folios) i stedet for buffer_head-strukturen. Den nye driver har implementeret forsinket tildeling af blokke, hvilket har opnået høj ydeevne ved skriveoperationer og reduceret fragmenteringen. Til bufferede skrive/læseoperationer, direkte input/output, extent-mapping og sidevise skrive/læseoperationer anvendes iomap-biblioteket. I iozone-tests viste ntfsplus-driveren sig at være 3-5% hurtigere end ntfs3 ved skrivning i en enkelt tråd og 35-110% hurtigere ved brug af 4 tråde. Læsehastigheden for ntfsplus og ntfs3 ligger omtrent på samme niveau. ntfs3-driveren forbliver i kernen, hvor den er blevet rettet og forbedret en smule.
- Support for generating and verifying T10 integrity check data at the file system level rather than the block device level has been added, allowing for improved read operation performance.
- The ublk block device driver, which allows specific logic to be offloaded to the user-space process, now supports zero-copy I/O through shared memory without moving data between buffers.
- For self-encrypting block devices SED-OPAL, ioctl commands for controlling the Single User mode have been added, and the STACK_RESET command has been implemented.
- In Btrfs, the ioctl operation 'shutdown' has been declared stable, allowing the file system to enter a state where attempts are made to complete already running operations while blocking all new operations.
- In exfat, the ability to reserve empty areas through the fallocate() call has been implemented.
- CIFS file system now supports creating temporary files with the O_TMPFILE flag.
- The fsmount() system call has been enhanced with the FSMOUNT_NAMESPACE option, which creates a new namespace for mount points for the mounted file system. Flags have been added to clone3() and unshare() system calls to return a new namespace of mount points containing only a mounted empty FS stub based on nullfs, the fs-dax driver with a FS interface to DAX (Direct Access) devices.
- The NFS server now includes protection against file descriptor guessing attacks, realized through the cryptographic signing of descriptors. This protection is enabled via the sign_fh mount option.
- A symbolic fs-dax driver has been added, providing an interface for interacting with DAX (Direct Access) devices that support operation bypassing page cache. This interface is necessary for integration with the famfs file system kernel, located in RAM.
- In the Ceph file system, metrics on input/output linked to subsystems have been implemented.
- Hukommelse og systemtjenester
- Den første serie ændringer, der stopper understøttelsen af i486-processorer, er blevet vedtaget. Indstillingerne for at kompilere kernen med understøttelse af 486DX, 486SX og AMD ELAN-processorer (CONFIG_M486, CONFIG_M486SX og CONFIG_MELAN) er blevet fjernet fra Kconfig, og kompilationsindstillingerne for i486-systemer (-march=i486) er blevet udelukket fra Makefile. Koden, der reelt understøtter drift på i486-processorer, er endnu tilbageholdt i kernen, men kompilering til sådanne systemer vil nu kræve anvendelse af patches til byggefilene. Årsagerne til fjernelsen af understøttelsen af i486-processorer skyldes ønsket om at befri kernen fra kompliceret kode, der emulerer nogle hardwareoperationer, såsom CX8 (sammenlign og udveksl 8 byte) og TSC (CPU-tæller, der bruges i opgaveplanlæggeren).
- I amd-pstate-driveren, der bruges til at styre energiforbruget på systemer med AMD-processorer, er der implementeret dynamisk skift mellem ydeevneindstillinger og ændring af strømstyringsadfærd afhængigt af, om der arbejdes med stationært strømforsyning eller batteri. Ved stationær tilslutning aktiveres nu "performance"-tilstand, mens "balance_performance" aktiveres ved drift på batteri.
- Intel FRED (Flexible Return and Event Delivery)-mekanismen er aktiveret som standard, hvilket forbedrer effektiviteten og pålideligheden af informationsoverførslen om lavniveauhændelser. Forbedringen i ydeevne og reduktionen af forsinkelser opnås ved at returnere hændelser ved hjælp af processorinstruktionen IRET i stedet for at overføre hændelser via IDT (Interrupt Descriptor Table). Pålideligheden forbedres ved separat behandling af hændelsesindtræden i kernens kontekst og brugerens kontekst, beskyttelse mod indlejret NMI-udførelse og opbevaring af alle CPU-registre relateret til undtagelsen i den udvidede stakramme.
- Understøttelsen af performance monitoring units (PMU) i overvågningssystemet er blevet tilføjet, som anvendes i SoC NVIDIA Tegra410.
- Udførelsen af futex-operationer er accelereret på ARM-systemer takket være brugen af Arm 9.6 LSUI-instruktioner, der giver kernen mulighed for at få adgang til hukommelse i brugerrummet uden først at skulle deaktivere beskyttelsesregimet PAN (Privileged Access Never).
- På systemer med ARM-processorer er understøttelsen af MPAM-arkitektur (Memory System Resource Partitioning and Monitoring) forbedret, og muligheden for at bruge den i brugerområdet er tilføjet for ressourceadministration via resctrl-mekanismen. MPAM giver mulighed for at mærke enhver hukommelsesadgang med et partitions-id (PARTID) og et overvågningsgruppe-id (PMG). I relation til PARTID kan ressourceforbruget, såsom hukommelsesbåndbredde eller cache-størrelse, begrænses, så en bestemt gruppe opgaver ikke optager alle ressourcer. I overvågningskonteksten kan kombinationen af PMG og PARTID bruges til at spore hukommelsesressourceforbruget under bestemte belastningstyper.
- Muligheden for at bruge realtidsmode (PREEMPT_RT) på 32-bit ARM-processorer er tilføjet. Tidligere var understøttelsen af PREEMPT_RT sikret for x86 og x86-64, ARM64, RISC-V og LoongArch-arkitekturer.
- Der er tilføjet nye flag til systemopkaldet clone3(): CLONE_NNP — forbud mod at få nye privilegier i den oprettede proces; CLONE_AUTOREAP — automatisk afslutning af processen i stedet for at gøre den til en zombie-proces indtil den forælder proces udfører wait()-funktionen;
CLONE_PIDFD_AUTOKILL — afslutning af datterprocessen, hvis den tilknyttede pidfd-deskriptor lukkes (f.eks. ved afslutning af forælderprocessen). - For hver kernelmodul er der tilføjet en import_ns-fil i mappen /sys/module, der indeholder en liste over importerede tegnrum (symbol namespace).
- I io_uring-systemet for asynkron input/output er der tilføjet understøttelse af BPF-subsystemet til oprettelse af håndteringsprogrammer. For eksempel kan den primære dispatch-loop erstattes med et BPF-program.
- I BPF-subsystemet er analysen af stakbrug moderniseret, hvilket væsentligt har accelereret verifikationen af mange BPF-programmer.
- For at optimere ydeevnen er hrtimer (high resolution timer) subsystemet blevet omskrevet. Scheduler kan nu bruge højopløste timere uden tab af ydeevne i stedet for mindre nøjagtige timere.
- Overførslen af ændringer fra Rust-for-Linux-grenen fortsætter, som omhandler brugen af Rust som et andet sprog til udvikling af drivere og kernelmoduler (Rust-support er ikke aktiveret som standard, og det fører ikke til, at Rust bliver en obligatorisk byggeafhængighed for kernen). Indtil version 1.85 (der leveres i Debian 13) er kravene til versionen af Rust, der er nødvendig for at bygge kernekomponenter, blevet hævet. En eksperimentel Kconfig-indstilling, CONFIG_RUST_INLINE_HELPERS, er blevet tilføjet for at inline C-forespørgsler i Rust-kode under kompileringen (optimeringen har øget ydeevnen af null blockdriveren med 2%). Macroen 'const_assert!' er blevet tilføjet. Funktionerne i modulerne 'sizes', 'clk', 'ptr', 'sync', 'error' er blevet udvidet.
- I SCHED_EXT-mekanismen, der tillader brugen af BPF til at skabe CPU-planlæggere, er der blevet tilføjet en grundlæggende mulighed for at oprette indlejrede planlæggere (sub-scheduler), hvormed hver cgroup kan udnytte sin egen opgaveplanlægger.
- Optimeringen af byttesystemet (swap) fortsætter. Den gamle struktur swap_map er blevet fjernet og erstattet med mekanismen 'Swap Table'. Ændringen har forbedret ydeevnen og reduceret hukommelsesforbruget i byttesystemet.
- I DAMON (Data Access MONitor) subsystemet, som gør det muligt at overvåge en proces adgang til data i RAM (for eksempel kan man finde ud af, hvilke hukommelsesområder processen har haft adgang til, og hvilke områder der er forblevet ubenyttede), er der tilføjet understøttelse af forskellige algoritmer til automatisk tuning af kvoter.
- I sporingssystemet er konceptet med eksterne ringbuffers blevet implementeret, hvilket muliggør at hente sporingsdata fra virtual machines. Denne mulighed er aktiveret i hypervisorerne KVM og nVHE for at overføre sporingsdata fra gæstesystemet til værtssiden.
- I RV (Runtime Verification) subsystemet, der er designet til at verificere korrektheden af høj-pålidelige systemer, er der tilføjet overvågningskomponenter 'stall' til at spore opgaver, hvis udførelse midlertidigt er stoppet eller blokeret, samt 'deadline' til at analysere planlæggerens adfærd.
- Virtualisering og sikkerhed
- Som standard er flaget PROC_MEM_FORCE_PTRACE sat, hvilket tillader omgåelse af adgangsrettigheder til en proces' hukommelse via filen /proc/PID/mem, kun for processer, der anvender systemopkaldet ptrace() til debugging.
- Et nyt sæt af hooks til LSM-moduler (Linux Security Module) er blevet tilføjet, hvilket forenkler implementeringen af politikker for stakbaserede filsystemer som overlayfs. LSM har også fået et hook til styring af adgang til Unix-sockets, som anvendes i LSM-modulet Landlock til tildeling af adgangspolitikker til Unix-sockets.
- Den indbyggede kryptobibliotek lib/crypto, som tilbyder enklere og hurtigere funktioner end det traditionelle crypto API, har fået støtte til algoritmerne AES-CMAC, AES-XCBC-MAC, AES-CBC-MAC, GHASH og SM3. Dokumentation for lib/crypto er blevet tilføjet.
- P-kVM (Protected KVM) til streng isolation af anonymt hukommelse ved hjælp af virtualiseringsudvidelser til AArch64-arkitekturen er blevet implementeret. I denne tilstand udelukkes gæstehukommelsessider fra den værtsystems virtuelle adresser.
- KVM-hypervisoren har fået støtte til den femte version af ARM's virtuelle afbrydercontroller (VGICv5 - ARM Virtual Generic Interrupt Controller v5).
- Netværkssubsystem
- For Unix-sockets, der oprettes med funktionen socket(), er der blevet implementeret støtte til udvidede filattributter (xattr) 'user.*'. Anvendelsesområderne omfatter tildeling af mærker via udvidede attributter til Unix-sockets, der bruges til IPC Varlink, med henblik på at adskille dem fra mængden til inspektion og fejlfinding af IPC-arbejde ved hjælp af BPF-programmer. I systemd-journald har man til hensigt at bruge de udvidede attributter til at definere logformatet i forbindelse med socketen /dev/log.
- Støtten til UDP-Lite-protokollen (RFC 3828), der tillod levering af pakker med en forkert kontrolsum i forventning om, at for eksempel delvist beskadigede lyd- og videodata kunne genskabes på codec-niveau, er blevet fjernet. Protokollen er blevet fjernet, da den ikke bliver brugt af nogen.
- Muligheden for at opbygge IPv6-stakken som en kernelmodul, som ikke blev brugt i praksis (IPv6 integreres enten i kernen eller deaktiveres fuldstændigt), er blevet fjernet, da det komplicerede vedligeholdelsen, da mange subsystemer var nødt til at tilføje unødvendige håndterere i tilfælde af, at IPv6-modulet blev indlæst.
- Udstyr
- En ny skærmmotor (DC) til AMD GPU'er i HD 7000-serien (Sea Islands, GCN 1.1) er blevet inkluderet i AMDGPU-driveren.
- Nouveau-driveren har fået indledende støtte til NVIDIA GA100 GPU'en baseret på mikroarkitekturen Ampere.
- Arbejdet med drm-driveren (Direct Rendering Manager) Xe til grafikprocessorer baseret på Intel Xe-arkitekturen, der anvendes i Intel Arc grafikkort og integreret grafik fra Tiger Lake-processorerne, er fortsat. Understøttelse af den grafiske subsystem for Intel Nova Lake-P-processorer er blevet tilføjet. Implementeret er renselige bufferobjekter (Purgeable Buffer Objects).
- Integrationen af Nova driver komponenter for NVIDIA GPU'er udstyret med GSP-firmware, der anvendes fra NVIDIA GeForce RTX 2000 serien baseret på Turing mikroarkitektur er fortsat. Driveren er skrevet i Rust. Grundlæggende støtte til GPU'er baseret på Turing mikroarkitektur er tilføjet.
- DRM-driveren corebootdrm til grafikudgang via framebuffer for firmware baseret på CoreBoot er blevet tilføjet.
- Understøttelse af lyd-ASoC AMD RPL DMIC, Cirrus Logic CS42L43, CS47L47, NVIDIA CPCAP og WM8962 er blevet tilføjet. Støtten til USB-lyd enheder er forbedret: Huawei Headset, Focusrite Novation, MV-Silicon, Studio 1824, Arturia AF16Rig, Hotone Audio, Feaulle Rainbow,
PreSonus AudioBox, Moondrop Ju Jiu, Scarlett 18i20. - Yogafan-driveren til overvågning af blæserens hastighed på Lenovo Yoga, Legion og IdeaPad bærbare computere er blevet tilføjet.
- Understøttelse af ARM-platforme, SoC og enheder: Qualcomm Glymur, Qualcomm Mahua, Qualcomm Eliza, Qualcomm IPQ5210, Qualcomm apq8084 og ipq806x, Axis ARTPEC-9, ARM Zena, ARM corstone-1000-a320, Microchip LAN9691, Microchip PIC64GX, Rockchip RV1103B, Renesas RZ/G3L, NXP S32N79.
- Understøttelsen af AHCI SATA- og PCIe-controllere i SoC Baikal-T1, samt timer-, hukommelse-, physmap-, bus-, hwmon-, dwc- og bt1-rom-drivere er blevet fjernet. Årsagen til fjernelsen er mangel på vedligeholdelse og ufærdig integration af komponenter fra Baikal-platformen i kernen, hvis produktion i Rusland blev stoppet i november 2025.
- 12 drivere til Ethernet-enheder med ISA- og PCMCIA-grænseflader, der blev produceret før 2002, er blevet fjernet, da der ikke blev fundet brugere, der anvendte dem i arbejdsystemer. Desuden er
ISDN-subsystemet, implementeringerne af protokoller som AX.25, CAIF og Bluetooth CMTP (Common ISDN Application Programming Interface Message Transport Protocol), samt driverne yellowfin (Yellowfin Gigabit-NIC), hamachi (Hamachi GNIC-II), hamradio (Amateur Radio), inport og logibm (busmouse) fjernet. Årsagen til fjernelsen er, at der ikke er aktive vedligeholdere i lyset af det stigende antal fejl, der opdages ved hjælp af syzbot og AI-værktøjer, som ingen tager sig af, og hele belastningen ved at løse alvorlige problemer overgår til dem, der vedligeholder de primære netværkssystemer i kernen. I alt er mere end 140.000 linjer kode blevet fjernet.
Kilde: opennet.ru
