Grub-Reparaturen

Grub 2: So optimieren Sie den Linux-Bootmanager

13.08.2015 von Thorsten Eggeling
Der Bootloader Grub 2 sorgt für den Start von Linux und anderen Systemen. Wie Sie Grub 2 anpassen und bei Problemen reparieren, lesen Sie in diesem Artikel.

Der Grand Unified Bootloader 2 ist bei fast allen Linux-Distributionen Standard. Der Bootloader ist das erste Programm, das ein PC nach dem Einschalten ausführt. Er ermöglicht über ein Menü die Wahl zwischen mehreren Betriebssystemen. Ist nur Linux installiert, lädt er den Kernel, der dann das Betriebssystem initialisiert. Bei einer Multiboot-Konfiguration leitet Grub die Anforderung beispielsweise an den Windows-Bootloader weiter.

Grub 2 muss mit einer Vielzahl unterschiedlicher Konfigurationen zurechtkommen. Aktuelle PCs booten standardmäßig von einer Partition im GPT-Format und verwenden Uefi-Firmware. Bei älteren PCs gibt es ein Bios und MBR-Partitionen. Linux kann auf Partitionen mit den Dateisystemen Ext2 bis Ext4 oder BTRFS installiert sein. Und dann gilt es auch noch, Soft- und Hardware-Raid und LVM zu berücksichtigen.

Wie Sie mögliche Fehler beheben und Grub 2 individuell anpassen, erfahren Sie in diesem Artikel. Wir beziehen uns auf Ubuntu 15.04. Die Anleitungen funktionieren genau so oder ganz ähnlich auch bei anderen Distributionen.

1. So funktioniert Grub 2

Super Grub 2 Disk sucht nach Installationen auf der Festplatte und zeigt sie in einem Menü an. Der Linux-Start funktioniert auch bei defekter Grub-Umgebung.

Bei herkömmlichem Bios werden bei der Linux-Installation 512 Bytes des Grub-2-Bootloaders („boot.img“) in den MBR (Master Boot Record) der ersten Festplatte geschrieben. Damit findet der Bootloader den ersten Sektor der Datei „/boot/grub/core.img“ und führt den enthaltenen Code aus. Dieser lädt Module, die für den Zugriff auf das Dateisystem nötig sind, und zeigt das Bootmenü an.

Ist Linux im Uefi-Modus installiert, liegt der Bootloader in der EFI-Partition, die in das Dateisystem unter „/boot/efi“ eingebunden ist. Für jedes System gibt es ein eigenes Verzeichnis – etwa „/boot/efi/EFI/ubuntu“. Die Bootloader-Dateien „grubx64.efi. shimx64.efi“ und „MokManager.efi“ sind in einer Secure-Boot-Umgebung nötig. „grub.cfg“ enthält einen Verweis auf die Konfigurationsdatei „/boot/grub/grub.cfg“, die Definitionen für das Bootmenü enthält.

Die Konfiguration von Grub 2 erfolgt automatisch über die Scripts unter „/etc/grub.d“. Das wichtigste Script „10_linux“ sucht unter „/boot“ nach Linux-Kerneln („vmlinuz-*“) und Ramdisk-Dateien („initrd.img-*“) und erstellt die Einträge für das Bootmenü. „30_os-prober“ ist für die Suche nach Betriebssystemen wie Mac-OS und Windows zuständig. „30_uefi_firmware“ bindet Dateien von der EFI-Partition ins Menü ein. Die Scripts werden bei jedem Upgrade auf einen neuen Kernel automatisch ausgeführt.


Standards setzen: Variablen in der Datei „/etc/default/grub“ steuern das Verhalten von Grub 2. Sie können etwa einen höheren Wert hinter „GRUB_TIMEOUT=“ eintragen, um die Wartezeit zu verlängern, bevor das Standardsystem bootet. Die Angaben hinter „GRUB_CMDLINE_LINUX_DEFAULT“ werden als Kernel-Parameter an den Standardeintrag angehängt. Bei Ubuntu steht hier „quiet splash“. Wenn Sie beide Parameter entfernen, sehen Sie beim Booten zur Diagnose von Fehlern die Textausgaben des Systems auf dem Bildschirm.

Nach Änderungen aktualisieren Sie die Konfiguration mit diesem Terminal-Befehl:

