So beheben Sie den Linux-Boots-in-den-BIOS-Fehler
Veröffentlicht: 2022-09-28Es ist bekannt, dass GRUB-Updates dazu führen, dass Linux-Computer in die BIOS- oder UEFI-Einstellungen booten. Die Lösung dafür nutzt einen nützlichen Systemwiederherstellungstrick, den Sie wirklich kennen sollten.
Eine Fallstudie: GRUB 2:2.06.r322
Ein Systemupdate für Arch und Arch-basierte Linux-Distributionen im Sommer 2022 beinhaltete eine neue Version von GRUB. GRUB steht für gr and unified bootloader .
Ein Bootloader ist eine Anwendung, die den Startvorgang startet, wenn Ihr Computer eingeschaltet wird. Mehrere Software-Tools und Dienstprogramme müssen gestartet werden – von der richtigen Partition und in der richtigen Reihenfolge – um schließlich zu einem funktionsfähigen und zugänglichen Betriebssystem zu führen. GRUB startet diese Kaskade von Ereignissen.
Wenn Sie mehr als ein Betriebssystem auf Ihrem Computer installiert haben, stellt GRUB ein Menü bereit, in dem Sie auswählen können, welches Betriebssystem verwendet werden soll. Eine der Codeänderungen an GRUB 2:2.06.r322 fügte Unterstützung für eine neue GRUB-Option hinzu, --is-supported
. Die Option wird verwendet, um anzuzeigen, ob eine Boot-to-Firmware-Fähigkeit vorhanden ist oder nicht. Wenn dies der Fall ist, fügt GRUB einen Eintrag zum Boot-Menü hinzu, damit Sie in Ihre EUFI-Einstellungen booten können.
Auf die neue Option wurde in einem Skript namens „30_uefi-firmware.in“ verwiesen. Der Unterschied für diese Datei zeigt, dass eine if
-Anweisung entfernt und zwei Zeilen hinzugefügt wurden.
Eine der neuen Zeilen war eine ersetzende if
-Anweisung. Die andere neue Zeile enthält fwsetup --is-supported
. Das „fw“ in „fwsetup“ steht für Firmware. Da sich diese Zeile jedoch über der neuen if
-Anweisung befindet, wird sie immer ausgeführt. Wenn es sich im Körper der if
-Anweisung befände, würde es nur ausgeführt, wenn der Test in der if
-Anweisung wahr ist.
Dies verursachte auf vielen, aber nicht allen UEFI-Computern Probleme. Es hing davon ab, ob die Version von GRUB, die Sie bereits installiert hatten, diesen Befehl unterstützte. Betroffene Maschinen würden eines von zwei Dingen tun. Sie würden entweder in eine Boot-Schleife gehen, in der der Boot-Vorgang nie abgeschlossen, sondern ständig neu gestartet wurde, oder der Computer würde direkt in die UEFI-Firmware-Einstellungen booten. Wie auch immer, es gab keine Möglichkeit, Ihren Computer zu zwingen, in Linux zu booten.
Wenn Sie mit solchen Situationen konfrontiert werden, gibt es immer die nukleare Option, eine vollständige Neuinstallation durchzuführen. Das wird funktionieren, aber je nachdem, wie Ihre Festplatte partitioniert wurde, können Sie ohne eine aktuelle Sicherung Daten verlieren.
Die Low-Impact-Methode verwendet chroot
und eine Live-USB- oder Live-CD/DVD. Dies ist eine gute Technik, um alle Arten von Systemfehlern zu verstehen und im Ärmel zu haben, wenn Sie Ihren Linux-Computer nicht booten oder sich nicht anmelden können.
Die Technik, die wir verwenden werden
Um diese Technik zu verwenden, benötigen Sie entweder einen bootfähigen USB-Stick oder eine CD/DVD mit einer Linux-Distribution darauf, die in eine Live-Linux-Instanz bootet. Typischerweise werden diese als Live-USB oder Live-CD/DVD bezeichnet. Alle wichtigen Distributionen unterstützen diese Funktion.
Wir werden nichts installieren, daher müssen die Live-Medien nicht dieselbe Distribution sein, die Sie auf Ihrem Computer installiert haben. Sie könnten beispielsweise einen Ubuntu USB verwenden, um einen EndeavourOS-Computer zu reparieren. Wenn Sie keinen Zugriff auf Live-Medien haben, müssen Sie einen anderen Computer verwenden, um ein Image herunterzuladen und es auf einen USB-Speicherstick oder eine CD/DVD zu schreiben.
Wenn Sie vom Live-Medium booten, können Sie Ihr vorhandenes Dateisystem mounten und darauf zugreifen. Ihr installiertes Dateisystem wird als Teil des Dateisystems von Linux angezeigt, das vom Live-Medium gebootet wurde. Das ist großartig. Wenn wir darauf zugreifen können, haben wir eine Chance, es zu reparieren. Aber es wirft ein Problem auf.
Das Stammverzeichnis dieses hybriden Dateisystems ist das Stammverzeichnis des Live-Medien-Dateisystems, nicht das Stammverzeichnis Ihres installierten Dateisystems. Damit die in Ihrem Linux-System konfigurierten Dateipfade auf ihre korrekten Zielspeicherorte verweisen – irgendwo innerhalb Ihres Dateisystems und nicht irgendwo relativ zum Stammverzeichnis des Live-Linux – müssen wir chroot
verwenden, um ein neues Stammverzeichnis festzulegen, das auf das Stammverzeichnis von verweist Ihr installiertes Dateisystem. Mit anderen Worten, Pfade, die mit „/“ beginnen, verwenden das Stammverzeichnis Ihres Dateisystems als Ausgangspunkt.
Der von uns verwendete Testcomputer verwendet das ext4
-Dateisystem, aber Sie können diese Technik auch auf anderen Dateisystemen verwenden. Sie müssen nur angeben, welche Partitionen oder Volumes Sie mounten müssen und wo sie gemountet werden sollen. Die Prinzipien sind die gleichen.
In die Praxis umsetzen
Wir haben ein bootfähiges USB-Laufwerk erstellt und unseren angeschlagenen Computer davon gebootet. Die von uns verwendete Distribution war EndeavourOS. Die Live-Medien von EndeavourOS booten in die XFCE 4-Desktopumgebung.
Um festzustellen, welche Partitionen das Stammverzeichnis Ihres Dateisystems enthalten und welche die Startpartition ist, öffnen Sie ein Terminalfenster und verwenden Sie den Befehl fdisk
. Wir verwenden die Option -l
(Listenpartition). Sie müssen auch sudo
verwenden.
sudo fdisk -l
Scrollen Sie durch die Ausgabe, bis Sie Einträge mit der Bezeichnung „EFI-System“ und „Linux-Dateisystem“ sehen.
Auf diesem Computer befinden sich beide auf der sda
-Festplatte. Sie befinden sich in den Partitionen eins und zwei, wie durch die Partitionsbezeichnungen /dev/sda1
und /dev/sda2
.
Auf Ihrem Computer befinden sie sich möglicherweise auf verschiedenen Festplatten und Partitionen. Achten Sie darauf, die Partitionen zu notieren, auf denen sie sich befinden, wir müssen diese in den nächsten Befehlen verwenden.
Wir müssen die Dateisysteme auf diesen Partitionen mounten, indem wir sie an das Live-Dateisystem anhängen. Der mount
Befehl erledigt das für uns. Denken Sie daran, dass Ihre Partitionsbezeichnungen wahrscheinlich unterschiedlich sind, stellen Sie also sicher, dass Sie die aus den Ergebnissen Ihres fdisk
Befehls verwenden.
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot/efi
Damit das effektive Root-Verzeichnis des Dateisystems im Root-Verzeichnis Ihres tatsächlich installierten Dateisystems beginnt, verwenden wir chroot
, um das Root-Verzeichnis auf den Einhängepunkt „/mnt“ zu setzen. Hier wird das Stammverzeichnis Ihres installierten Dateisystems auf das Live-Dateisystem übertragen.
sudo chroot /mnt
Beachten Sie, dass sich die Eingabeaufforderung ändert, um anzuzeigen, dass Sie jetzt effektiv als Root angemeldet sind und sich im Stammverzeichnis „/“ des Dateisystems Ihres Computers befinden.
Wir können dies leicht testen, indem wir in das „/home“-Verzeichnis wechseln und prüfen, welche Verzeichnisse darin existieren.
cd /home
ls
Sie sollten ein Verzeichnis für jeden auf Ihrem Computer konfigurierten Benutzer sehen, einschließlich eines für Ihr eigenes Benutzerkonto. Dieser Computer hat einen einzigen Benutzer namens „Dave“. Wenn wir cd /home
verwendet hätten, bevor wir den chroot
-Befehl verwendet hätten, wären wir in das „/home“-Verzeichnis des Live-Dateisystems gelangt.
Nur um das klarzustellen, Sie greifen jetzt als Root- Benutzer auf Ihr echtes Dateisystem zu , seien Sie also vorsichtig.
Um das Problem mit GRUB 2:2.06.r322 zu beheben, mussten wir lediglich den Befehl grub-install
ausführen.
grub-install
Es wird normalerweise nicht empfohlen, grub-install
so blind auszuführen. In diesem Fall war es das, was erforderlich war.
Reparieren oder ersetzen
Wenn Sie versuchen, ein anderes Problem zu beheben, müssen Sie in den Foren für Ihre Distribution nach der passenden Lösung für Ihr Problem suchen. Wenn es sich um eine weit verbreitete Beschwerde handelt, finden Sie bald eine Lösung dafür.
Jetzt, da Sie auf Ihr Dateisystem zugreifen können, können Sie zumindest Ihre Daten auf ein Wechselmedium kopieren. Wenn Sie sich für eine vollständige Neuinstallation entscheiden, gehen keine Daten verloren.
VERWANDT: So kopieren Sie Dateien mit dem Befehl „install“ unter Linux