Wie findet grub2 seine Konfigurationsdatei im EFI-Boot?

8

Es gibt Unmengen von grub2 / EFI-Threads im Netz, aber ich fand es schwierig, eine Antwort auf die obige Frage zu finden. Wir haben erfahren, dass in grub2 die Konfigurationsdatei /boot/grub/grub.cfg ist. Bei Startproblemen wird grub2 möglicherweise ohne Fehlermeldung in einer Eingabeaufforderung (auch als Notfall-Shell bezeichnet) angezeigt. Bevor Sie also Probleme lösen können, sollten Sie wissen, wie genau grub2 versucht, seine Konfigurationsdatei zu finden.

Uwe Geuder
quelle

Antworten:

7

Das erste, was zu verstehen ist, dass es keinen festen Weg gibt. grub2 kann während der Installation anders konfiguriert werden und der Name grub.cfg ist keineswegs fest codiert. Die zweite Erkenntnis ist, dass es keine einzige Konfigurationsdatei gibt, z. B. verwendet mein Ubuntu-System zum Zeitpunkt des Schreibens zwei verschiedene Dateien nacheinander, die beide tatsächlich den Namen grub.cfg tragen.

Standardmäßig macht grub2 beim Starten zwei wesentliche Dinge:

  1. Setzen Sie die Präfixvariable auf einen Wert, der während der Installation von grub2 integriert wurde
  2. Fahren Sie mit der Konfigurationsdatei $ prefix / grub.cfg fort, falls vorhanden

(Weitere Informationen finden Sie unter http://www.gnu.org/software/grub/manual/grub.html#GRUB-only-offers-a-rescue-shell )

Die Bedingung "Wenn es existiert" ist die böse: Wenn die Datei nicht existiert (z. B. weil das Präfix $ nicht auf die richtige Stelle zeigt), wird keine Fehlermeldung angezeigt, was versucht wurde, und Sie landen einfach in der Eingabeaufforderung .

Wenn Sie in der Notfall-Shell landen, müssen Sie zunächst den Wert der Präfixvariablen (mit dem Befehl set) und den Inhalt dieses Verzeichnisses (mit den Befehlen ls und cat) überprüfen.

(Das Standardverhalten könnte durch eine integrierte Konfigurationsdatei überschrieben werden, aber ich glaube nicht, dass ich das in der Praxis verwendet habe.)

Ubuntu setzt das Präfix an derselben Stelle, an der sich das für den sicheren Start verwendete grubx64.efi und das shimx64.efi befinden. Die erste Konfigurationsdatei grub.cfg wird also aus demselben Verzeichnis geladen, in dem sich diese EFI-Binärdateien befinden. Aus Linux-Sicht lautet der Pfad / boot / efi / EFI / ubuntu und aus grub2-Sicht (hd0, gpt1) / efi / ubuntu (die Laufwerks- und Partitionsnummern können variieren, je nachdem, wo sich Ihr ESP befindet, dh die EFI-Systempartition, Dateinamen in grub2 scheint die Groß- und Kleinschreibung nicht zu berücksichtigen, daher wird der von Linux gezeigte EFI von grub2) als efi angezeigt.

Die erste Datei grub.cfg enthält nur 3 Anweisungen:

  1. Suchen Sie die Partition, die das Root-Dateisystem enthält, nach UUID (in Systemen, die ein separates Boot-Dateisystem verwenden, suchen Sie stattdessen das Boot-Dateisystem).
  2. Setzen Sie das Präfix auf einen neuen Wert von $ root / boot / grub (unter Verwendung des im vorherigen Schritt ermittelten $ root-Werts sollte dies für Systeme mit einer separaten Boot-Partition $ root / grub sein).
  3. Führen Sie die Konfigurationsdatei vom Speicherort $ prefix / grub.cfg aus

Letzteres ist der Linux-Speicherort /boot/grub/grub.cfg, der uns normalerweise mitgeteilt wird.

Uwe Geuder
quelle
Es sind ziemlich gute Informationen, aber warum machst du all diesen Jazz? warum nicht einfach deinstallieren?
Mikeserv