sudo update-grub

Das Script führt der Reihe nach alle Scripts in „/etc/grub.d“ aus, ermittelt dabei alle Betriebssysteme und erstellt die Datei „/boot/grub/grub.cfg“. Dabei werden auch Systeme berücksichtigt, die Sie auf einem USB-Laufwerk eingerichtet haben. Wenn Sie das nicht wünschen, entfernen Sie die USB-Datenträger vorher.

2. Grub 2 reparieren

Wenn Grub 2 Fehler meldet, sich das System aber noch booten lässt, installieren Sie Grub 2 neu. Bei einem Bios-System verwenden Sie die folgenden Befehlszeilen:

sudo grub-install /dev/sdx sudo update-grub

Statt „x“ tragen Sie die Bezeichnung für die Bootfestplatte ein. Bei nur einer Festplatte verwenden Sie „sda“. Ist beispielsweise Linux auf „/dev/sdb“ und Windows auf „/dev/sda“ installiert, können Sie auch die Linux-Festplatte als Ziel angeben. Setzen Sie im Bios in der Liste der Bootgeräte die Linux-Festplatte an die erste Stelle. Über das Grub-Bootmenü starten Sie dann Linux oder Windows. Der Vorteil: Wenn Sie Windows neu installieren, bleibt der Grub-Bootloader auf der Linux-Festplatte erhalten.

Rettungssystem für Grub 2: Wenn der Rechner nicht mehr startet, etwa weil der Bootloader von einer Windows-Installation überschrieben wurde, verwenden Sie Super Grub 2 Disk. Laden Sie sich die ISO-Datei herunter, und schreiben Sie das Image auf einen USB-Stick:

sudo dd if=Dateiname.iso of=/dev/sdx

"Dateiname" ersetzten Sie mit dem tatsächlichen Namen der heruntergelandenen Datei und „x“ ersetzen Sie durch die Gerätekennung des Sticks. Alle darauf befindlichen Dateien gehen verloren. Booten Sie dann den PC vom USB-Stick, und gehen Sie im Menü auf „Detect and show boot methods“. Wählen Sie das gewünschte System zum Start aus. Im installierten System reparieren Sie dann Grub 2 und die EFI-Dateien:

sudo grub-install

Ein Ziel-Laufwerk geben Sie nicht an. Das Script findet das Verzeichnis „/boot/efi“ automatisch.

Live-DVD verwenden: Wie Sie den PC im Notfall von einer Linux-Installations-DVD booten, ist in diesem Artikel erklärt. Um Grub neu zu installieren, binden Sie die Dateisysteme mit folgenden Zeilen ein:

sudo mount -o bind /dev /System/dev sudo mount -o bind /sys /System/sys sudo mount -t proc /proc /System/proc

„System“ ersetzen Sie durch den Einbindepunkt des installierten Ubuntu unter „/media/ubuntu/“. Bei einem Uefi-System mounten Sie zusätzlich die EFI-Partition mit

sudo mount /dev/sdxy /System/boot/efi

Ersetzen Sie „xy“ durch den Pfad zur EFI-Partition. Wenn Sie diesen nicht kennen, verwenden Sie sudo parted -l. Das Tool zeigt die Liste aller Partitionen. Führen Sie die folgenden vier Befehlszeilen aus:

sudo chroot /System grub-install /dev/sdx update-grub exit

„System“ steht wieder für den Einbindepunkt der Ubuntu-Partition, für „x“ setzen Sie den Pfad zum Boot-Laufwerk ein. Bei einem Uefi-System lassen Sie „/dev/sdx“ weg.

Rescatux zeigt einen einfachen Script-Starter für mehrere spezielle Tools. Damit stellen Sie eine defekte Grub-Installation wieder her.

Reparatur mit Notfallsystem: Rescatux macht defekte und überschriebene Bootloader wieder flott, eignet sich jedoch nur für Bios-Systeme, da es nicht im Uefi-Modus booten kann. Nach dem Start rufen Sie die gewünschte Aktion im Tool Rescapp auf. Hier gibt es etwa „Restore Grub“ und „Update Grub Menüs“. Das Tool „Boot Repair“ repariert die Grub-Bootumgebung mit einem Mausklick.

3. Bootmenü für Grub 2 anpassen

