Veröffentlichung des Linux-Kernels 7.1

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

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster