Partitionsloses Btrfs bootet plötzlich zur GRUB-Rettung

Partitionsloses Btrfs bootet plötzlich zur GRUB-Rettung

Das Problem

Ich habe eine Maschine, die Arch Linux von einem Btrfs RAID10-Volume mit acht Platten bootet. Vor kurzem habe ich neugestartet und bin bei dieser GRUB-Rettungsaufforderung gelandet:

Willkommen bei GRUB! Fehler: Kein solches Gerät vorhanden: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. Fehler: Unbekanntes Dateisystem. Rettungsmodus wird gestartet... grub rescue> ls (hd0) (hd1) (hd2) (hd3) (hd4) (hd5) grub rescue> ls (hd5) (hd5): Dateisystem ist unbekannt. grub rescue> ls (hd4) (hd4): Dateisystem ist unbekannt. grub rescue> insmod btrfs grub rescue> ls (hd0) (hd0): Dateisystem ist unbekannt. grub rescue>

pacman -SyuIch bin mir nicht sicher, was genau dies ausgelöst hat. Seit dem letzten Start habe ich mindestens zweimal Updates () installiert und möglicherweise andere Änderungen am System vorgenommen, einschließlich der Neuinstallation von GRUB.Ich kann das System starten, wenn ich eine dedizierte Startdiskette hinzufüge.

Die Theorie

Während ich mit einem hilfreichen Mitglied des #archlinux IRC-Kanals Probleme behebte, stieß ich aufdieser Hinweis im Arch-Wiki:

Partitionsoffset

Das Offset-Problem kann auftreten, wenn Sie versuchen, core.img in eine partitionierte Festplatte einzubetten. Das bedeutet, dass es in Ordnung ist, grubs core.img direkt in einen Btrfs-Pool auf einer partitionslosen Festplatte (z. B. /dev/sdX) einzubetten. GRUB kann Btrfs-Partitionen booten, das Modul kann jedoch größer sein als andere Dateisysteme. Und die von grub-install erstellte core.img-Datei passt möglicherweise nicht in die ersten 63 Sektoren (31,5 KiB) des Laufwerks zwischen dem MBR und der ersten Partition. Aktuelle Partitionierungstools wie fdisk und gdisk vermeiden dieses Problem, indem sie die erste Partition um etwa 1 MiB oder 2 MiB verschieben.

Dies scheint zu bedeuten, dass es Probleme bei der Installation von GRUB auf partitioniertenUndpartitionslose Festplatten, was durch neuere Partitionierungstools (derzeit) dadurch abgemildert wird, dass am Anfang der Festplatte zusätzlicher Platz gelassen wird.

Die GRUB-Wiki-Seite ist direkter:

Auf einer Partition oder einer partitionslosen Festplatte installieren

Warnung:RODENrät dringend davon abInstallation in einen Partitions-Bootsektor oder eine partitionslose Festplatte wie GRUB Legacy oder Syslinux. Dieses Setup ist anfällig für Störungen, insbesondere bei Updates, und istnicht unterstütztvon den Arch-Entwicklern.

Na ja, Mist.

Für den Wert, den es wert ist, grub-install -vschließt es diese Zeile in seine Ausgabe ein:

grub-install: info: the total module size is 0xa07c.

Das sind etwa 41 KiB und damit deutlich mehr als die oben genannte Grenze von 31,5 KiB, aber ich kenne GRUB nicht gut genug, um sicher zu sein, dass dies die Ursache meiner Probleme ist.

Die Fragen

  1. Wenn dasIstdas Problem, wie kann ich es beweisen – und warum tritt grub-installdann kein lautes Scheitern auf?

  2. Wie werden bootfähige Btrfs-Festplatten in Zukunft richtig formatiert? MBR? GPT? – Eine dedizierte Boot-Festplatte ist verlockend, aber ich möchte lieber auf jedem Gerät im Volume einen redundanten Bootloader haben.

  3. Gibt es eine bessere Möglichkeit, jede Festplatte in eine Partitionstabelle zu migrieren, als sie btrfs replaceeinzeln zu löschen und neu auszuführen?

Antwort1

Früher wurden beim Erstellen einer MBR-Partitionstabelle mit beispielsweise fdisk standardmäßig die ersten 63 Sektoren unberührt gelassen. Dort konnten GRUB und andere Bootloader installiert werden.

Schneller Vorlauf in die heutige Zeit: Das gleiche Tool (fdisk) lässt mehr ungenutzten Speicherplatz übrig; genug, damit GRUB2 seine Stufe 1 mit BTRFS-Unterstützung installieren kann. Ich glaube, der Offset beträgt standardmäßig etwa 1 MB; was auch immer das in Sektoren bedeutet.

Ich weiß nicht, warum grub-installes nicht fehlschlägt, aber ich nehme an, dass die Größe des Bootsektors nicht überprüft wird. Und wie könnte es das ohne Partitionen?

Ich sehe kein Problem darin, redundante Bootloader zu haben. Sie müssen das manuell verwalten, aber GRUB2s Stage1 ändert sich nicht oft. Aber das bedeutet, dass Sie Partitionen benötigen.

Ich kenne kein Tool, mit dem man die Festplatte migrieren und eine Partitionstabelle hinzufügen kann. Das Problem ist, dass das Dateisystem an Sektoren auf der Festplatte gebunden ist und das Hinzufügen einer Partitionstabelle diese Sektoren ändert. Wenn Ihre BTRFS-Dateisysteme auf LVM wären, könnten Sie die Dinge tatsächlich verschieben, da das Dateisystem an „virtuelle Sektoren“ gebunden wäre. Ich sage nicht, dass Sie das tun sollten, sondern zeige nur, wo das Problem liegt.

verwandte Informationen