Die Reihenfolge der Menüeinträge in Grub ergibt sich aus der Script-Nummerierung. Durch Umbenennen können Sie Windows an die erste Stelle setzen.

Die in Punkt 1 erwähnten Scripts unter „/etc/grub.d“ und die Konfigurationsdatei „/boot/grub/grub.cfg“ sollten Sie nicht bearbeiten. Sie werden beim nächsten Grub-Update wahrscheinlich durch neue Versionen ersetzt, wobei Ihre Änderungen verlorengehen. Wer trotzdem Änderungen durchführen möchte, sollte immer Sicherungskopien anlegen. Der vorgesehene Weg zu eigenen Menüpunkten führt über die Datei „/etc/grub.d/40_custom“. Oder Sie verwenden „41_custom“ zusammen mit „/boot/grub/custom.cfg“. Ein Beispiel: Bei einer Parallelinstallation von Linux und Windows 7 taucht im Bootmenü auch „Windows 7 Recovery Environment“ auf. Damit starten Sie die Windows-Wiederherstellungsumgebung des PC-Herstellers, die ohne Rückfrage mit der Rekonstruktion des ursprünglichen Windows beginnt und die Linux-Installation entfernt. Um den problematischen Menüeintrag zu beseitigen, kopieren Sie aus „/boot/grub/grub.cfg“ den Block, der mit „menuentry ‚Windows 7 (loader)“ beginnt und mit „}“ endet, in die neue Datei „/boot/grub/custom.cfg“. Danach ergänzen Sie in „/etc/default/grub“ diese Zeile:

GRUB_DISABLE_OS_PROBER=true

Mit update-grub generieren Sie die Konfigurationsdatei „/boot/grub/grub.cfg“ neu. Das Script „30_os_prober“ erzeugt jetzt keine Menüeinträge für Windows mehr. Stattdessen kommt der Menüeintrag für Windows aus „/boot/grub/custom.cfg“ zum Einsatz.

Menüreihenfolge ändern: Die Datei „/etc/default/grub“ legt über „GRUB_DEFAULT“ fest, welches System automatisch bootet. Der Wert „0“ bedeutet, dass das System startet, zu dem der erste Eintrag im Bootmenü gehört. Ändern Sie diesen Wert auf die Position des gewünschten Systems im Bootmenü, um ein anderes Standardsystem festzulegen. Alternativ ändern Sie die Reihenfolge, indem Sie die Scripts neu nummerieren. Haben Sie wie oben beschrieben eine „custom.cfg“ mit dem Menüeintrag für Windows erstellt, verwenden Sie diese zwei Zeilen:

sudo mv 41_custom 07_custom sudo update-grub

Windows landet dann im Menü an der ersten Position und wird standardmäßig gestartet, wenn „GRUB_DEFAULT=0“ gesetzt ist.

4. Grub 2 optisch anpassen

Das Grub-Startmenü lässt sich aufhübschen: Installieren Sie die Pakete „grub2-splashimages“ und „grub2-themes-ubuntu-mate“. In der Datei „/etc/default/grub“ ergänzen Sie dann diese zwei Zeilen:

GRUB_GFXMODE=800x600 GRUB_BACKGROUND=/usr/share/images/grub/
Apollo_17_The_Last_Moon_Shot_Edit1.tga

In „/etc/grub.d/40_custom“ hängen Sie folgende vier Zeilen an:

set color_normal="white/black"
set color_highlight="black/black"
set menu_color_normal="white/black"
set menu_color_highlight="white/dark-gray"

Aktualisieren Sie die Konfiguration mit update-grub, und starten Sie das System neu. Das Ergebnis sehen Sie in der ersten Abbildung dieses Beitrags. Eine Liste der Variablen und Farben finden Sie im Grub-Manual. Komplexere Anpassungen sind über Grub-Themes möglich. Machen Sie die eben durchgeführten Änderungen rückgängig, und tragen Sie in „/etc/default/grub“ folgende Zeile ein:

GRUB_THEME=/boot/grub/themes/ubuntu-mate/theme.txt

Nach update-grub und einem Neustart sehen Sie das Ubuntu-Mate-Theme für Grub. Die Dateien des Themes liegen im angegebenen Pfad, die Konfiguration erfolgt über die Datei „theme.txt“.

(PC-Welt/ad)