Vegorus - stock.adobe.com
So lösen Sie Probleme beim Boot von Linux mit GRUB
GRUB kann beim Linux-Boot Probleme verursachen. Admins haben zwei Optionen: ein manueller Neustart oder bei größeren Störungen eine vollständige Neuinstallation.
Der Grand Unified Bootloader (GRUB) ist ein essenzieller Teil beim Linux-Boot-Vorgang. Er wird während des Boot-Prozesses verwendet, um den Kernel zu laden und das Betriebssystem zu starten.
Wie GRUB funktioniert
Wenn der Computer startet, übernimmt das BIOS oder UEFI zunächst die Kontrolle und führt dann den Bootloader aus, der sich im Master Boot Record (MBR) oder GUID Partition Table (GPT) einer Festplatte befindet. Bei mehrfachem Betriebssystemeinsatz bietet GRUB außerdem ein Auswahlmenü an, um zwischen den verschiedenen Systemen zu wechseln. Die aktuelle Version ist GRUB 2.12, die unter anderem verbesserte Kompatibilität mit Unix-basierten Betriebssystemen und Fehlerbehebungen für Probleme wie defekte symbolische Links in UEFI-Bootloadern bietet. GRUB 2.12 wird auch von Tools wie Rufus zur Erstellung bootfähiger Medien unterstützt.
GRUB hat verschiedene Phasen, die es durchläuft, um das Betriebssystem zu starten:
Stage 1 (Initialer Bootloader)
- Ort: im MBR oder GPT der Festplatte
- Größe: sehr klein, nur 512 Byte (bei MBR)
- Funktion: Der erste Teil von GRUB ist sehr einfach und lediglich dafür zuständig, den Stage-2-Bootloader zu finden und zu starten. Es hat keine Kenntnisse über Dateisysteme oder Partitionen.
Stage 1.5 (Optional)
- Ort: zwischen dem MBR und dem Beginn der ersten Partition
- Funktion: Dieser Teil ist optional und ermöglicht GRUB, auf das Dateisystem zuzugreifen. Stage 1.5 wird oft verwendet, wenn der Stage-2-Bootloader auf einer Partition liegt, die ein spezielles Dateisystem (wie ext4) verwendet.
Stage 2 (Hauptteil von GRUB)
- Ort: auf einer bestimmten Partition (oft in /boot/grub/ oder /boot/grub2/)
- Funktion: Dies ist der Hauptteil von GRUB. Hier liest GRUB die Konfigurationsdateien (bei GRUB 2 ist dies normalerweise /boot/grub/grub.cfg) und zeigt ein Menü an, aus dem der Benutzer ein Betriebssystem auswählen kann. GRUB unterstützt verschiedene Dateisysteme und kann direkt auf die Konfigurationsdateien zugreifen.
Die Konfiguration von GRUB steuert, welche Betriebssysteme und Kernel zur Verfügung stehen und wie der Boot-Vorgang ablaufen soll. Diese wird in der Datei grub.cfg (bei GRUB 2) gespeichert, die Informationen wie Kernel-Pfade, initrd-Images und Boot-Optionen enthält.
grub.cfg: Diese Datei listet alle Betriebssysteme auf, die GRUB starten kann. Sie enthält Einträge für verschiedene Kernel-Versionen, Boot-Parameter, Standardbetriebssysteme und Timeout-Einstellungen.
update-grub: Ein Befehl, der die grub.cfg aktualisiert, basierend auf den Einträgen in /etc/default/grub und den in /boot/vorhandenen Kernel-Images.
Ein Beispiel für einen Eintrag in grub.cfg könnte so aussehen:
menuentry 'Ubuntu, with Linux 5.4.0-42-generic' {
set root='(hd0,1)'
linux /boot/vmlinuz-5.4.0-42-generic root=/dev/sda1 ro quiet splash
initrd /boot/initrd.img-5.4.0-42-generic
}
Beim Start zeigt GRUB ein Menü an, in dem der Benutzer auswählen kann, welches Betriebssystem oder welcher Kernel gestartet werden soll. Es bietet Optionen für:
- Auswahl des Betriebssystems (wenn mehrere installiert sind)
- Auswahl der Kernel-Version (nützlich nach Kernel-Updates)
- Zugriff auf die GRUB-Shell (für manuelle Boot-Befehle oder Reparaturen)
- Erweiterte Optionen, wie das Starten im Recovery Mode
GRUB ist besonders nützlich, wenn mehrere Betriebssysteme auf einem Computer installiert sind (Dual-Boot oder Multi-Boot). Es kann mehrere Betriebssysteme erkennen und in seinem Boot-Menü anzeigen. Dabei erkennt GRUB nicht nur Linux-Distributionen, sondern auch Windows oder andere Systeme.
GRUB kann sowohl im MBR als auch in einer Partition installiert sein. Bei einer Installation im MBR überschreibt GRUB den Standard-Bootloader und wird als erstes beim Systemstart ausgeführt. Alternativ kann es auch auf einer Partition installiert werden, in diesem Fall wird ein anderer Bootloader im MBR benötigt, der GRUB aufruft.
GRUB speichert wichtige Informationen in der Datei /boot/grub/grub.cfg (bei GRUB 2), während ältere Versionen von GRUB die Datei menu.lst oder grub.conf verwenden. Fehler treten oft auf, wenn der Bootloader eine Partition oder Datei nicht finden kann, etwa nach Änderungen an den Partitionstabellen oder durch Dateisystembeschädigungen, was den Boot-Prozess unterbricht. Typische Symptome sind ein blinkender Cursor, GRUB-Fehlermeldungen oder eine fehlende Boot-Konfiguration.
Fehlkonfigurationen oder Probleme mit dem MBR/GPT können dazu führen, dass GRUB nicht startet. Die häufigsten Probleme sind:
- Blinkender Cursor: GRUB kann nicht geladen werden, oft ein Zeichen für Probleme im MBR.
- GRUB-Rescue-Modus: Wenn GRUB keinen Kernel oder kein Betriebssystem findet, wird dieser Modus aktiviert, in dem der Benutzer manuell Reparaturen durchführen kann.
- GRUB-Neuinstallation: Wenn GRUB beschädigt oder gelöscht wurde, kann es mit einer Live-CD und dem Befehl grub-install neu installiert werden.
Um GRUB-Probleme zu beheben, gibt es zwei Hauptansätze: die Neuinstallation des Bootloaders oder das manuelle Booten und Reparieren über die Kommandozeile.
Neuinstallation von GRUB bei MBR-Problemen
Wenn ein ernsthaftes Problem mit dem Master Boot Record (MBR) auftritt, kann es sein, dass beim Start nur ein blinkender Cursor zu sehen ist. In solchen Fällen wird der MBR möglicherweise nicht korrekt gelesen und GRUB nicht gestartet.
Wenn der automatische Boot-Prozess fehlschlägt, kann man die GRUB-Shell aufrufen. Diese bietet eine Kommandozeile, mit der man manuell den Start des Systems konfigurieren kann. Nützliche Befehle in der GRUB-Shell sind unter anderem:
- ls: Zeigt die vorhandenen Partitionen und Dateisysteme an.
- set root: Setzt die zu verwendende Partition (zum Beispiel set root=(hd0,1)).
- linux: Gibt den Pfad zum Kernel-Image an (zum Beispiel linux /boot/vmlinuz-5.4.0 root=/dev/sda1).
- boot: Startet den Boot-Prozess.
Falls der MBR beschädigt ist, wird GRUB nicht geladen, und es ist auch keine GRUB-Fehlermeldungen zu sehen. In dieser Situation ist es nicht möglich, das System normal zu booten. Sie benötigen eine Rettungs-CD oder ein Live-System, wie beispielsweise Knoppix, um den Computer zu starten und das System zu reparieren.
Schritte zur Reparatur und Neuinstallation von GRUB
1. Booten von einer Rettungs-CD/Live-CD:
- Starten Sie den Computer mit einem Live-System, wie Knoppix oder einer anderen Linux-Live-CD, und öffnen Sie ein Terminal.
2. Mounten der Festplatte:
- Bevor GRUB neu installiert werden kann, stellen Sie sicher, dass die betroffenen Partitionen korrekt gemountet sind. Beispielsweise:
mount /dev/sda1 /mnt
- Falls Ihre Boot-Partition separat ist, mounten Sie auch diese:
mount /dev/sda2 /mnt/boot
3. chroot-Umgebung:
- Wechseln Sie in die chroot-Umgebung, um den Reparaturprozess durchzuführen:
chroot /mnt
4. GRUB neu installieren:
- Führen Sie den folgenden Befehl aus, um GRUB neu auf die Festplatte zu installieren. Angenommen, die Festplatte ist /dev/sda, lautet der Befehl:
grub-install /dev/sda
5. Konfigurationsdateien aktualisieren:
- Nachdem GRUB neu installiert wurde, ist es wichtig, die GRUB-Konfiguration zu aktualisieren, um sicherzustellen, dass alle Kernel und Betriebssysteme korrekt erkannt werden:
update-grub
6. Neustart:
- Nach Abschluss der Neuinstallation und Konfiguration von GRUB können Sie das System neu starten:
reboot
GRUB liest seine Konfigurationsdateien nicht mehr aus /boot/grub/menu.lst heraus wie in veralteten Versionen. Aktuelle Versionen von GRUB 2 verwenden standardmäßig die Datei /boot/grub/grub.cfg. Sie wird automatisch von update-grubgeneriert und sollte nicht manuell bearbeitet werden.
Die Ausgabe bei der Neuinstallation von GRUB könnte in etwa so aussehen:
root@Knoppix:/# grub-install /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
Die beschriebene Methode funktioniert grundsätzlich, jedoch ist es wichtig, dass die verwendete Konfigurationsdatei und der Befehl update-grub an die modernen Gegebenheiten angepasst werden, insbesondere bei der Verwendung von GRUB 2.
Hier ist der Text, der den manuellen Boot-Prozess in **GRUB 2** beschreibt, angepasst und aktualisiert:
So erfolgt das manuelle Booten mit GRUB 2
Es ist nicht immer notwendig, GRUB komplett neu zu installieren, um Probleme beim Booten von Linux zu beheben. Wenn der GRUB-Code intakt ist, aber das System aufgrund einer fehlerhaften oder fehlenden Konfiguration nicht startet, lässt sich GRUB manuell verwenden, um das System zu starten.
Dies ist besonders nützlich, wenn GRUB eine Fehlermeldung anzeigt und den Bootvorgang unterbricht. Durch das manuelle Booten können Sie die Ursache des Problems identifizieren und eine mögliche Lösung finden.
Zugriff auf das GRUB-Boot-Menü
1. GRUB-Menü aufrufen:
- Beobachten Sie den Computer während des Starts. Wenn GRUB geladen wird, können Sie in den meisten Fällen das Boot-Menü mit der Esc-Taste oder einer anderen Taste wie Shiftaufrufen, je nach System.
2. GRUB-Shell starten:
Wenn GRUB nicht automatisch bootet oder Sie manuell eingreifen wollen, wählen Sie im GRUB-Menü die Option, um zur Kommandozeile zu wechseln. Alternativ können Sie auch eine Rettungs-CD oder ein Live-System verwenden und von dort aus GRUB manuell starten.
Befehle in der GRUB-Shell
Sobald Sie in der GRUB-Shell sind, können Sie das System manuell booten, indem Sie die Kernel-Parameter korrekt setzen. Ein typischer Ablauf sieht wie folgt aus:
1. Root-Dateisystem setzen:
- Verwenden Sie den Befehl set root, um die Partition anzugeben, auf der sich das Root-Dateisystem befindet. Beispiel:
set root=(hd0,1)
- Hierbei steht (hd0,1) für die erste Partition auf der ersten Festplatte. Beachten Sie, dass in GRUB 2 die Partitionen bei 1 beginnen (im Gegensatz zu GRUB Legacy, wo sie bei 0 anfangen).
2. Kernel laden:
- Laden Sie den Kernel manuell mit dem Befehl linux. Der Pfad muss den Kernel auf Ihrer Partition korrekt referenzieren, und das Root-Dateisystem wird ebenfalls angegeben:
linux /boot/vmlinuz-<kernel_version> root=/dev/sda1 ro quiet splash
- Ersetzen Sie <kernel_version> durch die tatsächliche Kernel-Version auf Ihrem System (zum Beispiel vmlinuz-5.4.0-42-generic).
3. initrd laden:
- Laden Sie die Initial Ramdisk mit dem `initrd`-Befehl, damit der Kernel alle notwendigen Treiber für den Start hat:
initrd /boot/initrd.img-<kernel_version>
- Auch hier muss die richtige Version verwendet werden.
4. System starten:
- Nachdem Sie die vorherigen Befehle ausgeführt haben, starten Sie den Bootvorgang mit:
boot
Tipps für die Problembehebung
Es gibt darüber hinaus noch einige Besonderheiten zu beachten. Dazu gehören:
GRUB-Syntax prüfen: Wenn eine Fehlermeldung erscheint, überprüfen Sie die eingegebenen Pfade und Partitionen. Die set root- und linux-Befehle müssen exakt auf das Dateisystem und den Kernel auf Ihrer Festplatte verweisen.
GRUB-Hilfefunktion: Nutzen Sie die in GRUB integrierte Hilfefunktion. Geben Sie einfach help ein, um eine Übersicht über verfügbare Befehle zu erhalten. Zum Beispiel könnte ein vollständiger Befehlssatz wie folgt aussehen:
set root=(hd0,1)
linux /boot/vmlinuz-5.4.0-42-generic root=/dev/sda1 ro quiet splash
initrd /boot/initrd.img-5.4.0-42-generic
boot
Darüber sollten Administratoren die wichtigsten Unterschiede zwischen GRUB und GRUB Legacy kennen:
- GRUB 2 verwendet grub.cfg statt menu.lst: GRUB 2 liest die Konfiguration aus der Datei /boot/grub/grub.cfg. Diese Datei wird automatisch mit dem Befehl update-grub generiert und sollte nicht manuell bearbeitet werden.
- Partitionierung in GRUB 2: In GRUB 2 beginnt die Nummerierung der Partitionen bei 1. Daher ist `(hd0,1)` die erste Partition auf der ersten Festplatte.
GRUB in einer Rettungsumgebung booten
Der Prozess, um GRUB in eine Rettungsumgebung zu booten, ist besonders nützlich, wenn das System nicht mehr richtig startet oder GRUB beschädigt ist. Hier ist der allgemeine Ablauf, um GRUB in einer Rettungsumgebung (zum Beispiel von einer Live-CD oder einem Rettungsmedium) neu zu installieren oder zu reparieren:
1. Vorbereitung der Rettungsumgebung
- Erstellen eines Rettungsmediums: Verwenden Sie eine Live-CD/DVD oder einen Boot-fähigen USB-Stick mit einer Linux-Distribution (zum Beipiel Ubuntu oder Knoppix). Viele Linux-Distributionen bieten diese Option im Installationsmedium an.
- System von Live-Medium booten: Starten Sie den Computer vom Live-Medium, indem Sie die Boot-Reihenfolge im BIOS ändern oder die entsprechende Taste beim Booten drücken (meistens F12, Esc, F2 oder Delete).
2. In die Rettungsumgebung wechseln
- Sobald das Live-System geladen ist, öffnen Sie ein Terminal (normalerweise über den Desktop des Live-Systems).
3. Partitionen mounten
- Bevor Sie GRUB neu installieren oder reparieren, müssen Sie sicherstellen, dass die Festplattenpartitionen, auf denen Ihr Linux-System installiert ist, gemountet sind.
- Root-Partition mounten: Finden Sie heraus, auf welcher Partition Ihr Linux-System installiert ist. Verwenden Sie dafür den Befehl lsblk oder fdisk -l, um die Partitionen aufzulisten. Ein Beispiel für das Mounten der Root-Partition (angenommen, es ist /dev/sda1) kann so aussehen:
sudo mount /dev/sda1 /mnt
Andere notwendige Dateisysteme mounten (falls vorhanden, wie /boot oder /boot/efi, wenn es sich um ein UEFI-System handelt):
sudo mount /dev/sda2 /mnt/boot
sudo mount /dev/sda3 /mnt/boot/efi # Bei UEFI-Systemen
4. chroot-Umgebung einrichten
- Um das System zu reparieren, müssen Sie in eine chroot-Umgebung wechseln, die das System simuliert, als wären Sie auf dem eigentlichen Linux-Installationslaufwerk.
- Wichtige Verzeichnisse mounten**:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
- Wechseln in die chroot-Umgebung**:
sudo chroot /mnt
- In der chroot-Umgebung arbeiten Sie nun, als ob Sie auf dem tatsächlichen System wären.
5. GRUB neu installieren
Sobald Sie sich in der chroot-Umgebung befinden, können Sie GRUB neu installieren.
- GRUB auf MBR installieren (für BIOS-Systeme):
grub-install /dev/sda
- GRUB auf EFI-Systemen installieren (für UEFI-Systeme):
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub
- GRUB-Konfiguration neu generieren:
update-grub
6. System neustarten
- Nachdem Sie GRUB erfolgreich installiert haben, verlassen Sie die chroot-Umgebung:
exit
- Dann mounten Sie die Partitionen wieder ab und starten das System neu:
sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt/sys
sudo umount /mnt
sudo reboot
Nach dem Neustart sollte GRUB ordnungsgemäß funktionieren, und das Linux-System sollte normal booten.