Die Neuerungen des zu Halloween veröffentlichten Linux 5.15 klingen alles andere als gruselig. Es gibt einen neuen Samba-Server sowie NTFS-Support im Kernelspace. Zudem erhält BPF Support für Scheduler und Timer, und Jens Axboe bringt Bio-Recycling in den Kernel.
In seiner ersten Mitteilung [1] nach dem Ende des Merge Window für den Kernel 5.15 (Codename: “Trick or Treat”) räumte der Kernel-Chef zunächst ein, sich selbst ein wenig in den Fuß geschossen zu haben. In einem Patch aktivierte er Anfang September ganz bewusst das Compiler-Flag »-Werror«, das sämtliche Warnungen als Build-Fehler behandelt, was Kernel-Builds zum Scheitern bringen soll.
Folgerichtig gingen in Build- und CI/CD-Systemen weltweit die roten Lichter an, und viele Entwickler forderten recht bald, den Patch [2] zurückzunehmen. Das Argument: Bereits triviale und vernachlässigbare Fehler würden reihenweise Builds zum Einsturz bringen. Torvalds hielt zunächst dagegen: Der Sinn der Sache liege eben genau darin, Entwickler dazu zu bringen, solche Warnungen ernst zu nehmen.
Er sah dann aber offenbar recht bald die Aussichtslosigkeit seines Unterfangens ein und schloss einen Kompromiss [3]. Statt alle Admins zu zwingen, für ein Opt-out die Option »CONFIG_WERROR=n« zu verwenden, sollen die Build-Fehler künftig nur in sogenannten Compile Tests auftreten. In der finalen Release-Meldung an Halloween betrachtete Torvalds das kurze Intermezzo bereits im Rückspiegel [4].
Brücke zu Windows
Zum Glück treibt nicht alles, was Torvalds anfasst, Entwickler auf die Barrikaden. Der in den letzten Kernel-News [5] erwähnte NTFS-Treiber von Paragon landete inzwischen mithilfe des Kernel-Chefs in Linux 5.15, wo er sich im Verzeichnis »fs/ntfs3/« findet. Er unterstützt das Windows-Dateisystem bis inklusive Version 3.1 und lässt sich über die Datei »/etc/fstab« als Dateisystemtyp »ntfs3« einbinden. Der komplette Journaling-Support über JBD steht noch auf der To-do-Liste. Anders als der neue lief der bisherige NTFS-Treiber im Userspace und verwendete das FUSE-Dateisystem für seine Mounts. Das brachte jedoch spürbare Performance-Einbußen mit sich, die der Treiber im Kernelspace jetzt behebt. Die verfügbaren Mount-Optionen liefert die Dokumentation [6].
Apropos FUSE: Das Filesystem in Userspace erhielt ebenfalls ein Update. Aktive FUSE-Geräte lassen sich neuerdings mounten, was zuvor nur während des Initialisierungsprozesses gelang. FUSE-Superblöcke ließen sich lediglich über ein Mount- oder Namespace-Cloning teilen.
Ein naher Verwandter von FUSE, Overlay-FS, arbeitet dank RCU-Lookups nun ebenfalls zügiger. RCU [7], ein mit Kernel 2.5 eingeführter, auf überwiegendes Lesen optimierter Synchronisierungsmechanismus, ergibt im Kontext eines Overlay-Dateisystems zweifelsohne Sinn. Konkret kennt die »get_acl()«-Methode jetzt das Argument »bool rcu«. Ausführliche Infos zu RCU, das für Read-Copy-Update steht, liefert ein Kern-Technik-Artikel [8].
Verwaiste Inodes
Für Ext4 gibt es laut Maintainer Ted Ts’o im Wesentlichen zwei neue Funktionen. Das Orphan File Feature [9] beschleunigt den Umgang mit verwaisten Inodes. Bislang verwaltete Ext4 sie als einfache verlinkte Liste, wobei der Superblock auf den zuletzt verwaisten Inode verlinkt, der wiederum auf den vorherigen und so weiter. Diese Kette erzeugt allerdings Flaschenhälse, wenn das Dateisystem sehr viele verwaiste Inodes generiert. Über das neue Orphan File Feature erfährt Ext4 bereits beim Mounten über den Superblock, dass gültige Orphan-Inodes existieren. Es liest und prozessiert dann sämtliche verwaisten Inodes in einem Rutsch. Daneben haben die Entwickler die Discard-Operationen aus dem JBD2-Commit-Thread entfernt, um langsamere Geräte besser zu unterstützen, die andernfalls Probleme beim Einsatz der Mount-Option »discard« bekommen.
Auch bei den XFS-Entwicklern standen neben Bugfixes (»quotaoff« crasht das System nicht mehr) Performance-Gewinne im Fokus der Arbeit. Sogenannte Inode Inactivations passieren im Zuge von Löschaktionen und lassen sich seit Neuem Hintergrund-Threats von CPUs zuweisen. Das beschleunige die Löschvorgänge in Datei- und Verzeichnisbäumen, heißt es in der Commit-Nachricht [10]. Zudem verarbeiten Rechner XFS-Logs nun parallel, für »inode btree counter« gelten schnellere Mount-Vorgänge sowie Datumsangaben über das Jahr 2038 hinaus nicht mehr als experimentelle Features.
Das Copy-on-Write-Dateisystem Btrfs unterstützt neuerdings »fs-verity« über die standardmäßigen Ioctls und Idmappings beim Mounten des Dateisystems. Beim Support für »fs-verity« handelt es sich um ein Security-Feature, das es dem Dateisystem ermöglicht, die Integrität und Authentizität von Read-only-Dateien transparent zu überprüfen [11]. Idmappings dienen dazu, die Zugriffsrechte von Ordnern und Dateien zu lesen und zu kontrollieren, sie auf ein Speichermedium zu schreiben oder an den Userspace zu schicken [12]. Nicht zuletzt zeigen sich Mount-Vorgänge, bei denen Anwender die Rettungsoption »rescue=ibadroots« verwenden, als weniger anfällig gegenüber teilweise beschädigten Trees. Zudem erlaubt es Btrfs nun, RAID 0 auf einzelnen Geräten und RAID 10 auf nur zwei Geräten zu verwenden.
Auch für das Netzwerk-Dateisystem NFS warten Updates. Nfsd, das Dateisystem für den NFS-Server-Zugriff, beherrscht nun per Protokoll eine Verschlüsselung von Remote Procedure Calls über TLS (»RPC_AUTH_TLS«). Gleichzeitig haben die Entwickler an der Performance geschraubt. Für den NFS-Client berichtet Anna Schumaker von verbesserten Antwortzeiten, falls der Server nicht reagiert. Zudem fließt erster Support für das Teilen von Verbindungen zwischen Servern mit mehreren NICs ein.
Samba im Kernel
Zu den Highlights im neuen Kernel 5.15 gehört sicherlich Ksmbd, ein auf dem SMB-3-Protokoll basierender Dateiserver, der direkt im Kernel operiert. Der bisherige Userspace-Server sei in mehreren Belangen suboptimal, erklärt Steve French in der Ankündigung [13]: Er verbrauche zu viel Speicher, laufe zu langsam und lasse sich nur schlecht mit fortgeschrittenen Linux-Features kombinieren. Ksmbd soll nun mehr Performance liefern, besseres Lease-Handling durch verteiltes Caching ermöglichen und ganz allgemein einen GPLv2-basierten SMB-Server bereitstellen. Er wird aber das bisherige Samba nicht ersetzen, sondern ergänzen und dort, wo es Sinn ergibt, mit den Samba-Client-Tools kooperieren.
Weitere kleine Änderungen an SMB 3 stehen eher im Schatten von Ksmbd. So arbeiten die Entwickler an gemeinsamen Headern für Server und Client, und das Verzeichnis »cifs_common/« heißt nun »smbfs_common/«. Insgesamt sei der veraltete CIFS-Dialekt längst durch SMB 3 überholt, was eine Namensänderung von »fs/cifs« auf »fs/smbfs« sinnvoll mache.
Voller Speicher
In Sachen NVMe-Speicher gibt es gute Nachrichten für Geräte mit Host Memory Buffer (HMB): Darauf funktioniert nun Suspend besser, außerdem gibt es Tracing für »nvme_admin_set_features«.
Etwas exotischer ist eine andere Form von Speicher: OTP. Die Abkürzung steht für One Time Programmable. Dieser Speicher wird für die Konsolen Wii und Wii U (Abbildung 1) in der Fabrik einmalig beschrieben und dann nicht mehr verändert. Er enthält Routinen, um verschiedene Teile des Speichers zu ver- und entschlüsseln sowie zu verifizieren. Der Treiber »nintendo-otp« unterstützt nun den OTP-Speicher für beide Konsolen, er basiert auf Reverse Engineering.

