Skip to content

Linux 7.3 repariert Btrfs-Dateisystem-IDs und grub2-Start

Eine Btrfs-Änderung in Linux 7.2-rc1 machte Dateisystem-IDs instabil und brach die Schlüsselableitung von OpenConnect. Der Fix berührt 10 Dateien.

Von Tech AI Wire Team

3 Min. Lesezeit

XLinkedIn
A terminal window on a Linux desktop showing btrfs filesystem show output, with a volume label, a UUID and three member devices.

Die Zahlen

Btrfs files changed in the merged pull
10
lines added, against 13 removed
96
kernel where the ID regression appeared
7.2-rc1

Linus Torvalds hat eine Reihe von Btrfs-Fixes in den Linux-7.3-Kernel aufgenommen. Zwei davon machen Änderungen rückgängig, die laufende Rechner beschädigt haben. Eine machte die Kennung instabil, die Btrfs über sich selbst meldet. Die andere hinderte manche Rechner daran, ihren Start zu beenden.

Btrfs ist ein Dateisystem, das fest in Linux eingebaut ist. Es ist die Standardwahl bei Fedora und bei openSUSE. Eine Regression darin erreicht also gewöhnliche Desktops und nicht nur Server. Der Pull Request kam von Btrfs-Maintainer David Sterba und trägt das Tag for-7.3-rc3-tag. Phoronix berichtet, dass die Fixes im Release Candidate 7.3-rc4 landen.

Warum die Dateisystem-ID nicht mehr stabil war

Jedes eingehängte Dateisystem meldet eine FSID, kurz für Dateisystem-Kennung. Programme lesen sie, um ein Dateisystem von einem anderen zu unterscheiden. Sterbas Pull Request nennt das erste Problem "filesystem id stability on default configurations".

Phoronix berichtet, dass die Regression in Linux 7.2-rc1 ankam. Von da an konnte sich die ID ändern, die Btrfs bei einer Standardeinrichtung meldete. Software, die den früheren Wert gespeichert hatte, las danach einen anderen.

Der Pull Request benennt das Opfer direkt: "openconnect key derivation". OpenConnect ist ein quelloffener Client für Firmen-VPNs, und NetworkManager liefert die Unterstützung dafür mit. Phoronix führt den Ausfall auf diese VPN-Unterstützung zurück. Wenn ein Schlüssel zum Teil aus einem Wert abgeleitet wird, der sich plötzlich ändert, passt der Schlüssel nicht mehr.

Warum manche Rechner nicht mehr starteten

Der zweite Fix stellt die "/dev/root detection for initramfs-less boot systems with grub2" wieder her, wie Sterba es formuliert.

Eine initramfs ist ein kleines, vorübergehendes Dateisystem. Der Kernel lädt es früh im Start und findet damit das echte Wurzeldateisystem. Die meisten Distributionen liefern eine mit. Manche Aufbauten verzichten darauf, um schneller zu starten oder die Konfiguration schlank zu halten.

Ohne initramfs muss der Kernel selbst herausfinden, welches Gerät die Wurzel trägt. Phoronix berichtet, dass diese Erkennung bei Btrfs-Wurzeldateisystemen unter GRUB2 fehlschlug. Ein Rechner, der sein Wurzeldateisystem nicht bestimmen kann, beendet den Start nicht.

Was sonst noch im Pull steckt

Der Merge ändert 10 Dateien, fügt 96 Zeilen hinzu und entfernt 13. Sterbas Nachricht beschreibt den Rest als gewöhnliche Fixes. Sie stehen unten, jeweils mit einer einfachen Notiz zum betroffenen Bereich.

Im Pull genannter BereichWas dieser Teil von Btrfs tut
Komprimierte Inline-ExtentsSpeichert sehr kleine Dateien komprimiert in den Metadaten
Zone-Aktivierung im Zoned ModeUnterstützt Laufwerke, die in festen Zonen beschrieben werden
Prüfung des Chunk-Item-PlatzesPrüft die Einträge, die Speicher-Chunks abbilden
Entfernen von Verity-ItemsRäumt fs-verity-Daten auf, die Dateiinhalte prüfen
Neuaufbau des Free-Space-TreesBehandelt Fehler beim Neuaufbau der Freiraum-Karte
Reflink und Hole PunchingKopiert Blöcke per Verweis und gibt Bereiche in Dateien frei
Iteration über Block-GruppenSichert den Durchlauf über Gruppen belegter Blöcke ab
FehlermeldungenKorrigiert Formulierungen in der Kernel-Log-Ausgabe

Zu den geänderten Dateien gehören super.c, volumes.c, disk-io.c, inode.c, tree-checker.c, zoned.c und verity.c.

Was das für Entwickler bedeutet

Behandeln Sie eine FSID als Wert, der sich ändern kann. Wenn Ihr Code eine speichert und erwartet, dass sie ein Kernel-Update übersteht, ist diese Annahme gerade bei VPN-Nutzern im Produktivbetrieb gescheitert. Lesen Sie die Kennung frisch aus. Halten Sie einen Weg bereit für den Fall, dass sie von der gespeicherten abweicht.

Wenn Sie Rechner mit Btrfs-Wurzel und ohne initramfs unter GRUB2 betreuen, spielen Sie Linux 7.2 dort nicht aus. Warten Sie auf einen 7.3-Kernel, der diesen Pull enthält, oder behalten Sie eine initramfs als Rückfallebene. Ubuntu 26.10 liefert einen Linux-7.3-Vorabkernel aus. Prüfen Sie daher, welchen Release Candidate Ihr Abbild enthält, bevor Sie ihm vertrauen.

Im ersten Fehler steckt eine größere Lehre. Jeder Wert, den der User Space lesen kann, ist eine Schnittstelle, auch wenn kein Dokument das sagt. Eine Kernel-Änderung, die einen solchen Wert verschiebt, beschädigt Software, an deren Test niemand gedacht hat.

Quellen

  1. Linux 7.3-rc4 To Address Two Unfortunate Bugs With Btrfs - Phoronix
  2. Merge tag 'for-7.3-rc3-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux - GitHub

Ähnliche Artikel