Pünktlich zum runden 30. Geburtstag von Linux mahnt ein Core-Entwickler mehr Mitarbeit an. Kernel-Chef Linus Torvalds überredet Paragon indes erfolgreich, den NTFS-Treiber in den Mainline-Kernel zu pushen, und auf Apples M1-Chip läuft bereits ein Gnome-Desktop.
Ziemlich genau 30 Jahre ist es her, seit Linus Torvalds sein damals noch nicht Linux genanntes “Bastelprojekt” auf einer Mailingliste ankündigte [1]. Der Kernel-Security-Experte Kees Cook nutzte das Datum, um einen mahnenden Blogpost [2] an die von Linux profitierenden Unternehmen zu richten. Die liefern ihre Geräte oftmals mit veralteten Kernel-Versionen aus, um dann Patches für den aktuellen Kernel aufwendig zurück zu portieren. Anstatt dies zu tun, so Cook, sollten die Hunderte daran beteiligten Entwickler lieber die Sicherheit des aktuellen Linux-Kernel verbessern, indem sie die Code Reviews ausbauen, Bugfixes früher einbringen und ausführlich testen. Laut Cook fehlen dem Linux-Kernel-Team mindestens 100 Mitarbeiter. Er erhofft sich für die Zukunft des freien Betriebssystems mehr Talente aus jenen Firmen, die Linux tagtäglich einsetzen.
Auch Linus Torvalds wandte sich kürzlich höchstpersönlich an ein Unternehmen, allerdings aus einem anderen Grund. Paragon entwickelt seit Jahren an einem gut funktionierenden NTFS-Treiber für Linux. Der Kernel-Chef ermunterte das Unternehmen offenbar erfolgreich, diesen Treiber doch per Pull Request in den Mainline-Kernel zu hieven. Ihm genüge, dass der Treiber besser sei als der vorhandene NTFS-Treiber von 2001 und es mit Paragon zudem einen Maintainer gebe. Die Firma reagierte und wird wohl versuchen, das recht umfangreiche Patchset im Kernel 5.15 zu landen [3].
Datenablagen
Darrick Wong, ein Entwickler des Dateisystems XFS, schaute sich diesmal den Logging-Code an [4]. Er grub dabei aber so viele Bugs aus, dass er die Patches erstmal auf Eis legen möchte, um die Bugs zu beheben. Daneben überarbeiteten die XFS-Entwickler die Log Recovery und reduzierten die Zahl der Cache-Säuberungen beim Loggen. Die sogenannten Delay Ready Attributes sollen als Basis für Parent Pointers dienen. Letztere erleichtern es künftig, die Pfade von Dateien im Dateisystem über Inodes zu rekonstruieren.
Bei Ext4 erlaubt es der neue Systemaufruf »EXT4_IOC_CHECKPOINT«, Kontrollpunkte im Journal des Dateisystems zu setzen, dieses abzuschneiden, zu verwerfen oder mit Nullen zu überschreiben. Zu den für Anwender sichtbaren Änderungen an Btrfs gehören neue Sysfs-Exporte: Über »/sys/fs/btrfs/FSID/devinfo/DEVID/error_stats« gelingt unter anderem der Zugriff auf Device-Statistiken. Daneben gibt es einen neuen Sysfs-Schalter: Dieser begrenzt im Scrub-Prozess – in dessen Verlauf Btrfs sämtliche Checksummen von Daten und Metadaten-Blöcken verifiziert – den Datendurchsatz. Nicht zuletzt erwarten Btrfs-Nutzer Performance-Optimierungen.
Samsungs Flash-Dateisystem F2fs unterstützt neuerdings Kompression besser. Diese deckt nun auch »mmap«-Dateien ab, was insbesondere Android-Systemen zugutekommt. Anstelle eines Immutable Bits verwendet es für die Kompression ein F2fs-Flag. Die Mountoption »compress_cache« verbessert zufällige Lesevorgänge. Zugleich lassen sich Read-only-Partitionen mit aktivierter Kompression für Android kompakter abbilden.
Im Bereich der Netzwerkdateisysteme gibt es ebenfalls Bewegung: Während der Client für das Network File System (NFS) drei neue Sysfs-Schnittstellen im Gepäck hat, bringt der NFS-Daemon Tracepoints für Callbacks und das Anlegen und Abwickeln von Clients mit. Unter »/proc/fs/nfsd/clients/*/info« finden sich zudem Callback-Informationen.
Für CIFS haben die Entwickler die »fallocate«-Emulation verbessert, das Ceph-Projekt will blockierende Locks im Dateisystem vereinfachen (Abbildung 1). Eine weitere größere Änderung betrifft den Distributed Lock Manager (DLM). Ihn verwenden verteilte Dateisysteme wie OCFS2 oder GFS2, um ohne Karambolage auf geteilte Ressourcen zuzugreifen. Er arbeitet nun dank einer größeren Änderung auch dann weiter, wenn die Netzwerkverbindung abbricht oder sich Nodes neu verbinden. Zuvor verlor der DLM in diesem Fall seine Nachrichten.
Dem Sandkasten entwachsen
Weiter geht es zu den Netzwerk-Verbesserungen. Die betreffen unter anderem eBPF, den Code zur leichtgewichtigen Sandbox im Linux-Kernel. Die kommt häufig im Netzwerkbereich zum Einsatz, Kernel 5.14 ergänzt einen Type für Syscall-Programme und unterstützt die Libbpf, um für die im Kernel angesiedelten BPF-Loader Instruktionen und Bindings zu generieren. Dies sei ein Schritt hin zu signierten BPF-Programmen, heißt es in der Ankündigung. Weiterhin migriert die BPF-Infrastruktur nun bei Bedarf TCP Child Sockets von einem Listener zu einem anderen in derselben »REUSEPORT«-Gruppe. Die Funktion »xdp_redirect_map()« erhält Broadcast-Support. Zugleich hat sich bei eBPF auch organisatorisch einiges getan: Facebook, Google, Microsoft und Netflix hoben Anfang August 2021 zusammen mit dem Cloud-Native-Networking-Spezialisten Isovalent die eBPF Foundation [5] aus der Taufe, die die Sandbox nun unter den Fittichen der Linux Foundation promotet (Abbildung 2).
In den Netzwerk-Bereich fällt auch die Implementierung des RFC 8899 [6], das eine Path MTU Discovery über das Stream-Control-Transmission-Protokoll (SCTP) beschreibt. Zudem soll Linux in Zukunft den offenen Standard Compute Express Link (CXL) unterstützen [7], der die Performance in Rechenzentren voranbringen will. Er setzt auf PCI Express auf und soll einen schnelleren Datenaustausch zwischen der CPU und dem Arbeitsspeicher sowie den verbundenen Geräten erlauben. Im zugehörigen Konsortium sitzen zahlreiche IT-Schwergewichte [8].
Im Wireless-Bereich liefert der »ath11k«-Treiber jetzt Support für das WCN6855, ein PCI-basiertes Gerät. Zugleich haben die Entwickler WoWLAN-Unterstützung in den »wcn36xx«-Treiber eingebaut. Dabei handelt es sich um einen »mac80211«-Treiber für die »wcn3660«- und »wcn3680«-Chips auf einem Qualcomm SoC.
An der Schnittstelle
Der Thunderbolt-Code unterstützt ab Kernel 5.14 den in Intel Alder Lake integrierten USB-4-Controller. Die USB-4-Aufwach-Konfiguration orientiert sich im neuen Kernel an der Connection-Manager-Richtlinie für USB 4.
Der NVMe-Treiber ergänzt im aktuellen Entwicklungszyklus Code-Schnipsel zur Kompatibilität mit bestimmten AMD-GPUs. Die I2C-Entwickler arbeiten den »i801«-Treiber um und dokumentieren den Umgang mit Sysfs-Dateien für I2C. Im ACPI-Bereich bügelten Entwickler Implementierungsfehler des Platform Runtime Mechanism (PRM) aus und reparierten die Beleuchtungstaste des Dell Vostro 3350. Aufwachprozesse von Suspend-to-Idle sollen auf Intel-Plattformen nun in bestimmten Fällen besser funktionieren. Im Bereich der Eingabesysteme kommt Kernel 5.14 mit Renoir- und Cezanne-SoCs zurecht und unterstützt den Ambient-Light- und Human-Presence-Detection-Sensor für AMDs SFH-Treiber – zumindest in ersten Ansätzen.
Die »io_uring«-Entwickler verbessern [9] unter anderem die asynchrone Ein- und Ausgabemöglichkeiten weiter, indem sie an »poll_multi_queue« arbeiten, die Performance optimieren und den Code an einigen Stellen aufräumen. Im Scheduler-Bereich erlaubt die Kernel-Option »CONFIG_SCHED_CORE=y« SMT-Zwillingen neuerdings ein koordiniertes Scheduling. Das Feature sei vor allem bei Cloud-Computing-Plattformen gefragt. Es mache die Computing-Performance von SMT-Systemen mit unterschiedlichen Workloads vorhersagbarer, heißt es im Pull Request [10]. Dann gibt es auch wieder einen neuen System Call namens »openat2()«. Der bemerkt – anders als seine älteren Verwandten »open()« und »openat()« – ungewöhnliche »O_Flag«-Werte und gibt einen Fehler an den Userspace zurück.
Apfel mit Gnome
Auch die Entwickler des Plattform-Codes waren nicht untätig. Der »think-lmi«-Treiber erlaubt es, aus Linux heraus über das Sysfs-API die BIOS-Settings für Lenovo Thinkpads zu verändern. Das MS Surface lässt sich einfacher debuggen, auch Kamerasensoren von Intel-Geräten unterstützt der neue Kernel besser. Daneben stabilisieren die Entwickler den Umgang des Kernels mit FPUs der x86-Plattform, was laut Thomas Gleixner die Integration von XSTATE-abhängigen Features erleichtert.
Im ARM-Bereich sorgt noch immer Apples M1-Chip für Aufregung. Hatte Kernel 5.13 gerade noch einen ersten Support per Reverse Engineering aus dem Boden gestampft, gelang es der Entwicklerin Alyssa Rosenzweig bereits Ende August, ein Gnome darauf zu installieren und einen Tweet von ihrem M1-Blech abzusetzen [11]. Das ging verdammt schnell, auch wenn der Weg zu diesem Setup aktuell noch sehr experimentell wirkt.
Im ARM-Bereich versuchen die Linux-Entwickler zur Zeit, die Spezifikation für das ARM Firmware Framework für ARMv8-A (FFA) umzusetzen. Über die FAA-Schnittstellen sorgen beliebige Hypervisor dafür, dass eigentlich voneinander isolierte VMs und das normale System miteinander reden dürfen. Erster Code für das Framework steckt ebenfalls in Linux 5.14.
Zu den von Linux unterstützten Architekturen gehört auch RISC. Die Open-Risc-Entwickler einigten sich mit den Entwicklern der Litex-Hardware auf einen 32 Bit breiten CSR-Bus-Zugriff, was nun den Weg für Peripherie-Treiber frei macht. RISC-V unterstützt unter anderem transparente große Speicherseiten, generisches PCI-Ressourcen-Mapping, den »mem«-Kernel-Parameter sowie den Kernel Electric-Fence (KFENCE, [12]), der einige typische (sicherheitskritische) Bugs entdeckt (»heap out-of-bounds«, »use after free« und »invalid free«).
Das führt direkt zum Thema Security: In den Crypto-Updates von Herbert Xu stecken die in der NSA Suite B Cryptography definierten elliptischen Kurve P-384, HMAC SHA512 als standardmäßiger Deterministic Random Bit Generator (DRBG) sowie verschiedene Crypto-Treiber. Seccomp arbeitet neuerdings besser mit CI-Systemen zusammen.
Bleibt noch die Sound- und Grafikabteilung. Erstere erhält über einen neuen Framing-Access-Modus die Möglichkeit, Timestamps für Rawmidi-Material zu zeigen. Daneben gibt es im Sound-Bereich vor allem Kernel-interne Änderungen und Kompatibilitätsanpassungen, unter anderem für ARM-SoCs.
Im Grafikbereich warten Updates für Mediatek-DRM-Treiber. Die bringen HDMI-Support für den Mediatek SoC MT8167 sowie DPI-Dual-Edge-Support für den MT8183 SoC. Intels i915-Treiber unterstützt derweilen Translation Table Maps (TTM). Die helfen beim Memory Management für diskrete GPUs, stellen diesen Grafikspeicher bereit und informieren den Kernel und die Anwendungen, wenn die Puffer nicht mehr nötig sind. Der Treiber [13] aktiviert zugleich die diskrete Intel-Xe-GPU DG1, wenn auch noch nicht standardmäßig. Weiterhin zählt Maintainer Dave Airlie zwei weitere AMD-GPUs (Beige Goby und Yellow Carp) als unterstützt auf und weist für den »amdgpu«-Treiber auf Van-Gogh-APU-Updates hin sowie einen ersten SR-IOV-Support. Der letztgenannte ermöglicht, dass sich mehrere VMs eine PCI-Express-Hardware teilen. Der neue Kernel erschien am 29. August und lässt sich auf Kernel.org oder Github herunterladen. (uba)
Infos
- Linux-Ankündigung: https://www.reddit.com/r/linux/comments/pbdkh1/30_years_agoon_this_daythis_is_how_linux_started/
- Kees Cook über Linux-Security: https://security.googleblog.com/2021/08/linux-kernel-security-done-right.html
- Paragons Reaktion: https://lkml.org/lkml/2021/7/30/781
- XFS-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9f7b640f001f9781e0803fb60e7b3e7f2f1a1757
- eBPF Foundation: https://ebpf.io/charter/
- Path MTU Discovery via SCTP: https://datatracker.ietf.org/doc/html/rfc8899
- Compute Express Link: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0c66a95c7e014abc3489e69dd3972d9225027d49
- CXL-Konsortium: https://www.computeexpresslink.org
- »io_uring«-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c288d9cd710433e5991d58a0764c4d08a933b871
- SMT-Scheduling: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=54a728dc5e4feb0a9278ad62b19f34ad21ed0ee4
- Gnome auf dem M1: https://twitter.com/alyssarzg/status/1429579409594339332
- KFENCE für RISC-V: https://www.kernel.org/doc/html/latest/dev-tools/kfence.html
- Grafik-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e058a84bfddc42ba356a2316f2cf1141974625c9








