Linux 5.7 mit stabilem exFAT-Support und verbesserten Grafiktreibern

Linux renoviert unter anderem seine Dateisysteme: Endlich zieht Unterstützung für exFAT in den Kernel ein. XFS stellt derweil die Weichen für Online-Repair.

In Pocket speichern vorlesen Druckansicht 83 Kommentare lesen
Linux 5.7 unter anderem mit stabilem exFAT-Support

(Bild: Wikimedia Commons / CC BY 2.0)

Lesezeit: 8 Min.
Von
  • Oliver Müller
Inhaltsverzeichnis

Linus Torvalds hat vor ein paar Tagen die Version 5.7 des Linux-Kernels freigegeben. Eine der wichtigsten Neuerungen ist die endgültige Unterstützung des exFAT-Dateisystems im Kernel, die die "Übergangslösung" aus Linux 5.4 ablöst.

Weitere Neuerungen in den Dateisystemen sind Zstd-Support für F2F und erste Vorbereitungen für die baldige Unterstützung einer neuen "Online-Repair"-Funktion für XFS. Bei der Grafik reift die Unterstützung für Intels Tiger Lake und VMware bekommt 3D-Beschleunigung. Am gestrigen Sonntag folgten außerdem erste Nachbesserungen in Gestalt von Linux 5.7.1.

Lange Zeit hatte Linux das exFAT-Dateisystem nicht im Kernel unterstützt. Bei vielen Distributionen blieben Userspace-Treiber (per FUSE) außen vor, da das Damoklesschwert in Form von Patentklagen seitens Microsoft stets über dem exFAT-Support schwebte. Diese Sorge ist inzwischen gebannt, denn Microsoft gab seine mit exFAT verbundenen Patente im vorigen Jahr für Linux frei.

Daraufhin hielt mit Linux 5.4 ein erster Snapshot eines exFAT-Treibers Einzug in den Kernel. Basis hierfür war Code von Samsung, der zuvor schon in den Android-Smartphones und -Tablets des koreanischen Herstellers für den exFAT-Support sorgte. Allerdings basierte dieser Code noch auf einer älteren Implementierung mit erheblichen Qualitätsmängeln und landete daher nur im Staging-Bereich. Schon damals wurde allerdings bekannt, dass Samsung neben dieser angestaubten exFAT-Umsetzung eine deutlich ausgefeiltere Implementierung namens sdFAT in der Schublade hatte.

Bei der jetzt in 5.7 aufgenommenen exFAT-Unterstützung handelt es sich um eben dieses modernere "sdFAT" als aktuellen Stand der Samsung-Implementierung. Der – bereits in Android-Geräten praxiserprobte – Code erfuhr in den vergangenen Monaten in Zusammenarbeit mit der Kernel-Community nochmals eine intensive Überarbeitung.

Das Flash-Friendly File System (F2FS) unterstützt in 5.7 erstmals Zstd zur transparenten Online-Kompression. Die bisherige Standardkompression LZO bleibt enthalten, ist jedoch zukünftig optional. Als neuer Default-Kompressionsalgorithmus kommt nun das effizientere LZ4 zum Einsatz.

btrfs kann ebenfalls von Verbesserungen im neuen Kernel profitieren: Die Entwickler haben den Code aufgeräumt und überarbeitet. Außerdem bereitet das btrfs-Team aktuell Unterstützung von Zoned Devices vor. Damit soll das Dateisystem für die nächste Generation von Block-Devices fit gemacht werden. Leider ist das Projekt für 5.7 noch nicht fertig geworden und im Kernel bislang nicht nutzbar.

Auch beim Dateisystem XFS bewegt sich einiges: Der Code wurde aufgeräumt, einem Refactoring unterzogen und um diverse Bugs erleichtert.

Vordergründig gewinnt XFS in Linux 5.7 lediglich eine verbesserte Metadatenprüfung. Im Hintergrund arbeiten die Entwickler allerdings intensiv an "Online-Repair". Die neue Funktion soll ein beschädigtes Dateisystem reparieren können, während es gemountet ist. Bisher musste ein XFS-Dateisystem zu diesem Zweck ausgehängt sein.

Da der neue Code bereits wesentliche Weichen für den Reparaturmechanismus stellt, darf in einer der nächsten Kernel-Versionen mit dem Feature gerechnet werden.

Der Systemcall clone3() erlaubt im Unterschied zu vorherigen Kernel-Releases nun, Prozesse in einer anderen cgroup zu starten als deren Elternprozess. Zuvor konnten Prozesse erst nach dem Starten in eine andere cgroup umziehen, wofür globale Write-Locks angefordert werden mussten. Der geänderte clone3() kommt ohne einen solchen Lock aus, was einen großen Effizienzgewinn bedeutet.

