Nach zwei Monaten Entwicklung stellte Linus Torvalds die Veröffentlichung des Linux-Kernels 7.1 vor. Zu den auffälligsten Änderungen gehören: neuer ntfsplus-Treiber, erste Phase der Unterstützungseinstellung für CPU i486, Entfernen alter Ethernet-Adapter, Entfernung der ISDN- und AX.25-Protokolle, standardmäßige Aktivierung des Intel FRED-Mechanismus, Unterstützung von BPF-Handlern in io_uring, Optimierung des Swap-Subsystems, Unterstützung von Sub-Schedulern in sched_ext, Zero-Copy-I/O im ublk-Treiber, ioctl-Operation „shutdown“ in Btrfs, dynamisches Umschalten des Leistungsmoduls im amd-pstate-Treiber, Unterstützung von xattr für Unix-Sockets.
In die neue Version sind 17275 Fehlerbehebungen von 2589 Entwicklern eingeflossen,
Die Patch-Größe beträgt 57 MB (Änderungen betreffen 13528 Dateien, 751785 Codezeilen wurden hinzugefügt, 405916 Zeilen wurden entfernt). In der vorherigen Version gab es 15624 Korrekturen von 2477 Entwicklern, die Patch-Größe betrug 56 MB. Etwa 41 % aller in 7.1 vorgestellten Änderungen beziehen sich auf Gerätetreiber, etwa 12 % der Änderungen betreffen die Aktualisierung von architekturspezifischem Code, 14 % sind mit dem Netzwerk-Stack verbunden, 5 % mit Dateisystemen und 3 % mit internen Kernelementsystemen.
Die wichtigsten Neuerungen im Kernel 7.1 (1, 2, 3):
- Festplattensubsystem, Ein-/Ausgabe und Dateisysteme
- In die neue Implementierung des NTFS-Dateisystems — ntfsplus — wurde aufgenommen, die auf dem Code des aus dem Kernel entfernten klassischen ntfs-Treibers basiert. Der alte Treiber wurde überarbeitet, um die Möglichkeit der Datenaufzeichnung zu erweitern und an moderne Möglichkeiten anzupassen, wie die Verwendung von Seitenbuchseiten (folios) anstelle von buffer_head-Strukturen. Im neuen Treiber wurde eine verzögerte Blockzuweisung implementiert, die hohe Schreibgeschwindigkeiten und eine geringere Fragmentierung ermöglicht. Für gepufferte Lese-/Schreiboperationen, direkte I/O, Extent-Mapping und Seitenzwischenablage-Lese-/Schreiboperationen wurde die iomap-Bibliothek verwendet. In iozone-Tests war der ntfsplus-Treiber 3-5 % schneller als ntfs3 bei Einzelthreadbetrieb und 35-110 % bei Verwendung von 4 Threads. Die Lesegeschwindigkeit von ntfsplus und ntfs3 liegt etwa auf dem gleichen Niveau. Der ntfs3-Treiber bleibt im Kernel und wurde korrigiert und leicht verbessert.
- Die Unterstützung für die Generierung und Verifizierung von Integritätsprüfdaten auf T10-Ebene im Dateisystem wurde hinzugefügt, anstatt auf Blockgerätsebene, was zu einer Verbesserung der Leseoperationen führt.
- Im ublk Blockgerätetreiber, der es ermöglicht, spezifische Logik in den Benutzerprozess zu verlagern, wurde die Unterstützung für Ein- und Ausgabe über gemeinsam genutzten Speicher ohne Kopieren von Daten zwischen den Puffern (Zero-Copy-Modus) hinzugefügt.
- Für selbstverschlüsselnde Blockgeräte SED-OPAL wurden ioctls zur Steuerung des Single-User-Modus hinzugefügt und der Befehl STACK_RESET implementiert.
- In Btrfs wird die Unterstützung der ioctl-Operation „shutdown“ als stabil erklärt, die es ermöglicht, das Dateisystem in einen Zustand zu versetzen, in dem versucht wird, laufende Operationen zu beenden, während alle neuen Operationen blockiert werden.
- Im exfat wurde die Möglichkeit hinzugefügt, leere Bereiche durch den Aufruf von fallocate() zu reservieren.
- Im CIFS-Dateisystem wurde die Unterstützung für die Erstellung von temporären Dateien mit dem Flag O_TMPFILE hinzugefügt.
- Im Systemaufruf fsmount() wurde die Option FSMOUNT_NAMESPACE hinzugefügt, die einen neuen Namensraum für die Einhängepunkte der gemounteten Dateisysteme erstellt. In die Systemaufrufe clone3() und unshare() wurden Flags hinzugefügt, um einen neuen Namensraum der Einhängepunkte zurückzugeben, der nur ein gemountetes leeres Dateisystem-Stub auf der Basis von nullfs enthält, sowie den fs-dax-Treiber mit Dateisystemschnittstelle zu DAX-Geräten (Direct Access).
- Im NFS-Server wurde ein Schutz gegen Angriffe durch Ausprobieren von Dateideskriptoren implementiert, der durch kryptografische Signatur der Deskriptoren realisiert wurde. Der Schutz wird durch die Mount-Option sign_fh aktiviert.
- Ein Zeichentreiber fs-dax wurde hinzugefügt, der eine Schnittstelle zur Interaktion mit DAX-Geräten (Direct Access) bereitstellt, die den Betrieb ohne Seiten-Cache unterstützen. Diese Schnittstelle ist notwendig für die Integration in den Dateisystemkernel famfs, der im Arbeitsspeicher platziert ist.
- Im Ceph-Dateisystem wurde die Sammlung von Metriken zu Ein- und Ausgaben in Bezug auf Untereinheiten realisiert.
- Speicher und Systemdienste
- Die erste Serie von Änderungen zur Einstellung der Unterstützung für i486-Prozessoren wurde angenommen. Die Optionen für den Build des Kernels mit Unterstützung für 486DX-, 486SX- und AMD ELAN-Prozessoren (CONFIG_M486, CONFIG_M486SX und CONFIG_MELAN) wurden aus Kconfig entfernt, und die Kompilierungsoptionen für i486-Systeme (-march=i486) wurden aus dem Makefile ausgeschlossen. Der Code zur tatsächlichen Unterstützung der Ausführung auf i486-Prozessoren bleibt vorerst im Kernel, aber der Build für solche Systeme erfordert nun die Anwendung von Patches auf die Build-Dateien. Die Gründe für die Entfernung der Unterstützung für i486-Prozessoren liegen im Wunsch, den Kernel von kompliziertem Code zu befreien, der einige Hardwareoperationen emuliert, wie z. B. CX8 (8 Byte vergleichen und tauschen) und TSC (CPU-Zähler, der im Task-Scheduler verwendet wird).
- Im Treiber amd-pstate, der zur Verwaltung des Energieverbrauchs in Systemen mit AMD-Prozessoren verwendet wird, wurde ein dynamisches Umschalten der Leistungsparameter und eine Anpassung des Energieverwaltungsverhaltens je nach Betrieb im stationären Betrieb oder im Akkubetrieb implementiert. Im stationären Betrieb wird jetzt der Modus „Performance“ aktiviert, während im Akkubetrieb der Modus „Balanced Performance“ verwendet wird.
- Der Intel FRED (Flexible Return and Event Delivery) Mechanismus ist standardmäßig aktiviert, was die Effizienz und Zuverlässigkeit der Übermittlung von Informationen über Low-Level-Ereignisse erhöht. Die Leistungssteigerung und die Verringerung von Latenzen werden durch die Rückgabe von Ereignissen mittels der Prozessoranweisung IRET anstelle der Übertragung von Ereignissen über die IDT-Tabelle (Interrupt Descriptor Table) erreicht. Die Zuverlässigkeit wird durch die getrennte Verarbeitung des Eintreffens von Ereignissen im Kontext des Kernels und im Kontext des Benutzers, den Schutz vor geschachtelter Ausführung von NMI und die Speicherung aller mit Ausnahme verbundenen CPU-Register im erweiterten Stapelrahmen erreicht.
- Im perf-Subsystem wurde die Unterstützung für Performance-Monitoring-Unit-Blöcke (PMU), die in SoCs der NVIDIA Tegra410 verwendet werden, hinzugefügt.
- Die Ausführung von futex-Operationen auf ARM-Systemen wurde beschleunigt, dank der Verwendung von Arm 9.6 LSUI-Anweisungen, die es dem Kernel ermöglichen, auf den Speicher des Benutzerspeichers zuzugreifen, ohne den Schutzmodus PAN (Privileged Access Never) vorher zu deaktivieren.
- Auf Systemen mit ARM-Prozessoren wurde die Unterstützung für die Erweiterung des Architektur-Befehlssatzes MPAM (Memory System Resource Partitioning and Monitoring) verbessert. Es wurde die Möglichkeit hinzugefügt, sie im Benutzerspeicher für die Ressourcenverwaltung über den Mechanismus resctrl zu nutzen. MPAM ermöglicht es, jeden Speicherzugriff mit einer Abschnitts-ID (PARTID, Partition ID) und einer Überwachungsgruppen-ID (PMG, Monitoring Group ID) zu kennzeichnen. Im Zusammenhang mit PARTID kann der Verbrauch von Ressourcen wie Speicherbandbreite oder Cache-Größe eingeschränkt werden, um zu verhindern, dass eine bestimmte Gruppe von Aufgaben alle Ressourcen beansprucht. Im Kontext des Monitorings können die Kombination von PMG und PARTID zur Verfolgung des Speicherressourcenverbrauchs unter bestimmten Lastarten verwendet werden.
- Die Möglichkeit zur Nutzung des Echtzeitmodus (PREEMPT_RT) wurde auf 32-Bit-ARM-Prozessoren hinzugefügt. Zuvor wurde die Unterstützung für PREEMPT_RT für die Architekturen x86 und x86-64, ARM64, RISC-V und LoongArch bereitgestellt.
- Der Systemaufruf clone3() erhielt neue Flags: CLONE_NNP — Verbot des Erhaltens neuer Privilegien im erzeugten Prozess; CLONE_AUTOREAP — automatische Beendigung des Prozesses anstelle seiner Umwandlung in einen Zombie-Prozess bis zur Ausführung der wait()-Funktion durch den übergeordneten Prozess;
CLONE_PIDFD_AUTOKILL — Beendigung des untergeordneten Prozesses beim Schließen des zugehörigen pidfd-Descriptors (z. B. beim Beenden des übergeordneten Prozesses). - Für jedes Kernel-Modul wurde im Verzeichnis /sys/module eine Datei import_ns hinzugefügt, die eine Liste importierter Symbolnamensräume (symbol namespace) enthält.
- Im asynchronen Ein-/Ausgabesystem io_uring wurde die Unterstützung für die Verwendung des BPF-Subsystems zur Erstellung von Handlern hinzugefügt. Beispielsweise kann die Hauptdispatch-Schleife durch ein BPF-Programm ersetzt werden.
- In der BPF-Subsystem wurde die Analyse der Stacknutzung modernisiert, was die Überprüfung vieler BPF-Programme durch den Verifier erheblich beschleunigt hat.
- Um die Leistung zu optimieren, wurde das hrtimer-Subsystem (High Resolution Timer) neu geschrieben. Der Task-Scheduler kann nun Hochpräzisionszeitgeber ohne Leistungsabfall anstelle weniger präziser Zeitgeber verwenden.
- Die Übertragung von Änderungen aus dem Rust-for-Linux-Zweig, die die Verwendung der Programmiersprache Rust als sekundäre Sprache für die Entwicklung von Treibern und Kernel-Modulen betreffen, wurde fortgesetzt (die Rust-Unterstützung ist standardmäßig nicht aktiv und führt nicht dazu, dass Rust zu den verpflichtenden Abhängigkeiten für den Kernel gehört). Bis zur Version 1.85 (die in Debian 13 geliefert wird) wurden die Anforderungen an die Rust-Version, die für die Kompilierung von Kernelkomponenten erforderlich ist, erhöht. Eine experimentelle Kconfig-Option CONFIG_RUST_INLINE_HELPERS zur Einbettung von C-Profilen in Rust-Code während der Kompilierung wurde hinzugefügt (diese Optimierung beschleunigte die Arbeit des Null-Block-Treibers um 2 %). Der Makro ‘const_assert!’ wurde hinzugefügt. Die Möglichkeiten der Module ‘sizes’, ‘clk’, ‘ptr’, ‘sync’ und ‘error’ wurden erweitert.
- Im SCHED_EXT-Mechanismus, der die Verwendung von BPF zur Erstellung von CPU-Scheduler ermöglicht, wurde eine grundlegende Möglichkeit zur Erstellung von verschachtelten Scheduler (sub-scheduler) hinzugefügt, mit denen jeder cgroup ein eigener Task-Scheduler zugewiesen werden kann.
- Die Optimierung des Swap-Subsystems wurde fortgesetzt. Die alte Struktur swap_map wurde entfernt und durch den Mechanismus „Swap Table“ ersetzt. Diese Änderung führte zu einer verbesserten Leistung und reduzierten Speicherverbrauch im Swap-Subsystem.
- Im DAMON-Subsystem (Data Access MONitor), das den Zugriff von Prozessen auf Daten im Arbeitsspeicher überwacht (zum Beispiel kann festgestellt werden, auf welche Speicherbereiche ein Prozess zugegriffen hat und welche Bereiche ungenutzt geblieben sind), wurde die Unterstützung für verschiedene Algorithmen zur automatischen Abstimmung der Quoten hinzugefügt.
- Im Trace-Subsystem wurde das Konzept der externen Ringpuffer implementiert, das es ermöglicht, Trace-Daten aus virtuelle Maschinen. Diese Möglichkeit wurde in Hypervisoren KVM und nVHE implementiert, um Trace-Daten von der Gastmaschine zur Host-Seite zu übertragen.
- Im RV-Subsystem (Runtime Verification), das zur Überprüfung der Korrektheit von hochzuverlässigen Systemen dient, wurden Komponenten zum Monitoring von „Stalls“ zur Verfolgung von Aufgaben, deren Ausführung vorübergehend angehalten oder blockiert wurde, und „Deadlines“ zur Analyse des Verhaltens des Task-Schedulers hinzugefügt.
- Virtualisierung und Sicherheit
- Standardmäßig ist das Flag PROC_MEM_FORCE_PTRACE gesetzt, das den Zugriff auf den Speicher eines Prozesses über die Datei /proc/PID/mem nur für Prozesse ermöglicht, die den Systemaufruf ptrace() zur Debugging verwenden.
- Ein neues Set von Hooks für LSM-Module (Linux Security Module) wurde hinzugefügt, das die Implementierung von Richtlinien für stapelbasierte Dateisysteme wie overlayfs erleichtert. Außerdem wurde ein Hook für die Zugriffssteuerung zu Unix-Sockets in LSM hinzugefügt, der im LSM-Modul Landlock für die Zuweisung von Zugriffsrichtlinien zu Unix-Sockets verwendet wird.
- In die integrierte Kryptobibliothek lib/crypto, die einfachere und schnellere Funktionen als die traditionelle Crypto-API bereitstellt, wurde die Unterstützung für die Algorithmen AES-CMAC, AES-XCBC-MAC, AES-CBC-MAC, GHASH und SM3 aufgenommen. Dokumentation zu lib/crypto wurde hinzugefügt.
- Der pKVM-Modus (Protected KVM) für strikte Isolation anonymer Speicherbereiche wurde implementiert, indem Virtualisierungs-Extensions für die Architektur AArch64 verwendet werden. In diesem Modus werden die Speicherseiten des Gasts aus der Tabelle der virtuellen Adressen des Host-Systems ausgeschlossen.
- Im Hypervisor KVM wurde die Unterstützung für die fünfte Version des virtuellen Interrupt-Controllers ARM (VGICv5 — ARM Virtual Generic Interrupt Controller v5) hinzugefügt.
- Netzwerksubsystem
- Für Unix-Sockets, die mit der Funktion socket() erstellt werden, wird die Unterstützung für erweiterte Dateiattribute (xattr) „user.*“ implementiert. Zu den Anwendungsbereichen gehört das Setzen von Labels über erweiterte Attribute an Unix-Sockets, die für IPC Varlink verwendet werden, um sie aus der Masse hervorzuheben und die IPC-Funktionalität mit BPF-Programmen zu untersuchen und zu debuggen. In systemd-journald sollen die erweiterten Attribute verwendet werden, um das Log-Format in Bezug auf den Socket /dev/log zu bestimmen.
- Die Unterstützung des UDP-Lite-Protokolls (RFC 3828) wurde entfernt, das die Lieferung von Paketen mit falscher Prüfziffer zulässt, in der Annahme, dass beispielsweise teilweise beschädigte Audio- und Videodaten auf Codec-Ebene wiederhergestellt werden können. Das Protokoll wurde entfernt, da es von niemandem genutzt wird.
- Die Möglichkeit, den IPv6-Stack als Kernel-Modul zu bauen, wurde entfernt, da dies in der Praxis nicht verwendet wurde (IPv6 wird entweder ins Kernel eingebaut oder vollständig deaktiviert), jedoch die Wartung erschwerte, da beim Bau von IPv6 als Kernel-Modul (CONFIG_IPV6=m) viele Teilsysteme gezwungen waren, unnötige Handler für den Fall der Entladung des IPv6-Moduls hinzuzufügen.
- Ausrüstung
- Im AMDGPU-Treiber wurde eine neue Display-Engine (DC) für APU AMD der Serie HD 7000 (Sea Islands, GCN 1.1) integriert.
- Im Nouveau-Treiber wurde die anfängliche Unterstützung für die NVIDIA GA100 GPU auf Basis der Mikroarchitektur Ampere hinzugefügt.
- Die Arbeit am DRM-Treiber (Direct Rendering Manager) Xe für GPUs auf Basis der Intel Xe-Architektur wurde fortgesetzt, der in Intel Arc-Grafikkarten und integrierter Grafik verwendet wird, beginnend mit den Tiger-Lake-Prozessoren. Die Unterstützung für die Grafik-Subsysteme der Intel Nova Lake-P-Prozessoren wurde hinzugefügt. Fehlerbeseitigte Pufferobjekte (Purgeable Buffer Objects) wurden implementiert.
- Die Integration der Nova-Treibers für NVIDIA-GPUs mit GSP-Firmware, die seit der NVIDIA GeForce RTX 2000-Serie auf der Turing-Mikroarchitektur verwendet werden, wurde fortgesetzt. Der Treiber ist in Rust geschrieben. Erste Unterstützung für GPUs auf Basis der Turing-Mikroarchitektur wurde hinzugefügt.
- Der DRM-Treiber corebootdrm wurde hinzugefügt, um die Grafik über den Framebuffer von CoreBoot-basierten Firmware zu rendern.
- Es wurde Unterstützung für die ASoC Audiogeräte AMD RPL DMIC, Cirrus Logic CS42L43, CS47L47, NVIDIA CPCAP und WM8962 hinzugefügt. Die Unterstützung für USB-Audiogeräte wurde verbessert: Huawei Headset, Focusrite Novation, MV-Silicon, Studio 1824, Arturia AF16Rig, Hotone Audio, Feaulle Rainbow,
PreSonus AudioBox, Moondrop Ju Jiu, Scarlett 18i20. - Der Treiber yogafan wurde hinzugefügt, um die Drehgeschwindigkeit des Lüfters in Lenovo Yoga-, Legion- und IdeaPad-Laptops zu verfolgen.
- Unterstützung für ARM-Plattformen, SoC und Geräte wurde hinzugefügt: Qualcomm Glymur, Qualcomm Mahua, Qualcomm Eliza, Qualcomm IPQ5210, Qualcomm apq8084 und ipq806x, Axis ARTPEC-9, ARM Zena, ARM corstone-1000-a320, Microchip LAN9691, Microchip PIC64GX, Rockchip RV1103B, Renesas RZ/G3L, NXP S32N79.
- Die Unterstützung für die in SoC Baikal-T1 verwendeten AHCI SATA- und PCIe-Controller sowie für Treiber für Timer, Speicher, physmap, Bus, hwmon, dwc und bt1-rom wurde entfernt. Als Grund für die Entfernung wurde die fehlende Wartung und die unvollständige Integration der Baikal-Plattformkomponenten genannt, deren Produktion in Russland im November 2025 eingestellt wurde.
- 12 Treiber für Ethernetgeräte mit ISA- und PCMCIA-Schnittstellen, die vor 2002 produziert wurden und für die keine Benutzer in Betriebssystemen gefunden wurden, wurden entfernt. Auch aus dem Kernel ausgeschlossen wurden
die ISDN-Subsysteme, Implementierungen der Protokolle AX.25, CAIF und Bluetooth CMTP (Common ISDN Application Programming Interface Message Transport Protocol), Treiber yellowfin (Yellowfin Gigabit-NIC), hamachi (Hamachi GNIC-II), hamradio (Amateur Funk), inport und logibm (busmouse). Der Grund für die Entfernung war das Fehlen aktiver Betreuer vor dem Hintergrund der zunehmenden Anzahl von Fehlern, die mit syzbot und KI-Tools entdeckt wurden, die niemand zu beheben bereit war, wodurch die gesamte Last der Behebung schwerwiegender Probleme auf die Betreuer der Hauptnetzwerksysteme des Kernels fiel. Insgesamt wurden über 140.000 Zeilen Code entfernt.
Quelle: opennet.ru
