- Linus Torvalds hat den Kernel 6.11 veröffentlicht
- Seine Nachricht: "Ich bin wieder einmal unterwegs, und es ist nicht meine übliche Zeitzone, aber hier in Wien ist Sonntagnachmittag, und 6.11 ist erschienen."
- Zu den wichtigsten Änderungen dieser Veröffentlichung gehören neue
bind()- und listen()-Operationen in io_uring, Patches für verschachteltes Bottom-Half-Locking, Schreibzugriffe auf gerade verwendete ausführbare Dateien, Unterstützung zum Schreiben von Blocktreibern in Rust, Unterstützung für atomare Schreiboperationen in der Block-Layer, ein Bucket-Slab-Allocator mit dedizierten Buckets sowie eine vDSO-Implementierung von getrandom()
Architekturabhängige Änderungen
- Die 64-Bit-Arm-Architektur unterstützt nun CPU-Hotplug auf ACPI-Systemen. Details dazu im Dokumentations-Commit
- Der X86-Kernel kann nun als Gast unter Nutzung von AMDs Sicherheitsfunktion für verschlüsselte Virtualisierung SEV-SNP laufen. Dabei kommt das Secure-VM-Service-Modul zum Einsatz
- Die Funktion "fake EFI memory map" für X86 wurde entfernt. Sie erlaubte das Anlegen fiktiver Speichermap-Einträge beim Booten, passt aber nicht zu Konfigurationen für Confidential Computing
- Neue Implementierung der AES-GCM-Chiffre für x86-64-Systeme. Leistungsverbesserungen sind immer willkommen, aber dieser Beitrag ist auch wegen der ausführlichen Dokumentation von Code und Funktionsweise bemerkenswert. Details in diesem Commit
- Die Unterstützung für die PowerPC-40x-Plattform wurde entfernt
- Für RISC-V-Systeme wurde Unterstützung für Memory-Hotplug hinzugefügt
Kernel-Kern
- Das io_uring-Subsystem bietet nun Operationen zur Implementierung von bind() und listen()
- Ein neuer Satz von ioctl()-Operationen im nsfs-(Namespace-)Dateisystem führt Umwandlungen von Prozess- und Thread-Gruppen-IDs zwischen PID-Namespaces durch
- Das pidfd-Dateisystem unterstützt einen neuen ioctl()-Aufruf zum Abrufen von Namespace-Dateideskriptoren für Prozesse, die durch pidfd repräsentiert werden
- Die Patches für verschachteltes Bottom-Half-Locking wurden zusammengeführt. Sie dienen in erster Linie zur Verbesserung der Latenz von Echtzeit-Kernels, dürften aber auch anderen Nutzern Vorteile bringen
- Es gibt einen neuen Systemaufruf
uretprobe(), der derzeit nur auf x86-64-Systemen implementiert ist. Seine Aufgabe ist es, die Verarbeitung von uretprobes – dynamisch in User-Space-Prozesse eingefügten Tracing-Punkten für Funktionsrückgaben – zu optimieren
- Die Beschränkung auf einen einzelnen Nutzer beim function-graph tracer wurde aufgehoben
- Mit dem neuen Kommandozeilenparameter
reserve_mem= lassen sich benannte Speicherbereiche reservieren. Das ist für die Verwendung mit dem pstore-Subsystem zusammen mit dem neuen Parameter ramoops.mem_name= gedacht
Dateisysteme und Block-I/O
- Beim Systemaufruf statx() darf das Pfadargument jetzt ein Nullzeiger sein, wenn das Flag AT_EMPTY_PATH gesetzt ist
- Beim Systemaufruf open_by_handle_at() wurden in 6.11 die Berechtigungsprüfungen etwas gelockert – in Situationen, in denen der Kernel feststellen kann, dass der Aufrufer über die passenden Zugriffsrechte auf die Datei verfügt
- Der Linux-Kernel hat traditionell Schreibzugriffe auf ausführbare Dateien blockiert, die irgendwo im System gerade von einem Prozess verwendet werden. Das sollte unangenehme Überraschungen bei laufenden Programmen verhindern. Die Kernel-Entwickler bauen diese Einschränkung seit Jahren schrittweise ab. Ab 6.11 verhindert der Kernel Schreibzugriffe auf verwendete ausführbare Dateien nicht mehr
- Das Btrfs-Dateisystem erkennt nun einige neue Werte für die Mount-Option
rescue= an (ignoremetacsums und ignoresuperflags). Sie sollen die Wiederherstellung von Dateisystemen unterstützen, die von User-Space-Tools teilweise konvertiert wurden, insbesondere bei Dateisystemen mit Prüfsummenkonvertierung
- Die Art, wie Btrfs die Rückgewinnung von Blockgruppen durchführt, wurde verbessert. Damit sollen Situationen vermieden werden, in denen freier Speicher nicht nutzbar ist, obwohl das Dateisystem noch nicht voll ist. Eine Erklärung zum neuen dynamischen Schwellenwert für die Rückgewinnung findet sich in diesem Commit
Hardware-Unterstützung
- Qualcomm-SM8650-Kameraclock-Controller
- Hardware-Monitoring wie temperatursensoren nach SPD5118 und der digitale Dual-Loop-Multiphase-Controller MP2993 von Monolithic Power Systems
- Sonstiges wie Sensoren des eingebetteten ChromeOS-Controllers und laderegler auf Basis von ChromeOS-EC
- Networking wie der Realtek-RTL8192DU-USB-WLAN-Adapter, die Renesas-Ethernet-TSN-Schnittstelle und die Vining-800-CAN-Schnittstelle
- Clock-bezogene Komponenten wie der Amlogic-C3-PLL-Clock-Controller und die Qualcomm-SM7150-Display-/Kamera-/Video-Clock-Controller
- GPIO und Pin Control wie die NXP-IMX91-Pin-Control-Unit sowie Pin- und GPIO-Controller des Nuvoton MA35
- Grafik wie das Panel Lincoln Technologies lcd197 und Panels auf Basis von Ilitek ILI9806E
- Neue Hardware-Unterstützung in vielen weiteren Bereichen wie Industrial I/O, Eingabegeräte, Media, Sonstiges, PHY, Sound und USB
Sonstiges
- Ein neues Power-Sequencing-Subsystem sorgt dafür, dass die Geräte eines Systems in der richtigen Reihenfolge hochgefahren werden
- Das Modul "sloppy logic analyzer" kann eine Gruppe von GPIO-Leitungen in einen kostengünstigen Logikanalysator verwandeln
- Dem perf-Tool wurden viele neue Funktionen hinzugefügt
- Eine kleine Sammlung von Rust-Abstraktionen zum Laden von Firmware wurde zusammengeführt. Es fehlt noch einiges, bevor sich wichtige Treiber in Rust schreiben lassen, aber diese Liste wird allmählich kürzer
Networking
- Mit dem neuen Sysctl-Schalter
net.tcp_rto_min_us lässt sich das minimale Retransmission-Timeout für TCP-Sockets anpassen
- Das ethtool-Dienstprogramm kann nun die Interrupt-Konfiguration für Schnittstellen mit Net DIM feiner abstimmen
Sicherheitsrelevantes
Virtualisierung und Container
- KVM hat erste Unterstützung für AMDs Sicherheitsmechanismus für verschlüsselte Virtualisierung SEV-SNP erhalten
- Es gibt einen neuen KVM-ioctl()-Aufruf, um den Speicher eines Gasts vorab zu befüllen, bevor der Gast ausgeführt wird
Interne Kernel-Änderungen
- Die erste in 6.11 zusammengeführte Änderung war der neue Mechanismus für "Laufzeitkonstanten", den Linus Torvalds hinzugefügt hat
- Für das iomap-Subsystem wurde endlich etwas Dokumentation hinzugefügt
- Die Mindestversion von GNU Make, die zum Bauen des Kernels benötigt wird, wurde auf 4.0 angehoben
- In 6.11 wurden 118 exportierte Symbole entfernt und 464 hinzugefügt, was einem Nettozuwachs von 346 entspricht. Außerdem gibt es 6 neue kfuncs
Meinung von GN⁺
- Bei der Kernel-Veröffentlichung 6.11 beeindrucken besonders die vielen architekturspezifischen Verbesserungen und die ausgeweitete Hardware-Unterstützung. Vor allem CPU-Hotplug auf 64-Bit-ARM und die Unterstützung für AMDs SEV-SNP auf x86 sind im Hinblick auf Sicherheit und Virtualisierung bedeutsam
- Mit neuen Funktionen in io_uring und BPF setzt sich der Trend zu stärkerer Kernel-Unterstützung für High-Performance-I/O und eBPF-Programmierung fort. Das dürfte bei Performance-Optimierung, Monitoring und Networking sehr hilfreich sein
- Neue Subsysteme und Module wie Power Sequencing oder der sloppy logic analyzer dürften den praktischen Einsatz des Linux-Kernels in Embedded- und IoT-Umgebungen erweitern
- Auch interne Optimierungen und Verbesserungen für Entwicklerfreundlichkeit – etwa Laufzeitkonstanten oder bessere Dokumentation – werden kontinuierlich umgesetzt. Dennoch gibt es weiterhin Bereiche mit zu wenig Dokumentation, sodass mehr Zusammenarbeit in der Community nötig erscheint
- In der zweiten Hälfte des Merge-Fensters für 6.11 standen Performance-Verbesserungen für mehrere Architekturen und neue Hardware-Unterstützung im Vordergrund. Besonders die Optimierung der AES-GCM-Chiffre auf x86-64 und die Unterstützung für Memory-Hotplug auf RISC-V sind bemerkenswerte Änderungen
- Mit der ersten Unterstützung für AMDs SEV-SNP in KVM gab es auch Fortschritte bei der Sicherheit von Virtualisierung. Das deutet darauf hin, dass die Rolle des Linux-Kernels in Cloud- und Edge-Computing-Umgebungen weiter wachsen wird
- Die Einführung von Rust-Abstraktionen für Firmware-Laden und zur Abwehr von Heap-Spraying zeigt das Potenzial von Rust als Systemprogrammiersprache. Der Anteil von Rust-Code im Kernel dürfte künftig schrittweise zunehmen
- Schade ist, dass die Zusammenführung skalierbarer Scheduler-Klassen verschoben wurde, doch für ausreichende Prüfung und Stabilisierung scheint das unvermeidlich. Da der Scheduler direkten Einfluss auf die Systemleistung hat, ist ein vorsichtiges Vorgehen nötig
3 Kommentare
„Auch nach dem Update auf 6.10.10 wacht das System gelegentlich nicht aus dem Ruhemodus auf“
Da bin ich also doch nicht der Einzige...
Torvalds sollte wohl noch 200 Jahre länger leben.
Hacker-News-Kommentare