Ubuntu 16.04 Xenial Xerus
Ubuntu 14.04 Trusty Tahr
Ubuntu 12.04 Precise Pangolin
Der Grub 2 Bootloader in der Version 2.0 (stable) ist weiter in der Entwicklung. Hinweise auf tatsächliche Gegebenheiten können daher noch fehlen bzw. nach einem Update nicht mehr zutreffen. Wesentliche Abweichungen sind gekennzeichnet und wenn erforderlich, auch beschrieben.
Dieser Artikel beschreibt, wie man GRUB 2 reparieren kann, wenn er nicht oder nicht mehr so funktioniert wie gewünscht. Bevor man zu Reparaturarbeiten an GRUB 2 geht, sollte man sich stets einen Überblick über das System verschaffen[1]. Nur wenn man sicher weiß, wo die GRUB-2-Dateien liegen und wohin GRUB 2 installiert war bzw. wohin man ihn installieren möchte, kann man die erforderlichen Schritte erfolgreich ausführen.
Für Reparaturen am EFI-System muss die Live-CD/DVD bzw. der Live-USB-Stick im EFI-Modus gestartet werden! Weitergehende Hinweise zur Reparatur in einem EFI-System siehe diese Ausführungen.
Falls man bei der Installation nicht nur das Homeverzeichnis verschlüsselt, sondern stattdessen die Systemverschlüsselung (LUKS) aktiviert hat, muss man das System nun vor allen weiterführenden Schritten zunächst entschlüsseln. Wenn man nun
sudo parted -l
ausführt, erkennt man eine oder mehrere Ausgaben wie Festplatte /dev/mapper/mnt
, wobei zusätzlich vgubuntu
(sowie vgubuntu-root
und vgubuntu-swap
) erscheinen, wenn der Installer die Verschlüsselung mit LVM ergänzt.
Im Folgenden weicht die Anleitung dann nur noch dadurch ab, dass nun anstelle von /dev/sdXY
stattdessen das entsprechende /dev/mapper/vgubuntu-root
(LUKS mit LVM) bzw. direkt das soeben durch die Entsperrung erzeugte /dev/mapper/mnt
(Beispiel ohne LVM) genutzt werden muss.
Am einfachsten ist die Reparatur von GRUB 2, wenn man die betreffende Ubuntu Version, mit der er installiert wurde, noch starten kann. Gelingt dies nicht über das eigentliche GRUB 2 Auswahl-Menü, so kann man die Reparatur mittels Desktop-CD versuchen, oder es - falls verfügbar - über die GRUB-Kommandozeile, den GRUB-Rettungs-Modus oder auch die Super-GRUB-Disk probieren.
Alle nachfolgenden Befehle werden über das Terminal[2] eingegeben:
Der folgende Befehl grub-setup
ist nur noch in der Grub-Version 1.99 (Precise Pangolin 12.04 LTS) anwendbar. Bei einer Ubuntu-EFI-Installation wird dieser Befehl grundsätzlich nicht gebraucht.
Um die Kernkomponenten von GRUB 2 - boot.img und core.img - erneut in den MBR und den verborgenen Bereich zu schreiben, gibt man in ein Terminal [2] ein:
sudo grub-setup /dev/sdX
sdX
ist dabei an das eigene System anzupassen (mehr zu (grub-setup).
Zunächst die GRUB-2-Dateien erneut in das Verzeichnis /boot/grub installieren und anschließend die Kernkomponenten von GRUB 2 in den MBR und verborgenen Bereich schreiben ( mehr zu grub-install).
sudo grub-install /dev/sdX
sdX
ist dabei an das eigene System anzupassen.
Hat man Probleme, die sich durch Neuinstallation von GRUB 2 nicht beheben lassen, so kann man weiterhin versuchen, die GRUB 2 Pakete, die als Grundlage auch für die Neuinstallation von GRUB 2 auf dem System dienen, zu reinstallieren. Dies bewerkstelligt man einfach mit folgendem Befehl:
sudo apt-get update
Anschließend abhängig vom System:
sudo apt-get --reinstall install grub-common grub-pc os-prober # grub-gfxpayload-lists
Das Paket grub-gfxpayload-lists wird nur bei älteren System mit Grub 1.9 benötigt!
Die Konfiguration für das Auswahl-Menü ermitteln und in die Datei grub.cfg übertragen (mehr zu update-grub):
sudo update-grub
Die aktuelle Konfiguration für das Auswahl-Menü ermitteln und in eine frei definierbare Datei speichern - die Datei grub.cfg bleibt dabei unverändert (mehr zu grub-mkconfig):
sudo grub-mkconfig --output=/boot/grub/meine.cfg
schreibt die aktuelle Konfiguration in die Datei meine.cfg im Verzeichnis /boot/grub, die Datei kann dabei an die eigenen Bedürfnisse angepasst werden.
Im Folgenden wird davon ausgegangen, dass die verwendete Desktop-CD dem zu reparierenden System in seiner Architektur, also z.B. 32- oder 64-Bit, entspricht. Wählt man die Root-Directory-Methode, so ist noch auf die selbe GRUB-2-Version zu achten.
Hinweis: Nachdem der Ubuntu "alternate" Installer weggefallen ist, bieten die original Debian Installationsmedien mit ihrem Rescue-Modus weiterhin eine bequemere Möglichkeit zu booten, das Wurzeldateisystem auszuwählen, und in eine chroot-Umgebung zu kommen, um grub-install ausführen zu können.
Bootet man mit der Desktop-CD müssen die relevanten Partitionen eingehängt werden. Man öffnet dazu am Live-Desktop ein Terminal[2] und gibt dort ein:
sudo mount /dev/sdXY /mnt
sdXY
ist dabei die Rootpartition, die an das eigene System anzupassen ist (z. B.: /dev/sda5)!
Optionale Schritte
Nutzt man auf dem System eine separate Boot-Partition, so muss diese ebenfalls vorab eingehängt werden:
sudo mount /dev/sdXY /mnt/boot
Nutzt man auf seinem Rechner das UEFI-Bootverfahren, so muss die relevante Bootpartition vorab eingehängt werden mit:
sudo mount /dev/sdXY /mnt/boot/efi
Vorbereitung und Wechsel in die chroot-Umgebung:
sudo mount -o bind /dev /mnt/dev
sudo mount -o bind /sys /mnt/sys
sudo mount -t proc /proc /mnt/proc
sudo cp /proc/mounts /mnt/etc/mtab
sudo chroot /mnt /bin/bash
Danach führt man die folgenden Befehle (ohne sudo) aus:
Zunächst installiert man die GRUB-2-Dateien neu in das Verzeichnis /boot/grub und schreibt GRUB 2 in den MBR des betreffenden Datenträgers. Dies erledigt der folgende Befehl:
grub-install /dev/sdX
Nutzt man auf seinem Rechner das UEFI-Bootverfahren, so kann man auf die Zuordnung zur Festplatte / Partition (/dev/sdXY) verzichten.
Sollte es dabei zu Fehlern kommen, probiert man es mit:
grub-install --recheck /dev/sdX
Anschließend erstellt man auf Grundlage der neu installierten Dateien die Datei /boot/grub/grub.cfg neu:
update-grub
Abschließend muss man die chroot-Umgebung wieder mit Strg + D verlassen.
Zunächst mittels Desktop-CD booten und sicherstellen, dass die mdadm-Tools installiert und assembliert sind:
sudo apt-get install mdadm
sudo mdadm --assemble --scan
Einhängen der Systempartition:
sudo mount /dev/mdX /mnt
mdX
ist dabei an das eigene System anzupassen!
Überprüfen der mdadm.conf-Einträge mit Ausgabe von:
sudo mdadm --examine --scan
(Optionaler Schritt) Nutzt man auf dem System eine separate Boot-Partition, so muss diese ebenfalls eingehängt werden:
sudo mount /dev/mdX /mnt/boot
Vorbereitung und Wechsel in die chroot-Umgebung:
sudo mount -o bind /dev /mnt/dev
sudo mount -o bind /sys /mnt/sys
sudo mount -t proc /proc /mnt/proc
sudo cp /proc/mounts /mnt/etc/mtab
sudo chroot /mnt /bin/bash
Danach führt man die folgenden Befehle aus:
GRUB 2 neu in den MBR des betreffenden Datenträgers installieren:
grub-install /dev/sdX
Installation auf allen teilnehmenden Platten (/dev/sda, /dev/sdb ...) empfohlen!
Sollte es dabei zu Fehlern kommen, probiert man es mit:
grub-install --recheck /dev/sdX
Anschließend erstellt man auf Grundlage der neu installierten Dateien die Datei /boot/grub/grub.cfg neu:
update-grub
Abschließend muss man die chroot-Umgebung wieder mit Strg + D verlassen.
Nun sollte mindestens Ubuntu wieder über GRUB 2 starten können. Eventuell muss man aber dann die Konfigurations-Skripte noch den eigenen Bedürfnissen anpassen, um beispielsweise auch andere Betriebssysteme wieder wie zuvor starten zu können.
Neben den hier verwendeten Befehlen grub-install
und update-grub
lassen sich in der chroot-Umgebung alle Befehle anwenden, die auch im laufenden System verwendet werden können.
Nutzt man auf seinem Rechner das UEFI-Bootverfahren, so ist die "Root-Directory-Methode" nicht anwendbar!
Bei dieser Variante wird GRUB 2 einfach in einem Terminal[2] von der Desktop-CD mittels des GRUB-2-Skripts grub-install erneut auf der Festplatte installiert:
Booten von einer Desktop-CD.
Ein Terminal[2] öffnen.
Lokalisieren des Datenträgers, sowie der Root- und gegebenenfalls Bootpartition (siehe GRUB Umgebung analysieren).
Einhängen der zuvor unter 3. ermittelten Rootpartition:
sudo mount /dev/sdXY /mnt
Beispielanweisung: 1.Platte - 2. Partition sudo mount /dev/sda2 /mnt
Optionale Schritte
Nutzt man auf dem System eine separate Boot-Partition, so muss diese ebenfalls vorab eingehängt werden:
sudo mount /dev/sdXY /mnt/boot
Devices von USB/CD einbinden Live-System
sudo mount --bind /dev/ /mnt/dev
Jetzt reinstalliert man die GRUB-2-Dateien und schreibt GRUB 2 in den MBR des entsprechenden Datenträgers:
GRUB 1.98 und vorher (bis Maverick Meerkat):
sudo grub-install --root-directory=/mnt /dev/sdX
GRUB 1.99 und später:
sudo grub-install --boot-directory=/mnt/boot /dev/sdX
Nach dem Neustarten des Systems sollte GRUB 2 korrekt arbeiten. Um die Datei grub.cfg auf den neuesten Stand zu bringen, empfiehlt sich noch ein
sudo update-grub
Die chroot-Methode verwendet man immer dann, wenn man nur oder auch die grub.cfg neu erstellen lassen will. Außerdem sollte sie immer bei komplizierteren Systemkonstellationen wie LUKS- oder LV-Partitionen sowie Raid-Verbunden und beim Wiederherstellen des Bootloaders eines Dualboot-Systems angewendet werden.
Die Root-Directory-Methode kann man immer dann wählen, wenn man sicher ist, dass die Datei grub.cfg richtig ist und GRUB 2 nur deswegen nicht richtig startet, weil er nicht oder nicht mehr bzw. nicht mehr richtig im Bootsektor oder dem MBR der betreffenden Festplatte installiert ist. Diese Situation hat man z.B. stets, nachdem Windows nach Ubuntu auf dem System installiert wurde. Diese Methode erfordert zwar weniger Einzelschritte, ist dabei aber auch weniger flexibel und erlaubt nicht so viele Reparaturoptionen wie die chroot-Methode.
Ist man sich nicht sicher, welche der beiden Methoden auf die eigene Situation anzuwenden ist, sollte man im Zweifel stets die chroot-Methode wählen, weil man mit ihr auf sämtliche GRUB 2-Befehle zurückgreifen kann, die man auch unter einem laufenden Ubuntu zur Verfügung hat.
Grub kann alternativ auch im Bootsektor einer Partition installiert werden. Wird in den oben genannten Methoden beim Befehl grub-install statt einer Festplattenbezeichnung die einer Partition angegeben, so erfolgt die Installation dort. Diese Art der Installation ist aber nur für fortgeschrittene Anwender ratsam.
Diese Revision wurde am 27. April 2016 17:04 von syscon-hh erstellt.