Als Beifang zum Steam Deck, der neuen Linux-basierten Spielekonsole, verbesserte Valve den zugehörigen AMD-Treiber im Kernel 5.17. Außerdem soll ReiserFS in Rente gehen, BPF-Programme werden portabel und ARM wird sicherer.
Sind die Pflegekosten für ReiserFS zu hoch? Das jedenfalls stellte Matthew Wilcox im Februar 2022 als Frage in den Raum [1]. Er schlug vor, unabhängig von der Diskussion um die involvierten Personen [2] den Support für ReiserFS aus dem Kernel zu entfernen. Das sei in der Vergangenheit bereits für andere Dateisysteme geschehen, etwa für Ext oder XiaFS.
Als klassischer Unterstützer von ReiserFS gilt Suse, doch deren Entwickler Jan Kara winkte bereits ab: Die Userbase für das Dateisystem sei klein und schrumpfe weiter. Er schlug daher vor, beim Mounten von ReiserFS zunächst eine Support-Ende-Warnung zu schicken, um das Dateisystem dann in ein oder zwei Jahren aus dem Kernel zu entfernen. Dave Chinner schloss sich an und forderte zugleich, auch jene Dateisysteme schneller zu entsorgen, die nicht fit für das Jahr 2038 [3] seien.
Schöner mounten
Das Jahr-2038-Problem haben andere Dateisysteme gelöst oder zumindest erfolgreich verschoben; Updates drehen sich hier längst um andere Dinge. So verwendet Ext4 ab Kernel 5.17 ein neues Mount-API sowie zwei neue Calls, um mit Gerätetreibern zu reden: »FS_IOC_GETFSLABEL« und »FS_IOC_SETFSLABEL« [4]. Bei XFS ging es in diesem Release-Zyklus eher in die andere Richtung: Die Entwickler entfernten zahlreiche veraltete Gerätetreiber-Calls, darunter »XFS_IOC_ALLOCSP*« und »XFS_IOC_FREESP*«. Größtes neues Feature sind laut Maintainer Darrick Wong die verkürzten Mount-Vorgänge.
Die F2FS-Entwickler um Jaegeuk Kim verbessern das für die Kompression verwendete Page-Cache-Management und beheben Performance-Probleme für das Flash-basierte Dateisystem. An mehr Leistung arbeiteten auch die Btrfs-Entwickler: Das Verzeichnis-Logging braucht nun weniger Metadaten, das Löschen von Verzeichnissen benötigt 20 bis 40 Prozent weniger Zeit. Auch das Indexieren und Durchsuchen der Tree-Einträge, die auf freien Speicher verweisen, beschleunigt sich [5].
Schneller Austausch
DAX (Direct Access) funktioniert nun außer für Ext2/4 und XFS auch für VirtioFS [6]. Das Dateisystem erlaubt es mehreren virtuellen Maschinen, sich Verzeichnisse zu teilen. Es basiert auf FUSE, dem Filesystem in Userspace. DAX ermöglicht es virtuellen Gastsystemen, schneller auf Daten des Hosts zuzugreifen, indem sie den eigenen Page Cache umgehen.
Idmappings sollen Dateisysteme hingegen fit für den Container-Einsatz machen. Im Kernel-Kontext geht es darum, Userspace-IDs nach einem festen Schema in Kernel-Space-IDs zu transformieren. Das erweist sich laut Idmapping-Dokumentation [7] zum Beispiel im Kontext der Portable-Home-Verzeichnisse von Systemd als nützlich. Hier fehle bislang eine praktikable Lösung, das Home-Verzeichnis auf mehreren Rechnern zu verwenden, heißt es. Die neuen Patches für Kernel 5.17 sollen eine Idmappings-Infrastruktur ermöglichen, die auch solchen Dateisystemen Idmapping erlaubt, die selbst mit einem Idmapping gemountet wurden.
Beim NFS-Daemon (Nfsd) tut sich ebenfalls etwas, wenn auch eher auf der menschlichen Ebene. J. Bruce Fields verlässt Red Hat und gibt zugleich seinen Co-Maintainer-Job ab, schreibt Chuck Lever. Der ist nun der einzig verbliebene Maintainer. Dessen ungeachtet haben die Entwickler am dynamischen Thread Management gearbeitet und am Support für Reexporte von NFS-Mounts [8]. Der NFS-Client für Linux erhält hingegen ersten Support, um mit schreibweiseninsensitiven Dateisystemen zurechtzukommen.
Ilja Drjomow, Entwickler des verteilten Dateisystems Ceph, betrachtet die neue Mount-Syntax für Geräte als Highlight des Kernels 5.17. Sie löst unter anderem lange anhaltende Probleme beim Authentifizieren und beim Mounten mehrerer CephFS-Dateisysteme aus demselben Cluster. Die bisherige Syntax will man aber weiterhin pflegen. Eine neue Mount-Option aktiviert zudem einen ungepufferten globalen I/O-Modus, statt dateibasierte Systemaufrufe zu verwenden [9].
Bestens vernetzt
Im Netzwerk-Bereich verspricht Eric Dumazet höhere Datenübertragungsraten dank TCP-Optimierungen: Diese leeren den Socket-Puffer nun nicht mehr während eines Lock-Vorgangs, sondern möglichst erst danach. Ein paar Zahlen zum verbesserten Datendurchsatz von »TCP-STREAMS« liefert Dumazet gleich mit [10].
In Intels Wi-Fi-Zweig landen ebenfalls Neuerungen. Dazu gehören weiterer Code, um eine neue Hardwarefamilie einzuführen (»Bz«), sowie Code für das WLAN-Device »ax1650« von Killer. Unterstützt die Firmware OCE (Optimized Connectivity Experience), dann lässt sich zudem ein Access Point besser von einer WLAN-Karte ansteuern, was die Datenübertragung effizienter macht [11].
Total random
Statt nur Zufallszahlen generierte Linux’ Random Number Generator in letzter Zeit auch recht viel Diskussionsstoff. So nahm Linus Torvalds einen vom Wireguard-Entwickler Jason A. Donenfeld eingereichten Patch für die nächste Kernel-Version 5.18 zu Redaktionsschluss bereits wieder zurück. Die Änderung hatte darauf abgezielt, die häufig Verwirrung stiftenden beiden Kernel-Entropiequellen »/dev/random« und »/dev/urandom« zu vereinen. In der Folge schlugen jedoch einige Qemu-Boot-Tests für mehrere Architekturen fehl, wie Entwickler Günter Röck vermeldete.
Donenfelds Suche nach der Ursache führte ihn unter anderem zu einem Boot-Skript [12], das merkwürdige Dinge mit »/dev/urandom« anstellt. Laut Donenfeld übergibt es zwar einen sogenannten Seed, er initialisiert den Zufallsgenerator aber nicht wirklich. Daher beruhen die von »/dev/urandom« gelesenen Ergebnisse tatsächlich nicht auf dem anfänglichen Seed – ein offenbar typischer Fehler. Das erklärt laut Donenfeld aber nur einen Teil des Problems; offenbar braucht es noch mehr Forschung zu bestimmten Architekturen. Ein paar grundsätzliche Überlegungen zu den Plänen für Linux’ Zufallszahlengenerator fasst der Entwickler in einem lesenswerten Blogpost zusammen [13].
Weitere Neuigkeiten im Security-Kontext betreffen unter anderem den Deterministic Random Bit Generator (DRBG) im Crypto-Subsystem, der nun synchrones Seeding über »/dev/random« verwendet. Im Audit-System helfen Patches, den Code zu härten. Zudem soll der Kernel bei Bedarf auch jene Prozesse notfalls ausbremsen dürfen, die Audit-Records generieren, wenn zum Beispiel die Audit-Warteschlangen überlaufen.
ARM sichern
Plattformseitig warten indes neue Treiber für die x86-Plattformen, die unter anderem Lenovos Yogabook und Asus-Docks betreffen. Im ARM-SoC-Bereich unterstützt Apple M1 nun den Power-Management-Treiber. Davon profitiert auch Asahi Linux: Die auf Apples M1-Plattform konzentrierte Distribution gibt es seit Mitte März in einer Alpha-Version. Verschiedene Qualcomm- und Samsung-Treiber erhalten zudem Support für weitere SoC-Typen.
Nicht wenige Änderungen im ARM-Bereich betreffen auch die Sicherheit. OP-TEE, das ARM-basierte Trusted Execution Environment, empfängt nun asynchrone Benachrichtigungen von Secure-World-Firmware. Die ARM-Plattform erhält zudem Kfence-Support: Der sogenannte Kernel Electric Fence schreibt sich auf die Fahnen, Speicherfehler in Produktionssystemen ohne großen Overhead zu entdecken, etwa Out-of-bound-Zugriffe und Use-after-free-Fehler. Zugleich haben die ARM64-Entwickler KCSAN implementiert: Der Kernel Concurrency Sanitizer spürt dynamisch Data Races auf.
Mehr Wumms für das Steam Deck
Auch an den “Inner Workings” des Kernels gibt es Änderungen. Ein neues Accounting im Core Scheduler macht transparent, wie viel CPU-Zeit die Core-Scheduling-Anforderungen kosten. Updates in Form von neuen Unterkommandos für »perf ftrace« vereinfachen das Tracing von Performance-Engpässen.
Beim Power Management hebt Rafael Wysocki vor allem einen neuen P-State-Treiber für bestimmte AMD-Chips hervor, zu denen auch die Zen-2-Kerne gehören, die im SoC von Valves neuem Steam Deck (Abbildung 1) stecken. Das will vor allem der Nintendo Switch Konkurrenz machen, aber auch Konsolen wie der Xbox oder Playstation, und bietet Indie- und AAA-Titel an. Der Clou: Das Steam Deck läuft auf einer Linux-Basis und bringt auch einen KDE-Desktop mit. Tatsächlich soll Valve mit AMD kooperiert haben, um den P-State-Treibercode zu schreiben. Er ersetzt den bisherigen Cpufreq-Treiber und soll deutlich mehr Leistung aus den Kernen kitzeln: Die Rede ist von 10 bis 25 Prozent [14].