Jetzt lassen sich Prozesse bereits beim Start ressourcenschonend der passenden cgroup zuordnen. Zudem kann ein Prozess in einer "frozen" cgroup gestartet werden und ist somit von Beginn an selbst im "frozen"-Zustand. Durch die "trickreiche" Implementierung von Threads auf Linux funktioniert dieses Feature nicht nur mit klassischen Prozessen, sondern auch mit Threads.

Ein denkbares Anwendungsszenario ist etwa ein Service-Manager, der neue Services gleich in die dedizierte cgroup startet. Ebenso können Thread-basierte Anwendungen ein geeignetes cgroup-Layout implementieren und Threads in den jeweiligen cgroups erzeugen.

Die Unterstützung für Intels integrierte Grafikeinheiten vom Typ Tiger Lake "Gen12" erachten die Entwickler mit dem neuen Kernel-Release als stabil. Das "experimental"-Flag wurde gestrichen.

Fortschritte gab es auch beim vmgfx-Treiber für virtuelle Maschinen unter VMware. Er bereitet den Boden für die 3D-Beschleunigung in virtuellen Maschinen und bringt Kernel-seitig nun alles mit, um OpenGL 4.x in VMs zu ermöglichen.

Beim bislang sehr x86-lastigen UEFI-Bootprotokoll tritt in 5.7 anstelle der x86-spezifischen Hacks generischer Code. Dieser ist einfacher zu pflegen und ermöglicht zudem Portierungen auf andere Architekturen. Darauf aufbauend begannen die Vorbereitungen für die EFI-Unterstützung auf RISC-V. Somit sollte es mit einem der nächsten Kernel-Releases möglich werden, auch auf RISC-V EFI-konform zu booten.

Weiterhin konnte die EFI-Unterstützung auf ARM weiter ausgebaut werden. Auf x86 glänzt der EFI-Code mit einem gemischten Modus. Dieser ermöglicht es (eine 64-Bit-fähige CPU vorausgesetzt), einen 64-Bit-Kernel aus der 32-Bit-Firmware zu booten.

Zu guter Letzt implementiert Linux 5.7 auch die UEFI-Spezifikation v2.8A.

Der neue Kernel unterstützt nun auch den Snapdragon 865 von Qualcomm; außerdem reifte im RISC-V-Code Unterstützung für Kendrytes Dual-Core K210.

Bei ARM64 punktet 5.7 mit Support für In-Kernel Pointer Authentication, einem Feature des ARM-Befehlssatzes ab Version 8.4. Bereits Linux 4.21 hatte die Pointer Authentication für ARM64 und AArch64 (ab ARMv8.3) eingeführt. Mit dem Sicherheitsfeature ist es möglich, Zeiger mit privaten Schlüsseln zu signieren und zu authentifizieren von Zeigern mit privaten Schlüsseln. Die Pointer Authentication war bislang jedoch auf Prozesse im Userspace begrenzt. Nun steht dieses Feature konform mit der ARMv8.4-Spezifikation auch im Kernel zur Verfügung.

Außerdem führt Linux 5.7 Unterstützung für die ARM Activity Monitor Unit (AMU) für AMRv8.4+ ein. Diese Hardware erlaubt Rückschlüsse auf die Performance anhand der Überwachung von CPU-Frequenz und anderen Hardware-Countern.

Als Randnotiz dürfte den einen oder anderen Kernel-Programmierer freuen, dass die alte, antiquierte 80-Zeichen-Regel in Linux 5.7 gefallen ist. Die besagte, dass Quelltextzeilen maximal 80 Zeichen lang sein sollten. Die Regel ist ein Relikt aus alten Terminalzeiten mit Displays von 80 Zeichen auf 25 Zeilen. Diese Zeilenlängenrestriktion ist von nun an nicht mehr verpflichtend, ist aber, wie es im Changelog zu Linux 5.7 formuliert wird, weiterhin zu bevorzugen ("preferred").

Linus Torvalds sieht die Richtlinie nun offenbar ebenfalls als überholt an.

(Bild: Kernel Mailing List / lkml.org)

Das Prüfen von Patches mittels checkpatch wird künftig per Standard keine Warnung bezüglich der Zeilenlänge mehr ausgeben. Ist hingegen der Schalter --strict gesetzt, prüft checkpatch die Zeilenlänge und gibt fortan eine Warnung bei Überschreitung von 100 Zeichen aus. Aber auch diese 100 Zeichen sind keine harte Grenze, sondern ein empfohlener Richtwert.

Nur rund eine Woche nach dem Release von Version 5.7 steht seit gestern auch der Kernel 5.7.1 zur Verfügung. Neben einigen Bugfixes fügt dieser in erster Linie den USB-Wifi-Stick von AirVasT der Liste der unterstützten Geräte hinzu. Weitere Details zu den Änderungen sind dem Changelog zu 5.7.1 zu entnehmen. (ovw)