Abbildung 1: Außer für die Wii bringt der Kernel auch für die Wii U einen OTP-Treiber mit. Quelle: Takimata, CC-BY-SA 3.0, https://commons.wikimedia.org/wiki/File:Wii_U_Console_and_Gamepad.png
In Sachen WLAN entfällt ab Kernel 5.15 vor allem der altgediente Treiber »prism54«. Intels Wi-Fi-Treiber (»iwlwifi«) scannt nun versteckte 6-GHz-Netzwerke, und das Pendant für Broadcom (»brcmfmac«) ergänzt WPA3 Personal mit Fast-Transition-Authentifizierung (FT) und kann sich jetzt mit BSSIDs verbinden, die SAE (Simultaneous Authentication of Equals) nach dem 802.11r-Standard unterstützen.
Im Netzwerksegment liefert Kernel 5.15 Support für das Management Component Transport Protocol (MCTP) über das intelligente Hardwarekomponenten miteinander reden sollen. Das Protokoll lässt sich aufgrund seines Abstraktionsgrads in Firmware verschiedener Plattformen integrieren und verwendet I2C, SMBus oder PCIe als darunterliegende Busse. Für »veth« gibt es eine flexiblere Channel-Nummerierung, neu ist der »LightETH«-Netzwerktreiber.
Zwischen den Exception-Levels 1 und 2 trackt KVM nun für die ARM-Architektur die Besitzrechte für Pages. Außerdem darf ARM jetzt auch generischen KVM Entry Code verwenden. Für den x86-Bereich gibt es eine neue MMU, die schneller und ohne Locking auf Page Faults reagiert. Nicht zuletzt hat Microsoft-Entwickler Michael Kelley Hyper-V architekturagnostisch gemacht.
Schwankende Sicherheit
Eine Änderung gibt es für AMDs Secure Memory Encryption (SME). Auslöser war ein Hinweis von Linux-Magazin-Autor Paul Menzel, der auf der Freedesktop-Mailingliste über Boot-Probleme aufgrund der Option »AMD_MEM_ENCRYPT« berichtete [14]. Bei einigen AMD-Raven-Systemen führt das standardmäßige Aktivieren der Option zu einem schwarzen Bildschirm. Nach einigem Hin und Her ist SME nun standardmäßig deaktiviert. Wer es dennoch braucht, muss ab Linux 5.15 die entsprechende Kernel-Option aktivieren oder den Kernel-Kommandozeilenparameter »mem_encrypt=on« verwenden.
Die Sicherheit von Linux beschäftigte im Oktober auch den Google-Mitarbeiter Jann Horn von Project Zero. Er zeigte [15], dass sich auch eher als harmlos eingestufte Memory-Corruption-Bugs dazu verwenden lassen, Stück für Stück ein System zu kompromittieren. Sein Resümee: Je früher die Entwickler einen potenziellen Exploit stoppen, desto zuverlässiger klappt die Abwehr, auch wenn das mehr Overhead bedeuten kann.
Von Mike Snitzer kam Code, der die Device-Mapper-Infrastruktur bereit für IMA-basierte Remote Attestion macht. Das Kürzel IMA steht für Integrity Measurement Architecture. Der neue Code erlaubt es, Device-Mapper-basierten Storage in eine Cloud auszurollen, um dort über IMA die Konfigurationen von Benutzern zu validieren. Das dafür nötige Aufstellen von Richtlinien und deren Durchsetzung erfolgen allerdings außerhalb des Kernels. Apropos IMA: Eine weitere Änderung erlaubt es IMA-Nutzern, die Architektur so zu konfigurieren, dass sie nur tatsächlich mit dem Kernel gebaute Hashes akzeptiert. Hashes über Dateien, die andere Algorithmen verwenden, erhalten schlicht keine Bewertung von IMA.
Kernel-Sandbox im Takt
Ein Teil der Netzwerk-Updates betrifft auch BPF, den Berkeley Packet Filter. Jakub Kicinski schickte Patches für BPF, aus denen die BPF-Timer hervorstechen, aber auch Änderungen am Scheduler. Letztere erlauben es, BPF-basiert einen anderen als den Completely Fair Scheduler (CFS) zu verwenden, abhängig vom zu bearbeitenden Workload [16].
Der BPF-Support für Timer wurde laut BPF-Entwickler Alexei Starovoitov erstmals 2013 angefragt. Das nun veröffentlichte Ergebnis ist ein Wrapper für »hrtimers«, ein Subsystem des Kernels, das bereits länger High Resolution Timer anbietet. Von diesen profitieren Userspace-Anwendungen ganz allgemein, insbesondere aber Multimediaprogramme. Diese Timer stehen über den Wrapper nun auch BPF-Programmen zur Verfügung.
Weiterhin unterstützt die »sockmap« nun auch Unix Stream Type Sockets und der »iterator« Unix Domain Sockets. Zudem dürfen Programme zur TCP-Überlastkontrolle (Congestion Control) und BPF-Iteratoren neuerdings »bpf_setsockopt()« aufrufen, um etwa einen anderen Algorithmus für die Überlastkontrolle zu verwenden.
Den Systemen Calls »mkdirat()«, »symlinkat()« und »linkat()« haben die Entwickler rund um Jens Axboe Support für »io_uring« spendiert, was den asynchronen Einsatz ermöglicht. Weiterhin steigert der sogenannte Bio-Recycling-Support die Performance in High-IOPS-Szenarien für Polling-Vorgänge. Das IO-Limit pro Kern wächst damit um rund 10 Prozent von etwa 3,2 Millionen auf 3,5 Millionen Ein- und Ausgaben pro Sekunde, bezogen auf Intel Optane Gen2 Storage [17].
Überblicke
Auch die Arbeit am Support für Apples M1-Chip geht weiter. Einen Überblick liefert ein Blogpost zu Asahi Linux [18]. Einige der Neuerungen fließen aber wohl erst in Kernel 5.16 ein, doch es gibt bereits Patches für 5.15. Dazu gehört etwa der neue DART-IOMMU-Treiber. Sven Peter und Alyssa Rosenzweig übernehmen künftig die Aufgabe als Maintainer für Apples ARM-Chips unter Linux. Außerdem nennt Arnd Bergmann drei neu unterstützte ARM-Plattformen (32 Bit). Die SAMA7-Chip-Familie basiert auf dem Cortex-A7. Auf asymmetrischen AArch32-Systemen lassen sich neuerdings auch 32-Bit-Tasks ausführen.
Die x86-Plattformentwickler haben verschiedene Intel-Treiber in eigene Unterverzeichnisse verschoben und umbenannt. Daneben gibt es einen neuen Plattformtreiber namens »meraki-mx100«, die WMI-Treiber von Asus arbeiten besser, und die Entwickler spendieren “Alder-Lake”-Support für Intels PMC-Treiber.
RISC-V unterstützt jetzt PC-bezogene Instruktionen in »kprobes« und erzwungenes IRQ-Threading. Außerdem wächst der Adressraum für Stack Randomization. Über die Kernel-Kommandozeile dürfen Nutzer der Architektur künftig die Parameter »hlt« und »nohlt« mit auf den Weg geben. Ebenfalls erwähnenswert sind die Möglichkeiten, riesige Hugepages über den Continuous Memory Allocator (CMA) zu allozieren oder Hugepages zu migrieren [19]. OpenRISC aktiviert derweil Ethernet auf Litex-FPGA-SoCs, weil Kernel 5.15 den LiteEth-Netzwerktreiber implementiert.
Bleibt noch Zeit für einen kurzen Blick in die Grafikabteilung. Insbesondere Intels i915-Treiber bringt laut Dave Airlie einige Änderungen mit, darunter ein Refactoring und API-Cleanups. Der Treiber wechselt nun zu TTM, um diskreten Speicher auf DG1- und DG2-GPUs zu aktivieren, und kommt zudem mit Intels “Jasper”- und “Elkhart-Lake”-Architekturen zurecht. Der AMDGPU-Treiber funktioniert jetzt für AMDs “Cyan Skillfish” genannte GPU, die Teil einer APU werden und zur Navi-10-Serie von AMD GPUs gehören soll. Der freie Nouveau-Treiber für Nvidia-Karten rüstet schließlich den eingebetteten DisplayPort-Treiber (eDP) mit Backlight-Fähigkeiten aus.
Für weitere Informationen zu den Neuerungen von Kernel 5.15 hilft ansonsten wie immer der Blick in das Repository von Linus Torvalds [20]. Zu haben ist der frischgebackene Kernel auch auf Kernel.org [21] oder Github [22]. (uba)
Infos
- Mitteilung zum Kernel 5.15-rc1: https://lkml.org/lkml/2021/9/12/310
- Umstrittener Patch: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3fe617ccafd6f5bb33c2391d6f4eeb41c1fd0151
- Kompromissvorschlag: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b339ec9c229aaf399296a120d7be0e34fbc355ca
- Release-Meldung zu Kernel 5.15: https://lkml.org/lkml/2021/10/31/203
- Kernel-News: Kristian Kißling, “Schöne runde Sache”, LM 11/2021, S. 18, https://www.lm-online.de/46757
- Mount-Optionen für NTFS-Kernelmodul: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/ntfs3.rst?h=v5.15
- RCU: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/RCU/whatisRCU.rst?id=HEAD
- Read-Copy-Update: Eva-Katharina Kunst, Jürgen Quade, “Kern-Technik”, LM 01/2018, S. 76, https://www.lm-online.de/40086
- Ext4-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/diff/Documentation/filesystems/ext4/orphan.rst?id=111c1aa8cad4a0069dfe98fc093507b5b2cdfda7
- XFS-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=90c90cda05aecf0f7c45f9f35384b31bba38455f
- »fs-verity«: https://www.kernel.org/doc/html/latest/filesystems/fsverity.html
- Idmappings: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/diff/Documentation/filesystems/idmappings.rst?id=67b03f93a30facabf105b8b8632e3b9b6ef9200a
- Ksmbd: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e24c567b7ecff1c8b6023a10d7f78256cef742c4
- Diskussion um AMD SME: https://lists.freedesktop.org/archives/amd-gfx/2021-October/069868.html
- Project Zero: https://googleprojectzero.blogspot.com/2021/10/how-simple-linux-kernel-memory.html
- BPF für den Scheduler: https://lkml.org/lkml/2021/9/16/1049
- Bio-Recycling: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3b629f8d6dc04d3af94429c18fe17239d6fbe2c3
- Asahi-Linux-Updates: https://asahilinux.org/2021/10/progress-report-september-2021/
- Hugepages-Support: https://wiki.debian.org/Hugepages
- Linus Torvalds’ Repository: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
- Kernel.org: https://www.kernel.org
- Linux auf Github: https://github.com/torvalds/linux






