Linux 6.1 als nächster Langzeit-Kernel erschienen

Seite 2: Fehlersuche erleichtert

Inhaltsverzeichnis

Neu im Mainline-Kernel ist der "Kernel Memory Sanitizer" (KMSAN). Er hilft beim Aufspüren von uninitialisierten Speicherbereichen. Diese uninitialisierten Stellen im Kernel können unerwartetes Verhalten und schwer zu analysierende Bugs zur Folge haben.

Es nutzt wie schon die länger im Kernel enthaltene KASAN (Kernel Address Sanitizer) die Compiler-Instrumentation der GNU Compiler Collection (gcc). Damit steht im Kernel selbst ein Memory-Sanitizer zur Verfügung. Im Userspace sind Sanitizer schon lange zum Aufspüren von uninitialisiertem Speicher verfügbar.

Beim Einsatz des KMSAN ist jedoch zu beachten, dass dieser nur für Entwicklungs- und Testsysteme gedacht ist. Auf produktiven Systemen soll er nicht zum Einsatz kommen. KMSAN erhöht den Speicherbedarf des Kernels extrem und verlangsamt das System enorm. Näheres zum Einsatz von KMSAN findet sich in der zugehörigen Dokumentation.

Beim Aufspüren hartnäckiger Bugs ist oftmals ein Memory-Dump hilfreich. Was sich bei reinem Kernel-Code problemlos erzeugen lässt, war direkt aus eBPF-Programmen bislang nicht möglich. Das neue Kernel-Release erlaubt es nun, aus eBPF heraus eine Panic auszulösen. Damit kann auch in eBPF zur richtigen Zeit ein Speicherabbild zur Analyse erzeugt werden.

Neu ist auch der BPF-spezifische Memory-Allokator. Dieser adressiert Sicherheitsbedenken. eBPF-Programme können bislang via kprobe und fentry in einem unbekannten Kontext ablaufen und direkt kmalloc() aufrufen. Das könnte Sicherheitsprobleme verursachen. Um das zu vermeiden, ist jetzt ein kleiner Speicherbereich für solche Fälle reserviert, aus denen der Speicher allokiert wird.

Auch führt Linux 6.1 einen speziellen "User Ring Buffer" als BPF-Typ ein. Dieser erlaubt den schnellen Datenaustausch zwischen eBPF-Programmen und Userspace. Außerdem können BPF-Task-Iteratoren nun auf den Ressourcen eines einzelnen Threads operieren.

Der neue Kernel lässt die chinesischen Loongarch-Prozessoren an perf-Events, kexec und kdump teilhaben. Zudem können auch LoongArch-Systeme BPF inzwischen just-in-time compilieren.

Auf EFI-Systemen ist der Kernel zudem jetzt in der Lage, sich architekturunabhängig zu dekomprimieren und zu starten. Bisherige systemabhängige Einzelwege entfallen damit.

Der in Linux 5.13 eingeführte LLVM-basierte CFI-Mechanismus (Control Flow Integrity) wurde durch eine neue Implementierung ersetzt. Diese soll besser die Erfordernisse des Kernels abdecken.

Das Netzwerkprotokoll DECnet fällt im Linux-Kernel weg. Die Userspace-API bleibt zwar intakt, sodass Programme mit DECnet-Unterstützung weiterhin compilieren. Es liegt aber keine Funktionalität mehr dahinter, sodass sie keine DECnet-Verbindung mehr finden. DECnet stammt aus alten Tagen des Betriebssystems OpenVMS. OpenVMS selbst ist bereits seit Jahrzehnten TCP/IP-fähig und lagerte auch selbst DECnet auf TCP/IP aus. Die Kommunikation mit OpenVMS ist damit auch weiterhin unter Linux gesichert.

Linux 5.18 deaktivierte das a.out-Format für ausführbare Dateien. Da seither keine Klagen eingegangen waren, streicht 6.1 den betreffenden Code. a.out ist damit endgültig Geschichte. Zudem wurde es schon lange durch das moderne ELF ersetzt.

Linux 6.1 ist das letzte Release in diesem Jahr. Es tritt damit in den Reigen der Kernel ein, die Langzeitunterstützung (LTS, Long Term Support) erfahren. Er wird damit mindestens zwei Jahre mit Bugfixes versorgt.

Der neue Kernel steht wie üblich auf kernel.org zum Download bereit. Alle Änderungen finden sich gesammelt im ausführlichen Kernel-Changelog.

(dmk)