Einführung
Der GRUB (Grand Unified Bootloader) ist ein Tool zum Booten und Laden von Betriebssystemkernen und der Standard-Bootloader für Systeme, die auf dem Linux-Kernel basieren. Obwohl es zuerst ausgeführt wird, wenn ein Computer eingeschaltet wird, sehen normale Benutzer GRUB selten in Aktion. Es funktioniert automatisch und erfordert keine Benutzereingaben.
Wenn Sie jedoch versuchen, ein anderes Betriebssystem neben Linux auf demselben Computer zu booten, überschreibt der Bootloader des anderen Systems möglicherweise GRUB, was dazu führt, dass das Linux-System nicht booten kann.
Dieser Artikel zeigt Ihnen, wie Sie Linux-Boot-Fehler mit GRUB Rescue-Befehlen und dem Boot-Reparatur-Tool beheben können.
Voraussetzungen
- Ein Konto mit sudo-Berechtigungen.
- Zugriff auf die Befehlszeile.
GRUB-Startprobleme
Der häufigste Grund dafür, dass GRUB nicht in das Betriebssystem bootet, ist, dass der Bootloader eines anderen Betriebssystems die GRUB-Boot-Konfiguration überschreibt. Das Problem tritt bei einem Dual-Boot-Versuch mit einer bestehenden Linux-Installation auf. Ein weiterer Grund ist das versehentliche Entfernen von GRUB-Konfigurationsdateien.
Wenn GRUB das System nicht booten kann, erscheint die GRUB Rescue-Eingabeaufforderung.
Das obige Beispiel zeigt, dass GRUB den Fehler „no such partition“ anzeigt, bevor die grub rescue
angezeigt wird prompt. Ein weiterer häufiger GRUB-Fehler ist „Unbekanntes Dateisystem“, gefolgt von der gleichen Eingabeaufforderung.
Manchmal zeigt der Bildschirm den grub
Nur Eingabeaufforderung.
GRUB-Rettungsbefehle
Nachfolgend finden Sie eine Liste der häufig verwendeten GRUB-Rescue-Befehle. Verwenden Sie die Befehle in den Eingabeaufforderungen, die im vorherigen Abschnitt erwähnt wurden.
Befehl | Beschreibung | Beispiel |
---|---|---|
boot | Booten starten (Tastenkürzel:F10 , STRG + x ). | Der Befehl wird ohne Argumente ausgegeben. |
cat | Den Inhalt einer Datei in die Standardausgabe schreiben. | cat (hd0,1)/boot/grub/grub.cfg |
configfile | Lade eine Konfigurationsdatei. | configfile (hd0,1)/boot/grub/grub.cfg |
initrd | Laden Sie die Datei initrd.img. | initrd (hd0,1)/initrd.img |
insmod | Modul laden. | insmod (hd0,1)/boot/grub/normal.mod |
loopback | Mounten Sie eine Image-Datei als Gerät. | loopback loop0 (hd0,1)/iso/image.iso |
ls | Den Inhalt eines Verzeichnisses oder einer Partition anzeigen. | ls (hd0,1) |
lsmod | Zeigt eine Liste der geladenen Module an. | Der Befehl wird ohne Argumente ausgegeben. |
normal | Aktiviere das normale Modul. | Der Befehl wird ohne Argumente ausgegeben. |
search | Nach Geräten suchen. Option --file sucht nach Dateien, --label sucht nach Labels, --fs-uuid sucht nach Dateisystem-UUID. | search -file [filename] |
set | Setzen Sie eine Umgebungsvariable. Wenn er ohne Argumente ausgegeben wird, gibt der Befehl die Liste aller Umgebungsvariablen und ihrer Werte aus. | set [variable-name]=[value] |
Startfehler behoben
In diesem Tutorial werden zwei Möglichkeiten zum Beheben von GRUB-Startproblemen mithilfe der GRUB-Rescue-Eingabeaufforderung behandelt , und das Boot-Reparatur-Tool .
Über das Grub-Terminal
1. Verwenden Sie den set-Befehl ohne Argumente, um die Umgebungsvariablen anzuzeigen:
set
Die Beispielausgabe zeigt, dass GRUB so eingerichtet ist, dass es von (hd0,msdos3)
bootet Partition:
2. Der Befehl ls listet die verfügbaren Partitionen auf der Festplatte auf.
ls
Die Ausgabe zeigt die Partitionsliste.
Verwenden Sie das ls
Befehl, um die Partition zu finden, die den boot
enthält Verzeichnis.
ls [partition-name]
Das Beispiel zeigt den boot
Verzeichnis im (hd0,msdos1)
Partition.
3. Legen Sie die Startpartition als Wert von root
fest Variable. Das Beispiel verwendet die Partition namens (hd0,msdos1)
.
set root=(hd0,msdos1)
4. Laden Sie den normal
Boot-Modus.
insmod normal
5. Starten Sie den normal
Boot-Modus.
normal
Der normal
-Modus können Sie komplexere Befehle ausführen.
6. Laden Sie den Linux-Kernel mit linux
Befehl.
linux /boot/vmlinuz-4.2.0-16-generic root=/dev/sda1 ro
7. Geben Sie boot
aus Befehl.
boot
Das System bootet jetzt ordnungsgemäß.
Über Livebild
Eine andere Möglichkeit, Ihre GRUB-Boot-Probleme zu beheben, besteht darin, ein Linux-Live-Image zu verwenden, um von einem externen Gerät zu booten.
1. Laden Sie ein Live-Linux-Installationsprogramm herunter. Dieses Beispiel verwendet das ISO-Image von Ubuntu 20.04.
2. Verwenden Sie ein Tool wie Etcher, um das Linux-Image auf eine SD-Karte oder ein USB-Flash-Laufwerk zu schreiben.
3. Legen Sie das bootfähige Gerät ein und starten Sie den Computer.
4. Wählen Sie Ubuntu ausprobieren auf dem Willkommensbildschirm.
5. Wenn das Live-System hochfährt, stellen Sie eine Verbindung zum Internet her.
6. Öffnen Sie das Terminal und geben Sie den folgenden Befehl ein, um das Repository für das Boot Repair Tool hinzuzufügen.
sudo add-apt-repository ppa:yannubuntu/boot-repair
Drücken Sie Eingabe und warten Sie, bis das Repository hinzugefügt wird.
7. Aktualisieren Sie die Repositories.
sudo apt update
8. Installieren Sie das Boot-Reparatur-Tool.
sudo apt install boot-repair
9. Starten Sie das Boot Repair Tool über das Terminal.
boot-repair
10. Wählen Sie Empfohlene Reparatur .
Warten Sie, bis das Tool die Reparatur des Bootloaders abgeschlossen hat.
GRUB-Konfigurationsdatei aktualisieren
Wenn das System erfolgreich hochgefahren ist, stellen Sie sicher, dass die GRUB-Konfiguration auf dem neuesten Stand ist.
Führen Sie diesen Befehl aus:
update-grub
GRUB neu installieren
Führen Sie die folgenden Schritte aus, um GRUB auf Ihrem Linux-System neu zu installieren.
1. Mounten Sie die Partition, die die Betriebssysteminstallation enthält. Das Beispiel stellt /dev/sda1
bereit Partition nach /mnt
Verzeichnis.
sudo mount /dev/sda1 /mnt
2. Binden Sie /dev
, /dev/pts
, /proc
, und /sys
Verzeichnisse in die entsprechenden Verzeichnisse in /mnt
Ordner.
sudo mount --bind /dev /mnt/dev &&
sudo mount --bind /dev/pts /mnt/dev/pts &&
sudo mount --bind /proc /mnt/proc &&
sudo mount --bind /sys /mnt/sys
3. Installieren Sie GRUB.
sudo grub-install -root-directory=/mnt/ /dev/sda
4. Hängen Sie die Verzeichnisse aus, wenn die Installation erfolgreich abgeschlossen ist.
sudo umount /mnt/sys &&
sudo umount /mnt/proc &&
sudo umount /mnt/dev/pts &&
sudo umount /mnt/dev &&
sudo umount /mnt