Abbildung 1: Valve verbesserte gemeinsam mit AMD den Code für die im Steam Deck verbauten Zen-2-Kerne. Quelle: Valve
Portables BPF
Auch die BPF-Fankurve darf Neuerungen bejubeln: Die Programme für die Sandbox im Kernel werden portabel, denn Kernel 5.17 führt CO-RE ein. Die Abkürzung steht für “Compile Once, Run Everywhere”. Damit lassen sich BPF-Programme bauen, die ohne Anpassungen und erneutes Kompilieren auch auf anderen Linux-Kernel-Versionen laufen [15].
Neben diesem Highlight gibt es einen neuen »bpf_loop«-Helper, der dem Verifier das Überwachen der Schleifenlogik leichter macht. Letzterer muss sicherstellen, Schleifen im Kernel stets zu beenden, was die Zahl der Iterationen künstlich begrenzt. Indem der Helper diese Loop-Logik in den Kernel verlagert, kann der Verifier nicht nur schneller arbeiten, sondern die Schleifen auch einfacher prüfen. Das hebt das Schleifen-Limit auf. Nicht zuletzt bereiten die BPF-Entwickler die Libbpf auf die Version 1.0 vor.
In Sachen Hypervisor unterstützt Hyper-V jetzt eine Isolations-VM, die für Confidential Computing nötig ist und den Speicher der Gäste verschlüsseln kann. KVM erhält indes Support für die PMU-Erweiterung (Performance Monitoring Unit) von ARMv8.7.
Ein- und Ausgabe
Bei den Eingabegeräten sticht der teils neue, teils verbesserte Support für verschiedene Stifte, Zeichentabletts und Apples Magic Keyboard hervor.
Auch die Grafikabteilung steht nicht zurück: Neben den erwähnten Power-Management-Optimierungen für AMD unterstützt der DRM-Core-Treiber nun Privacy Screens. Einige neue Laptop-Monitore bieten dieses Feature an. Es blockiert ohne spezielle Folien die seitliche Sicht auf Monitore, Gnome 42 kann das Feature verwenden. Code dafür landete auch in Intels »i915«-Subsystem, das außerdem die Intel-Chips “Alder Lake P” und “Raptor Lake S” sowie Backlights für VESA-Panels unterstützt.
Überdies spendierten die Entwickler dem »nomodeset«-Code ein Refactoring. Der »simpledrm«-Framebuffer-Code unterstützt jetzt Apple M1. Der VMware-Treiber »vmwgfx« wird um den Graphic Execution Manager (GEM) und Open-GL-4.3-Features ergänzt. Daneben warten noch zahlreiche kleinere Änderungen an den Grafiktreibern [16]. Kernel 5.17 steht unter anderem auf Kernel.org [17] zum Download bereit.
Infos
- ReiserFS-Diskussion: https://lkml.org/lkml/2022/2/22/280
- Markus Feilner, “Hans Reiser verlangt ein neues, faires Verfahren”: https://www.linux-magazin.de/news/hans-reiser-verlangt-ein-neues-faires-verfahren/
- Jahr-2038-Problem: https://de.wikipedia.org/wiki/Jahr-2038-Problem
- Ext4-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1dbfae0113f1423b42c304989a3cc8a7dd0ea53e
- Performance-Updates für Btrfs: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d601e58c5f2901783428bc1181e83ff783592b6b
- VirtioFS: https://virtio-fs.gitlab.io
- Idmappings: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/idmappings.rst?id=5dfbfe71e32406f08480185d396d94cf7fc7a7d6
- NFS-Daemon-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=175398a0972bc3ca1e824be324f17d8318357eba
- Neues bei CephFS: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=64f29d8856a9e0d1fcdc5344f76e70c364b941cb
- Höherer Datendurchsatz: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6fcc06205c15bf1bb90896efdf5967028c154aba
- Wi-Fi aktualisiert: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bc11517bc8219314948780570ec92814d14d6602
- RNG-Diskussion auf der Kernel-Mailingliste: https://lkml.org/lkml/2022/3/22/882
- Jason Donenfeld zu den RNG-Neuerungen: https://www.zx2c4.com/projects/linux-rng-5.17-5.18/
- AMDs Zen-2-Kerne: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b35b6d4d71365fbfb6f2cc8edc331b3882ca817e
- BPF mit CO-RE: https://kernelnewbies.org/Linux_5.17#BPF_CO-RE_-Support_and_other_improvements
- DRM-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8d0749b4f83bf4768ceae45ee6a79e6e7eddfc2a
- Kernel.org: https://www.kernel.org






