
Nach zwei Monaten der Entwicklung stellte Linus Torvalds den Release des Kernels Linux 7.1. Zu den bemerkenswertesten Änderungen gehören: neuer ntfsplus-Treiber, erste Phase der Einstellung der Unterstützung für CPU i486, Entfernung alter Ethernet-Adapter, Entfernung von ISDN- und AX.25-Protokollen, standardmäßig aktivierter Intel FRED-Mechanismus, Unterstützung von BPF-Handlern in io_uring, Optimierung des Swapping-Subsystems, Unterstützung von Sub-Scheduler in sched_ext, Zero-Copy-I/O im ublk-Treiber, ioctl-Operation shutdown in Btrfs, dynamisches Umschalten des Leistungsmodus im amd-pstate-Treiber, Unterstützung von xattr für Unix-Sockets.
In die neue Version wurden 17275 Korrekturen von 2589 Entwicklern aufgenommen, die Patch-Größe beträgt 57 MB (Änderungen betrafen 13528 Dateien, 751785 Codezeilen wurden hinzugefügt, 405916 Codezeilen 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 betreffen Gerätetreiber, ca. 12% der Änderungen stehen im Zusammenhang mit der Aktualisierung architekturspezifischen Codes, 14% betreffen den Netzwerk-Stack, 5% die Dateisysteme und 3% interne Kernel-Subsysteme.
Die Hauptneuheiten im Kernel 7.1 (kernelnewbies.org, lwn.net, opennet):
Festplattensubsystem, Ein-/Ausgabe und Dateisysteme
- Wurden aufgenommen neue Implementierung Das NTFS-Dateisystem — ntfsplus, basiert auf dem Code des klassischen ntfs-Kernel-Treibers. Der alte Treiber wurde überarbeitet, um Schreibfunktionen hinzuzufügen und an moderne Anforderungen, wie die Nutzung von Seiten-Skripte (folios) anstelle der buffer_head-Struktur, anzupassen. Der neue Treiber implementiert verzögerte Blockzuweisungen, was eine hohe Leistung bei Schreibvorgängen und eine Verringerung der Fragmentierung ermöglicht. Für gepufferte Lese-/Schreibvorgänge, direkten Datentransfer, Extent-Mapping und Seiten-Schreib-/Lesevorgänge wird die Bibliothek iomapverwendet. In iozone-Tests war der ntfsplus-Treiber 3-5% schneller als ntfs3 im einsträngigen Modus und 35-110% schneller bei der Nutzung von 4 Threads. Die Lesegeschwindigkeit von ntfsplus und ntfs3 liegt etwa auf dem gleichen Niveau. Der ntfs3-Treiber bleibt im Kernel und enthält wurden vorgenommen. Fehlerbehebungen und kleine Verbesserungen.
- Unterstützung für die Erzeugung und Verifizierung von Integritätsprüfdaten wurde hinzugefügt T10 (deepwiki.com) auf Dateisystemebene und nicht auf Blockgeräteebene, was die Leseoperationen beschleunigt.
- Der Treiber für Blockgeräte ublk, die es ermöglicht, spezifische Logik auf die Prozessseite im Benutzerspeicher auszulagern, hinzugefügt Unterstützung für Ein-/Ausgabe über gemeinsamen Speicher ohne Kopieren von Daten zwischen Puffern (Zero-Copy-Modus).
- Für selbstverschlüsselnde Blockgeräte SED-OPAL wurden hinzugefügt ioctl zur Steuerung des Modus Einzelbenutzer und der Befehl STACK_RESET wurde implementiert.
- In Btrfs wurde die Unterstützung der ioctl-Operation shutdown stabilisiert, die es ermöglicht, das Dateisystem in einen Zustand zu versetzen, in dem versucht wird, laufende Operationen abzuschließen, während alle neuen Operationen blockiert werden.
- In exfat wurde die Möglichkeit zur Reservierung leerer Bereiche durch den Aufruf von fallocate() implementiert.
- Im CIFS-Dateisystem wurde die Unterstützung für die Erstellung temporärer Dateien mit dem Flag O_TMPFILE hinzugefügt.
- Im Systemaufruf fsmount() Eine Option FSMOUNT_NAMESPACE wurde hinzugefügt, die einen neuen Namensraum für die Montagepunkte des Dateisystems erstellt. In die Systemaufrufe clone3() und unshare() wurden Flags hinzugefügt, um einen neuen Namensraum für die Montagepunkte zurückzugeben, der nur das montierte leere FS-Placeholder auf Basis von nullfs enthält, sowie den fs-dax Treiber mit FS-Schnittstelle zu DAX (Direct Access) Geräten.
- Im NFS-Server hinzugefügt Schutz vor Dateideskriptor-Angriffen, implementiert durch die Signierung der Deskriptoren mit einer kryptografischen Unterschrift. Der Schutz wird über die Mount-Option sign_fh aktiviert.
- Hinzugefügt Symboltreiber fs-dax, der eine Schnittstelle zur Interaktion mit Geräten bereitstellt. DAX (kernel.org) (Direct Access), die den Betrieb um den Seiten-Cache herum unterstützen. Die angegebene Schnittstelle ist für die Integration in den Kern des Dateisystems erforderlich. famfs, die im Arbeitsspeicher abgelegt ist.
- Im Ceph-Dateisystem implementiert. wird die Eingabe/Ausgabe-Metrik in Bezug auf Abteilungen gesammelt.
Speicher und Systemdienste
- Akzeptiert Die erste Serie von Änderungen zur Beendigung der Unterstützung für i486-Prozessoren. Optionen zum Erstellen eines Kernels mit Unterstützung für 486DX-, 486SX- und AMD ELAN-Prozessoren (CONFIG_M486, CONFIG_M486SX und CONFIG_MELAN) wurden aus Kconfig entfernt, während die Kompilierungsoptionen für i486-Systeme (-march=i486) aus dem Makefile ausgeschlossen wurden. Der Code für die tatsächliche Unterstützung beim Betrieb auf i486-Prozessoren bleibt vorerst im Kernel, jedoch ist das Erstellen für solche Systeme jetzt mit der Anwendung von Patches auf die Build-Dateien erforderlich. Die Gründe für die Entfernung der Unterstützung für i486-Prozessoren liegen im Wunsch, den Kernel von komplexem Code zu befreien, der bestimmte hardwareseitige Operationen wie CX8 (Vergleichen und Austauschen von 8 Bytes) und TSC (CPU-Zähler, der im Task-Scheduler verwendet wird) emuliert.
- Im amd-pstate-Treiber, der zur Verwaltung des Energieverbrauchs in Systemen mit AMD-Prozessoren verwendet wird, wurde wird das dynamische Umschalten der Leistungseinstellungen und die Änderung des Verhaltens der Energieverwaltung je nachdem unterstützt, ob das System am Stromnetz oder im Akkubetrieb arbeitet. Bei Netzbetrieb wird jetzt der Modus 'performance' aktiviert, während im Akkubetrieb der Modus 'balance_performance' aktiv ist.
- Der Mechanismus ist standardmäßig aktiviert Intel FRED (Flexible Return and Event Delivery), das die Effizienz und Zuverlässigkeit der Bereitstellung von Informationen über Low-Level-Ereignisse verbessert. Die Leistungssteigerung und die Reduzierung der Latenz werden durch die Rückgabe von Ereignissen mittels der Prozessoranweisung IRET anstelle der Übertragung der Ereignisse über die IDT (Interrupt Descriptor Table) sichergestellt. Die Zuverlässigkeit wird durch die getrennte Verarbeitung des Eintreffens von Ereignissen im Kontext des Kernels und im Benutzerkontext, den Schutz vor der verschachtelten Ausführung von NMI und die Speicherung aller CPU-Register, die mit der Ausnahme verbunden sind, im erweiterten Stack-Frame erreicht.
- In das perf-Subsystem hinzugefügt Unterstützung für Performance Monitoring Units (PMUs), die in SoCs von NVIDIA Tegra410 verwendet werden.
- Die Durchführung von Futex-Operationen auf ARM-Systemen wurde beschleunigt, indem die Arm 9.6 LSUI-Anweisungen verwendet werden, die dem Kernel den Zugriff auf den Speicher des Benutzers erlauben, ohne vorher den Schutzmodus zu deaktivieren. PAN (arm.com) (Privileged Access Never).
- Auf Systemen mit ARM-Prozessoren wurde die Unterstützung für die Erweiterung des Befehlssatzarchitektur verbessert. MPAM (Memory System Resource Partitioning and Monitoring) und die Möglichkeit, sie im Benutzerspeicher zur Ressourcenverwaltung über den Mechanismus zu nutzen resctrl. MPAM ermöglicht die Kennzeichnung jedes Zugriffs auf den Speicher mit einer Abschnitts-ID (PARTID, Partition ID) und einer Überwachungsgruppen-ID (PMG, Monitoring Group ID). In Bezug auf PARTID kann der Ressourcenverbrauch, wie Speicherdurchsatz oder Cache-Größe, eingeschränkt werden, damit eine Gruppe von Aufgaben nicht alle Ressourcen beansprucht. Im Kontext des Monitorings kann die Kombination von PMG und PARTID zur Verfolgung des Speichernutzungsverbrauchs bei bestimmten Lastarten verwendet werden.
- Hinzugefügt die Möglichkeit, den Echtzeitmodus (PREEMPT_RT) auf 32-Bit-ARM-Prozessoren zu nutzen. Zuvor wurde die Unterstützung für PREEMPT_RT für die Architekturen x86 und x86-64, ARM64, RISC-V und LoongArch bereitgestellt.
- Im Systemaufruf clone3() neue Flags hinzugefügt: CLONE_NNP — Verbot Erhalt neuer Privilegien im erstellten Prozess; CLONE_AUTOREAP — automatisches Beenden des Prozesses anstelle dessen Umwandlung in einen Zombie-Prozess bis zur Ausführung der wait()-Funktion durch den übergeordneten Prozess; CLONE_PIDFD_AUTOKILL — Beenden des untergeordneten Prozesses im Falle der Schließung des zugehörigen pidfd-Descriptors (zum Beispiel beim Beenden des übergeordneten Prozesses).
- Für jedes Kernel-Modul wurde im Verzeichnis /sys/module eine Datei import_ns hinzugefügt, die eine Liste der importierten Symbolnamensräume enthält (Symbolnamensraum).
- Das IO-System für asynchrone Eingabe/Ausgabe io_uring hat die Unterstützung für die Verwendung des BPF-Subsystems zur Erstellung von Handlern hinzugefügt. Zum Beispiel kann die Haupt-Lichtsteuerung durch ein BPF-Programm ersetzt werden.
- Im BPF-Subsystem modernisiert Die Analyse der Stapelnutzung, was die Überprüfung vieler BPF-Programme durch den Verifizierer erheblich beschleunigte.
- Zwecks Leistungsoptimierung neu geschrieben Subsystem hrtimer (hochauflösender Timer). Der Task-Scheduler kann jetzt hochauflösende Timer verwenden, ohne Leistungseinbußen im Vergleich zu weniger genauen Timern.
- Die Übertragung von Änderungen aus dem Branch Übertragung der Änderungen aus dem Rust-for-Linux-Zweig, die die Verwendung von Rust als zweite Sprache zur Entwicklung von Treibern und Kernelmodulen betreffen (die Unterstützung für Rust ist standardmäßig nicht aktiviert und führt nicht dazu, dass Rust Teil der verpflichtenden Build-Abhängigkeiten des Kernels wird). Bis zur Version 1.85 (geliefert in Debian 13) wurden die Anforderungen an die für den Bau der Kernelkomponenten erforderliche Rust-Version erhöht. Hinzugefügt wurde die experimentelle Kconfig-Option CONFIG_RUST_INLINE_HELPERS zum Einbetten von C-Schichten in Rust-Code während der Kompilierung (die Optimierung verbesserte die Leistung des Null-Blocktreibers um 2%). Außerdem wurde das Makro ‘const_assert!’ hinzugefügt. Die Funktionen der Module sizes, clk, ptr, sync, error wurden erweitert.
- Im Mechanismus SCHED_EXT, das die Nutzung von BPF zur Erstellung von CPU-Schedulern ermöglicht, hinzugefügt eine anfängliche Möglichkeit zur Erstellung von verschachtelten Schedulern (sub-scheduler), mit denen für jede cgroup ein eigener Task-Scheduler genutzt werden kann.
- Die Optimierung des Swapping-Subsystems wurde fortgesetzt. Die alte Struktur swap_map wurde durch das Mechanismus „Swap Table„ ersetzt. Diese Änderung hat die Leistung verbessert und den Speicherverbrauch im Swapping-Subsystem reduziert.
- Im Subsystem DAMON (Data Access MONitor), das den Zugriff eines Prozesses auf Daten im Arbeitsspeicher überwacht (z. B. kann ermittelt werden, auf welche Speicherbereiche der Prozess zugegriffen hat und welche Bereiche ungenutzt geblieben sind), hinzugefügt Unterstützung verschiedener Algorithmen für automatisches Tuning Quoten.
- Im Tracing-Untertitel wurde das Konzept externer Ringpuffer, das es ermöglicht, Tracing-Daten aus virtuellen Maschinen zu erfassen. Diese Funktion ist in KVM-Hypervisoren und nVHE verfügbar, um Tracing-Daten vom Gastsystem zur Hostseite zu übertragen.
- Im Subsystem RV (kernel.org) (Runtime Verification), die für die Überprüfung der Korrektheit von hochzuverlässigen Systemen entwickelt wurde, wurden die Überwachungskomponenten „stall“ hinzugefügt, um Aufgaben zu verfolgen, deren Ausführung vorübergehend angehalten oder blockiert ist, sowie „deadline“ zur Analyse des Verhaltens des Task schedulers.
Virtualisierung und Sicherheit
- Standardmäßig ist das Flag PROC_MEM_FORCE_PTRACE gesetzt, das das Umgehen der Zugriffsrechte auf den Arbeitsspeicher eines Prozesses über die Datei /proc/PID/mem nur für Prozesse ermöglicht, die den Systemaufruf ptrace() zur Debugging verwenden.
- Hinzugefügt eine neue Reihe von Hooks für LSM-Module (Linux Security Module), die die Implementierung von Richtlinien für Stapelfdateisysteme wie overlayfs erleichtern. In LSM ebenfalls ein Hook zur Verwaltung des Zugriffs auf Unix-Sockets, der wurde im LSM-Modul Landlock zur Zuweisung von Zugriffsrichtlinien für Unix-Sockets.
- In die interne Kryptobibliothek lib/crypto, die einfachere und schnellere Funktionen als die traditionelle Crypto-API bietet, hinzugefügt unterstützt die Algorithmen AES-CMAC, AES-XCBC-MAC, AES-CBC-MAC, GHASH und SM3. Hinzugefügt Dokumentation über lib/crypto.
- Der Modus pKVM (Protected KVM) für strikte Isolation anonymer Speicher unter Verwendung von Virtualisierungs-Erweiterungen für die Architektur AArch64. In diesem Modus werden die Speicherseiten des Gastes aus der Tabelle der virtuellen Adressen des Hosts ausgeschlossen.
- Der KVM-Hypervisor unterstützt jetzt die fünfte Version des virtuellen Interrupt-Controllers ARM (VGICv5 — ARM Virtual Generic Interrupt Controller v5).
Netzwerksubsystem
- Für Unix-Sockets, die mit der Funktion socket() erstellt werden, wurde gibt es Unterstützung für erweiterte Dateiattribute (xattr) user.*. Zu den Anwendungsbereichen gehört das Setzen von Labels über erweiterte Attribute für Unix-Sockets, die für IPC Varlink verwendet werden, um sie zur Inspektion und Fehlersuche bei der IPC-Arbeit mithilfe von BPF-Programmen hervorzuheben. In systemd-journald sollen die erweiterten Attribute verwendet werden, um das Log-Format in Bezug auf den Socket /dev/log zu bestimmen.
- Entfernt Unterstützung des UDP-Lite-Protokolls (RFC 3828), das die Zustellung von Paketen mit falscher Prüfziffer ermöglicht, in der Annahme, dass beispielsweise teilweise beschädigte Audio- und Videodaten auf Codec-Ebene wiederhergestellt werden können. Das Protokoll wurde entfernt, da es niemand verwendet.
- Entfernt die Möglichkeit, den IPv6-Stack als Kernelmodul zu kompilieren, was in der Praxis jedoch nicht angewendet wurde (IPv6 wird entweder ins Kernel integriert oder komplett deaktiviert), aber das Support erschwerte, da beim Kompilieren von IPv6 als Kernelmodul (CONFIG_IPV6=m) viele Teilsysteme gezwungen sind, nutzlose Handler hinzuzufügen, für den Fall, dass das IPv6-Modul entladen wird.
Ausrüstung
- Im AMDGPU-Treiber ist Teil des Tools eine neue Anzeige-Engine (DC) für APU AMD Serie HD 7000 (Sea Islands, GCN 1.1).
- Im Nouveau-Treiber hinzugefügt erste Unterstützung für die NVIDIA GA100 GPU basierend auf der Ampere-Mikroarchitektur.
- Die Arbeit am drm-Treiber (Direct Rendering Manager) Xe für GPUs basierend auf der Intel Xe-Architektur, die in Intel-Grafikkarten der Arc-Serie und integrierter Grafik verwendet wird, wurde fortgesetzt, beginnend mit Tiger Lake-Prozessoren. Unterstützung der Grafik-Subsysteme der Intel Nova Lake-P-Prozessoren hinzugefügt. Implementierung von reinigbaren Pufferobjekten (Purgeable Buffer Objects).
- Die Integration der Nova-Treiberkomponenten für NVIDIA GPUs, die mit GSP-Firmware ausgestattet sind und seit der NVIDIA GeForce RTX 2000 Serie auf Basis der Turing-Architektur verwendet werden, wurde fortgesetzt. Der Treiber ist in Rust geschrieben. Erste Unterstützung für GPUs auf Basis der Turing-Architektur wurde hinzugefügt.
- Hinzugefügt DRM-Treiber corebootdrm zum Rendern von Grafik über den Framebuffer von CoreBoot-basierten Firmwares.
- Hinzugefügt Unterstützung für ASoC AMD RPL DMIC, Cirrus Logic CS42L43, CS47L47, NVIDIA CPCAP und WM8962. Verbesserte Unterstützung für USB-Audiogeräte: Huawei Headset, Focusrite Novation, MV-Silicon, Studio 1824, Arturia AF16Rig, Hotone Audio, Feaulle Rainbow, PreSonus AudioBox, Moondrop Ju Jiu, Scarlett 18i20.
- Hinzugefügt Yogafan-Treiber zur Überwachung der Drehgeschwindigkeit des Lüfters in Lenovo Yoga-, Legion- und IdeaPad-Laptops.
- Hinzugefügt Unterstützung für ARM-Plattformen, SoCs und Geräte: 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.
- Entfernt Unterstützung für die in SoCs Baikal-T1 verwendeten AHCI SATA- und PCIe-Controller sowie Treiber für Timer, Speicher, physmap, Bus, hwmon, dwc und bt1-rom. Grund für das Entfernen ist das Fehlen von Unterstützung und die unvollständige Integration in den Kern der Baikal-Plattformkomponenten, deren Produktion in der RF im November 2025 eingestellt wurde.
- Entfernt 12 Treiber für Ethernet-Geräte mit Schnittstellen ISA und PCMCIA, die bis 2002 hergestellt wurden und für die sich keine Nutzer fanden, die sie in Betriebssystemen verwenden. Außerdem wurde das Subsystem aus dem Kern ausgeschlossen. ISDN, Implementierung von Protokollen AX.25, CAIF und Bluetooth CMTP (Common ISDN Application Programming Interface Message Transport Protocol), die Treiber yellowfin (Yellowfin Gigabit-NIC), hamachi (Hamachi GNIC-II), hamradio (Amateur Radio), inport und logibm (busmouse). Der Grund für die Entfernung war das Fehlen aktiver Betreuer angesichts der steigenden Anzahl von Fehlern, die mit Hilfe von syzbot und KI-Tools entdeckt wurden und die niemand zu beheben bereit ist. Die gesamte Belastung zur Behebung schwerwiegender Probleme fällt auf die Betreuer der Hauptnetzwerksubsysteme des Kerns. Insgesamt wurden über 140.000 Zeilen Code entfernt.
Quelle: linux.org.ru
