24.4Manuelle GRUB-Installation und Erste Hilfe
Normalerweise wird GRUB 2 während der Installation Ihrer Linux-Distribution korrekt eingerichtet. In der Folge werden Sie zwar vielleicht Änderungen an der GRUB-Konfiguration bzw. grub.cfg durchführen, die GRUB-Installation als solche müssen Sie aber nicht mehr anrühren.
Die folgenden Abschnitte für BIOS- und EFI-PCs sind nur dann relevant, wenn Sie aus irgendeinem Grund eine manuelle Installation von GRUB durchführen möchten oder wenn Sie eine defekte GRUB-Installation reparieren müssen – z.B. weil ein anderes Betriebssystem den Inhalt des MBR überschrieben hat.
BIOS-PCs
Das Script grub-install, das unter Fedora sowie openSUSE grub2-install heißt, installiert den Bootloader in die ersten Sektoren der angegebenen Festplatte bzw. SSD, also in den MBR sowie in weitere Sektoren, die sich vor dem Beginn der ersten Partition befinden. Als einzigen Parameter übergeben Sie in der Regel den Device-Namen des Datenträgers. Dabei ist sowohl die Linux- als auch die GRUB-Schreibweise zulässig, also /dev/sda oder (hd0).
Eine Installation in den Startsektor einer Partition ist theoretisch möglich (also z.B. grub-install /dev/sda3 bzw. (hd0,3)), wird aber anders als in GRUB 0.97 nicht mehr empfohlen: Der Platz zum Einbetten des GRUB-Codes ist zu klein, und die deswegen erforderliche Verwendung von Link-Listen mit Querverweisen auf woanders befindliche Datenblöcke gilt als instabil. Wenn diese Argumente Sie nicht überzeugen, können Sie die Installation mit der Option --force erzwingen.
Grundsätzlich unterstützt Linux auch auf BIOS-Rechnern die Installation auf eine Festplatte oder SSD mit einer GUID Partition Table (GPT). Allerdings empfiehlt das GRUB-Handbuch in diesem Sonderfall, für die GRUB-Installation eine eigene Partition in der Größe von 1 MByte mit dem Flag bios_grub vorzusehen. Diese Partition ist nur für die Installation eines BIOS-kompatiblen Bootloaders gedacht. Diese bios_grub-Partition braucht nicht formatiert zu werden. Wenn Sie die Partition manuell einrichten, setzen Sie mit parted das Flag bios_grub, wobei Sie n durch die gewünschte Partitionsnummer ersetzen:
Vorsicht
Markieren Sie mit dem bios_grub-Flag keine Partition, die Daten enthält. Bei der GRUB-Installation wird der Beginn der Partition überschrieben. Ein eventuell auf der Partition befindliches Dateisystem wird dadurch vollständig zerstört!
Wenn GRUB bei der Installation die Existenz einer bios_grub-Partition feststellt, installiert es den Beginn der GRUB-Codes wie üblich in den MBR der Festplatte, den restlichen GRUB-Code aber in die gekennzeichnete bios_grub-Partition. Diese Vorgehensweise ist bei GRUB-Installationen auf Festplatten mit GPT zwar nicht zwingend erforderlich, gilt aber als wesentlich robuster, vor allem, wenn auch andere Betriebssysteme (Windows) auf dem Rechner installiert werden.
Beachten Sie aber, dass es auch einen Nachteil gibt: Wenn eine derartige Partition existiert, ist es unmöglich, mehrere GRUB-2-Installationen parallel durchzuführen, weil bei jeder neuerlichen GRUB-Installation der Inhalt der bios_grub-Partition überschrieben wird. Weitere Informationen zum Thema GRUB 2 und GPT können Sie hier nachlesen:
http://www.gnu.org/software/grub/manual/html_node/BIOS-installation.html
http://www.wensley.org.uk/gpt
Wenn die GRUB-Installation fehlgeschlagen ist oder durch ein anderes Betriebssystem überschrieben wurde, müssen Sie GRUB von einer Live-CD mit aktuellen GRUB-2-Tools neu installieren. Nach dem Systemstart wechseln Sie in den root-Modus (sudo -s bei Ubuntu), binden die Systempartition und die aktiven /dev-, /proc- und /sys-Verzeichnisse in das Dateisystem ein und führen dann chroot aus. Gegebenenfalls binden Sie nun auch die Boot-Partition in das neue root-Dateisystem ein.
Nun aktualisieren Sie die GRUB-Konfiguration und schreiben mit grub[2]-install GRUB an den gewünschten Ort, zumeist in den MBR der ersten Festplatte. Wie üblich müssen Sie in den folgenden Kommandos /dev/sdan durch Ihre eigenen Device-Namen ersetzen!
Manuelle Installation und Erste Hilfe für EFI-PCs
Eine manuelle Installation von GRUB 2 auf einem EFI-Rechner ist denkbar einfach. Sie müssen an grub-install keinerlei Parameter übergeben:
Durch dieses Kommando wird das Verzeichnis /boot/efi/EFI/distributionsname erzeugt. In dieses Verzeichnis wird eine neue Boot-Datei mit der Endung .efi geschrieben, die den GRUB-Code enthält. Außerdem wird die .efi-Datei in die Liste der EFI-Boot-Einträge aufgenommen und dort an den ersten Platz gestellt. grub-install greift dazu auf das Kommando efibootmgr zurück, das ich Ihnen im übernächsten Abschnitt näher vorstelle.
Damit grub-install erfolgreich ausgeführt werden kann, müssen einige Voraussetzungen erfüllt sein:
-
Die GRUB-Konfiguration in der Datei /boot/grub[2]/grub.cfg muss vorbereitet sein.
-
Die EFI-Partition muss unter dem Pfad /boot/efi in den Verzeichnisbaum eingebunden sein.
-
Das Kommando efibootmgr aus dem gleichnamigen Paket muss installiert sein.
-
Das Kernelmodul efivars muss geladen sein. modprobe efivars gelingt allerdings nur, wenn die Distribution im EFI-Modus gestartet wurde, nicht im BIOS-Modus. Deswegen ist es ohne ein EFI-boot-fähiges Live-System schwierig, eine zuerst im BIOS-Modus installierte Linux-Distribution auf EFI umzustellen.
Im Prinzip erfolgt die GRUB-Reparatur für ein EFI-System ganz ähnlich wie bei einem BIOS-System. Entscheidend ist aber, dass Sie das Live-System im EFI-Modus starten, nicht im BIOS-Modus.
Anschließend wechseln Sie in den root-Modus, binden die Systempartition und die aktiven /dev-, /proc- und /sys-Verzeichnisse in das Dateisystem ein und führen dann chroot aus. Gegebenenfalls binden Sie nun auch die Boot-Partition in das neue root-Dateisystem ein. Nun aktualisieren Sie die GRUB-Konfiguration und schreiben sie mit grub-install in die EFI-Partition. Vergessen Sie nicht, in den folgenden Kommandos /dev/sdan durch Ihre eigenen Device-Namen zu ersetzen!
GRUB-Kommandos zum Linux-Start manuell eingeben
Wenn Sie zwar GRUB starten können, aber nach der Auswahl des Linux-Menüeintrags der Linux-Start scheitert, können Sie innerhalb des GRUB-Menüs mit (C) in den interaktiven Modus wechseln und dann die folgenden Kommandos ausführen:
Statt (hd0,1) und /dev/sda1 geben Sie den Namen Ihrer Linux-Systempartition an. Die Dateien /vmlinuz und /initrd.img verweisen bei den meisten Distributionen auf die aktuellste Kernel- und Initrd-Datei im Verzeichnis /boot. Sollte das bei Ihrer Distribution nicht der Fall sein, müssen Sie den Ort der Kernel- und der Initrd-Datei exakt angeben. GRUB unterstützt Sie bei der Eingabe mit der Eingabevervollständigung durch (ê).
EFI-Boot-Einträge und -Einstellungen ändern (efibootmgr)
Woher weiß EFI eigentlich, welche Betriebssysteme installiert sind bzw. welche Boot-Einträge es anzeigen soll? Bei EFI-Mainboards werden diese Informationen in einem nichtflüchtigen Speicher (NVRAM) festgehalten. Jedes Mal, wenn ein neues Betriebssystem installiert wird, wird nach dem Einrichten der *.efi-Datei in der EFI-Partition ein entsprechender Eintrag im NVRAM gespeichert.
Unter Linux können Sie die so gespeicherten EFI-Daten mit dem Kommando efibootmgr auslesen oder verändern. Das Kommando setzt voraus, dass das Kernelmodul efivars geladen ist. Sollte das nicht der Fall sein, führen Sie modprobe efivars aus. Das gelingt nur, wenn Linux im EFI-Modus gebootet wurde. Verwenden Sie für Reparaturarbeiten gegebenenfalls ein Linux-Live-System, das sich im EFI-Modus starten lässt!
Wenn efibootmgr ohne weitere Optionen ausgeführt wird, listet es die EFI-Boot-Einträge sowie einige weitere Parameter des EFI-Bootloaders auf. Das folgende Ergebnis bedeutet, dass auf dem Rechner Ubuntu, Fedora und Windows im EFI-Modus installiert sind. Bei nächsten Neustart wird nach einer Wartezeit von einer Sekunde automatisch Ubuntu gestartet (BootCurrent). Während dieser Wartezeit kann mit einer mainboard-spezifischen Tastenkombination (bei meinem Testrechner: (F8)) das EFI-Menü angezeigt werden.
Wenn Sie möchten, dass beim nächsten Neustart einmalig Fedora gestartet werden soll, legen Sie dessen Boot-Eintrag mit -n fest:
Soll die Boot-Reihenfolge hingegen bleibend geändert werden, geben Sie den gewünschten Eintrag mit der Option -o an:
Das folgende Kommando erzeugt einen neuen EFI-Boot-Eintrag. Die Pfadangabe ist relativ zur EFI-Partition (also /boot/efi), und als Verzeichnistrenner muss \ verwendet werden. Die Verdoppelung der \-Zeichen ist erforderlich, weil die Shell ein einfaches \-Zeichen als Kennzeichnung von Sonderzeichen interpretiert. Mit der Option -L geben Sie den Namen an, der im EFI-Menü angezeigt werden soll.
Natürlich können Sie Boot-Einträge auch wieder entfernen. Dazu geben Sie mit -b die Nummer des Eintrags an:
Weitere Optionen des Kommandos efibootmgr sind in dessen man-Seite dokumentiert.