Virtueller Linux-Computer startet mit GRUB-Rettung
Gilt für: ✔️ Linux-VMs
Notiz
CentOS, auf das in diesem Artikel verwiesen wird, ist eine Linux-Verteilung und wird End Of Life (EOL) erreichen. Sie sollten sich Ihre Nutzung dieser Distribution ansehen und entsprechend planen. Weitere Informationen finden Sie unter CentOS End Of Life Guidance.
In diesem Artikel werden mehrere Bedingungen erläutert, die GRUB-Rettungsprobleme verursachen und Anleitungen zur Problembehandlung bieten.
Während des Startvorgangs versucht das Startladeprogramm, den Linux-Kernel zu finden und die Startsteuerung zu übergeben. Wenn diese Übergabe nicht ausgeführt werden kann, wechselt der virtuelle Computer (VM) in eine GRUB-Rettungskonsole. Die GRUB-Rettungskonsolenaufforderung wird nicht im seriellen Azure-Konsolenprotokoll angezeigt, kann aber im Screenshot der Azure-Startdiagnose angezeigt werden.
Identifizieren des GRUB-Rettungsproblems
Zeigen Sie einen Screenshot der Startdiagnose auf der Seite "VM-Startdiagnose" des Azure-Portal an. Dieser Screenshot hilft bei der Diagnose des GRUB-Rettungsproblems und bei der Ermittlung, ob ein Startfehler das Problem verursacht.
Der folgende Text ist ein Beispiel für ein GRUB-Rettungsproblem:
error: file '/boot/grub2/i386-pc/normal.mod' not found.
Entering rescue mode...
grub rescue>
Beheben eines GRUB-Rettungsproblems offline
Um ein GRUB-Rettungsproblem zu beheben, ist eine Rettungs-/Reparatur-VM erforderlich. Verwenden Sie vm-Reparaturbefehle , um eine Reparatur-VM zu erstellen, die über eine Kopie des Betriebssystemdatenträgers der betroffenen VM verfügt. Mount the copy of the OS file systems in the repair VM by using chroot.
Notiz
Alternativ können Sie mithilfe des Azure-Portals manuell eine Rettungs-VM erstellen. Weitere Informationen finden Sie unter Beheben von Problemen mit einer Linux-VM durch Hinzufügen des Betriebssystemdatenträgers zu einer Wiederherstellungs-VM im Azure-Portal.
Identifizieren des GRUB-Rettungsproblems. Wenn eines der folgenden GRUB-Rettungsprobleme auftritt, wechseln Sie zum entsprechenden Abschnitt, um es zu beheben:
Führen Sie nach dem Beheben des GRUB-Rettungsproblems die folgenden Aktionen aus:
Heben Sie die Bereitstellung der Kopie der Dateisysteme vom virtuellen Rettungs-/Reparaturcomputer auf.
Führen Sie den
az vm repair restore
Befehl aus, um den reparierten Betriebssystemdatenträger mit dem ursprünglichen Betriebssystemdatenträger der VM auszutauschen. Weitere Informationen finden Sie in Schritt 5 zum Reparieren einer Linux-VM mithilfe der Reparaturbefehle für virtuelle Azure-Computer.Überprüfen Sie, ob der virtuelle Computer gestartet werden kann, indem Sie sich die serielle Azure-Konsole ansehen oder versuchen, eine Verbindung mit dem virtuellen Computer herzustellen.
Wenn die gesamte /boot-Partition oder andere wichtige Inhalte fehlen und nicht wiederhergestellt werden können, empfehlen wir, den virtuellen Computer aus einer Sicherung wiederherzustellen. Weitere Informationen finden Sie unter Wiederherstellen von Azure-VM-Daten in Azure-Portal.
Detaillierte Fehler, mögliche Ursachen und Lösungen finden Sie in den folgenden Abschnitten.
Notiz
Ersetzen Sie in den befehlen, die in den folgenden Abschnitten erwähnt werden, durch das entsprechende Betriebssystemdatenträgergerät.In the commands mentioned in the following sections, replace /dev/sdX
with the corresponding Operating System (OS) disk device.
Fehler: unbekanntes Dateisystem
Der folgende Screenshot zeigt die Fehlermeldung:
Dieser Fehler kann einem der folgenden Probleme zugeordnet sein:
/boot Dateisystembeschädigung.
Um dieses Problem zu beheben, führen Sie die Schritte in der Dateibeschädigung "/boot" aus.
GRUB-Startladeprogramm verweist auf einen ungültigen Datenträger oder eine ungültige Partition.
Um dieses Problem zu beheben, installieren Sie GRUB erneut, und generieren Sie die GRUB-Konfigurationsdatei erneut.
Betriebssystempartitionstabellenprobleme, die durch menschliche Fehler verursacht werden.
Um solche Probleme zu beheben, führen Sie die Schritte unter "Fehler" aus : Keine solche Partition mit Empfehlungen zum erneuten Erstellen der /boot-Partition, wenn sie fehlt oder falsch erstellt wurde.
Beheben von /boot Dateisystembeschädigungen
Überprüfen Sie, ob eine Rettungs-/Reparatur-VM erstellt wurde. Wenn sie nicht erstellt wurde, führen Sie Schritt 1 in der Problembehandlung bei GRUB-Rettungsproblemen offline aus, um den virtuellen Computer zu erstellen.
Informationen zur Problembehandlung von Dateisystembeschädigungsfehlern in Azure Linux , um die Beschädigungsprobleme in der entsprechenden /boot-Partition zu beheben.
Wechseln Sie zu Schritt 3 bei der Problembehandlung des GRUB-Rettungsproblems offline , um den Betriebssystemdatenträger auszutauschen.
Installieren Sie GRUB erneut, und generieren Sie die GRUB-Konfigurationsdatei erneut.
Überprüfen Sie, ob eine Rettungs-/Reparatur-VM erstellt wurde. Wenn sie nicht erstellt wurde, führen Sie Schritt 1 in der Problembehandlung bei GRUB-Rettungsproblemen offline aus, um den virtuellen Computer zu erstellen. Mount all the required file systems, including / and /boot in the rescue/repair VM, and then enter the chroot environment.
Installieren Sie GRUB erneut, und generieren Sie die entsprechende GRUB-Konfigurationsdatei mithilfe eines der folgenden Befehle neu:
RHEL/CentOS/Oracle 7.x/8.x Linux VMs ohne UEFI (BIOS-basiert - Gen1)
grub2-install /dev/sdX grub2-mkconfig -o /boot/grub2/grub.cfg sed -i 's/hd2/hd0/g' /boot/grub2/grub.cfg
RHEL/CentOS/Oracle 7.x/8.x Linux VMs mit UEFI (Gen2)
yum reinstall grub2-efi-x64 shim-x64 grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg sed -i 's/hd2/hd0/g' /boot/efi/EFI/redhat/grub.cfg
Wenn der virtuelle Computer CentOS ausführt, ersetzen Sie
redhat
den absoluten Pfad /boot/efi/EFI/centos/grub.cfg durchcentos
den absoluten Pfad "grub.cfg".SLES 12/15 Gen1 und Gen2
grub2-install /dev/sdX grub2-mkconfig -o /boot/grub2/grub.cfg sed -i 's/hd2/hd0/g' /boot/grub2/grub.cfg
Ubuntu 18.04/20.04
grub-install /dev/sdX update-grub
Wechseln Sie zu Schritt 3 bei der Problembehandlung des GRUB-Rettungsproblems offline , um den Betriebssystemdatenträger auszutauschen.
Fehler 15: Datei nicht gefunden
Der folgende Screenshot zeigt die Fehlermeldung:
Gehen Sie folgendermaßen vor, um das Problem zu beheben:
Überprüfen Sie, ob eine Rettungs-/Reparatur-VM erstellt wurde. Wenn sie nicht erstellt wurde, führen Sie Schritt 1 in der Problembehandlung bei GRUB-Rettungsproblemen offline aus, um den virtuellen Computer zu erstellen. Mount all the required file systems, including / and /boot in the rescue/repair VM, and then enter the chroot environment.
Überprüfen Sie den Inhalt des /boot-Dateisystems, und bestimmen Sie, was fehlt.
Wenn die GRUB-Konfigurationsdatei fehlt, installieren Sie GRUB erneut, und generieren Sie die GRUB-Konfigurationsdatei erneut.
Überprüfen Sie, ob die Dateiberechtigungen im /boot-Dateisystem OK sind. Sie können die Berechtigungen mit einer anderen VM vergleichen, auf der dieselbe Linux-Version ausgeführt wird.
Wenn die gesamte /boot-Partition oder andere wichtige Inhalte fehlen und nicht wiederhergestellt werden können, empfehlen wir, den virtuellen Computer aus einer Sicherung wiederherzustellen. Weitere Informationen finden Sie unter Wiederherstellen von Azure-VM-Daten in Azure-Portal.
Nachdem das Problem behoben wurde, fahren Sie mit Schritt 3 fort, um das GRUB-Rettungsproblem offline zu beheben, um den Betriebssystemdatenträger auszutauschen.
Fehler: Datei '/boot/grub2/i386-pc/normal.mod' nicht gefunden
Der folgende Screenshot zeigt die Fehlermeldung:
Überprüfen Sie, ob eine Rettungs-/Reparatur-VM erstellt wurde. Wenn sie nicht erstellt wurde, führen Sie Schritt 1 in der Problembehandlung beim GRUB-Rettungsproblem offline aus, um ein Problem zu erstellen. Mount all the required file systems, including / and /boot in the rescue/repair VM, and then enter the chroot environment.
Wenn Sie das Dateisystem "/boot" aufgrund eines Beschädigungsfehlers nicht bereitstellen können, beheben Sie die Beschädigung des /boot-Dateisystems.
Wenn Sie sich in chroot befinden, überprüfen Sie den Inhalt im Verzeichnis "/boot/grub2/i386-pc ". Wenn der Inhalt fehlt, kopieren Sie den Inhalt von /usr/lib/grub/i386-pc. Führen Sie zu diesem Zweck die folgenden Befehle aus:
ls -l /boot/grub2/i386-pc cp -rp /usr/lib/grub/i386-pc /boot/grub2
Wenn der Inhalt der
/boot
Partition leer ist, verwenden Sie die folgenden Befehle, um sie erneut zu erstellen:Notiz
Die folgenden Schritte gelten für RHEL/CentOS/Oracle 7.x/8.x Linux-VMs ohne UEFI (BIOS-basiert - Gen1).
Installieren Sie unter dem Chroot-Prozess die Grub erneut. Ersetzen Sie
/dev/sd[X]
entsprechend durch die entsprechende Kopie des Betriebssystemdatenträgers, der an die Reparatur-/Rettungs-VM angefügt ist:grub2-install /dev/sd[X]
Stellen Sie sicher, dass
/etc/resolv.conf
ein gültiger DNS-Eintrag vorhanden ist, um den Namen des Repositorys aufzulösen:cat /etc/resolv.conf
Installieren Sie den Kernel neu:
yum reinstall $(rpm -qa | grep -i kernel)
Erstellen Sie die Datei grub.cfg :
grub2-mkconfig -o /boot/grub2/grub.cfg sed -i 's/hd2/hd0/g' /boot/grub2/grub.cfg
Fahren Sie mit Schritt 3 fort, um das GRUB-Rettungsproblem offline zu beheben, um den Betriebssystemdatenträger auszutauschen.
Fehler: keine solche Partition
Der folgende Screenshot zeigt die Fehlermeldung:
Dieser Fehler tritt auf einer RHEL-basierten VM (Red Hat, Oracle Linux, CentOS) in einem der folgenden Szenarien auf:
- Die Partition "/boot" wird versehentlich gelöscht.
- Die Partition "/boot" wird mithilfe der falschen Start- und End-Sektoren neu erstellt.
Lösung: Neu erstellen /boot partition
Wenn die Partition "/boot" fehlt, erstellen Sie sie erneut, indem Sie die folgenden Schritte ausführen:
Überprüfen Sie, ob eine Rettungs-/Reparatur-VM erstellt wurde. Wenn sie nicht erstellt wurde, führen Sie Schritt 1 in der Problembehandlung bei GRUB-Rettungsproblemen offline aus, um den virtuellen Computer zu erstellen.
Ermitteln Sie, ob die Partitionstabelle mit dem folgenden Befehl als Dos oder GPT-Typ erstellt wird:
sudo fdisk -l /dev/sdX
Dos-Partitionstabelle
GPT-Partitionstabelle
Wenn die Partitionstabelle den Typ der Partitionstabelle aufweist, erstellen Sie die Partitionspartition in dos-Systemen erneut. Wenn die Partitionstabelle GPT als Partitionstabellentyp aufweist, erstellen Sie die /boot-Partition in GPT-Systemen erneut.
Stellen Sie sicher, dass das GRUB-Startladeprogramm mithilfe des richtigen Datenträgers installiert ist. Sie können die Schritte in grub erneut installieren und grub-Konfigurationsdatei neu generieren, um sie zu installieren und zu konfigurieren.
Fahren Sie mit Schritt 3 fort, um das GRUB-Rettungsproblem offline zu beheben, um den Betriebssystemdatenträger auszutauschen.
Erstellen Sie die /boot-Partition in Dos-Systemen erneut.
Erstellen Sie die /boot-Partition erneut, indem Sie den folgenden Befehl verwenden:
sudo fdisk /dev/sdX
Verwenden Sie die Standardwerte in den Sektoren "Erster " und "Zuletzt " und "Partition" (83). Stellen Sie sicher, dass die Partitionstabelle "/boot" mit der
a
Option imfdisk
Tool als startbar markiert ist, wie in der folgenden Ausgabe gezeigt:sudo fdisk /dev/sdc The device presents a logical sector size that is smaller than the physical sector size. Aligning to a physical sector (or optimal I/O) size boundary is recommended, or performance may be impacted. Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p Partition number (1,3,4, default 1): 1 First sector (2048-134217727, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-2099199, default 2099199): Using default value 2099199 Partition 1 of type Linux and of size 1 GiB is set Command (m for help): t Partition number (1,2, default 2): 1 Hex code (type L to list all codes): 83 Changed type of partition 'Linux' to 'Linux' Command (m for help): a Partition number (1,2, default 2): 1 Command (m for help): p Disk /dev/sdc: 68.7 GB, 68719476736 bytes, 134217728 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk label type: dos Disk identifier: 0x000b7179 Device Boot Start End Blocks Id System /dev/sdc1 * 2048 2099199 1048576 83 Linux /dev/sdc2 2099200 134217727 66059264 8e Linux LVM Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table.
Nachdem Sie die fehlende /boot-Partition neu erstellt haben, überprüfen Sie, ob das /boot-Dateisystem erkannt wird. Sie sollten in der Lage sein, einen Eintrag für
/dev/sdX1
(die fehlende /boot partition) anzuzeigen.sudo blkid /dev/sdX1
sudo blkid /dev/sdc1 /dev/sdc1: UUID="<UUID>" TYPE="ext4"
Wenn das Dateisystem "/boot" nach dem erneuten Erstellen der Partition nicht sichtbar
blkid
ist, bedeutet dies, dass die /boot-Daten nicht mehr vorhanden sind. Sie müssen das /boot-Dateisystem (mit dem gleichen UUID- und Dateisystemformat, das sich im Eintrag "/etc/fstab /boot" befindet) neu erstellen und dann den Inhalt aus einer Sicherung wiederherstellen.
Erstellen der /boot-Partition in GPT-Systemen neu
Erstellen Sie die /boot-Partition erneut, indem Sie den folgenden Befehl verwenden:
sudo gdisk /dev/sdX
Verwenden Sie die Standardwerte in den Sektoren "Erster " und "Zuletzt " und "Partitionstyp " (8300), wie in der folgenden Ausgabe gezeigt:
sudo gdisk /dev/sdc GPT fdisk (gdisk) version 1.0.3 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Command (? for help): n Partition number (1-128, default 1): 1 First sector (34-134217694, default = 1026048) or {+-}size{KMGTP}: Last sector (1026048-2050047, default = 2050047) or {+-}size{KMGTP}: Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): Changed type of partition to 'Linux filesystem' Command (? for help): p Disk /dev/sdc: 134217728 sectors, 64.0 GiB Model: Virtual Disk Sector size (logical/physical): 512/4096 bytes Disk identifier (GUID): 6D915856-445A-4513-97E4-C55F2E1AD6C0 Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 134217694 Partitions will be aligned on 2048-sector boundaries Total free space is 6076 sectors (3.0 MiB) Number Start (sector) End (sector) Size Code Name 1 1026048 2050047 500.0 MiB 8300 Linux filesystem 2 2050048 134215679 63.0 GiB 8E00 14 2048 10239 4.0 MiB EF02 15 10240 1024000 495.0 MiB EF00 EFI System Partition Command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): Y OK; writing new GUID partition table (GPT) to /dev/sdc. Warning: The kernel is still using the old partition table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) The operation has completed successfully.
Überprüfen Sie mithilfe des folgenden Befehls, ob das /boot-Dateisystem vom System erkannt wird:
sudo blkid /dev/sdX1
Sie sollten in der Lage sein, einen Eintrag für
/dev/sdX1
(die fehlende /boot partition) anzuzeigen.sudo blkid /dev/sdc1 /dev/sdc1: UUID="<UUID>" BLOCK_SIZE="4096" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="<PARTUUID>"
Wenn das Dateisystem "/boot" nach dem erneuten Erstellen der Partition nicht sichtbar ist, bedeutet dies, dass die /boot-Daten nicht mehr vorhanden sind. Sie müssen das /boot-Dateisystem erneut erstellen (indem Sie dieselbe UUID verwenden, die sich im Eintrag "/etc/fstab /boot" befindet), und dann den Inhalt aus einer Sicherung wiederherstellen.
Fehler: Das Symbol "grub_efi_get_secure_boot" wurde nicht gefunden.
Der folgende Screenshot zeigt die Fehlermeldung:
Die Linux-Kernelversion 4.12.14 (die in SLES 12 SP5 verwendet wird) unterstützt die Option für den sicheren Start nicht. Wenn der sichere Start während der Bereitstellung des virtuellen Computers aktiviert ist (d. h. das Feld "Sicherheitstyp" auf virtuelle Computer mit vertrauenswürdigem Start festgelegt ist), generiert der virtuelle Computer den Sicheren Startfehler über die Konsole, wenn Sie versuchen, diese SUSE-Kernelversion auf einem Gen2-VM-Image zu verwenden.
Lösung
Führen Sie die folgenden Schritte aus, um den Startfehler zu beheben:
Überprüfen Sie, ob eine Rettungs-/Reparatur-VM erstellt wurde. Wenn sie nicht erstellt wurde, führen Sie Schritt 1 in der Problembehandlung bei GRUB-Rettungsproblemen offline aus, um den virtuellen Computer zu erstellen. Mount all the required file systems, including / and /boot, and then enter the chroot environment.
Führen Sie den folgenden YaST-Befehl in der chroot-Umgebung aus:
yast2 bootloader
Deaktivieren Sie das "x" aus der Option "Unterstützung für sicheren Start aktivieren", und wählen Sie dann F10 aus, um die Änderung zu speichern.
Führen Sie Schritt 3 in der Problembehandlung des GRUB-Rettungsproblems offline aus, um den Betriebssystemdatenträger auszutauschen.
Andere GRUB-Rettungsfehler
Der folgende Screenshot zeigt die Fehlermeldung:
Diese Art von Fehler wird in einem der folgenden Szenarien ausgelöst:
- Die GRUB-Konfigurationsdatei fehlt.
- Die falsche GRUB-Konfiguration wird verwendet.
- Die /boot-Partition oder deren Inhalt fehlen.
Um diesen Fehler zu beheben, führen Sie folgende Schritte aus:
Überprüfen Sie, ob eine Rettungs-/Reparatur-VM erstellt wurde. Wenn sie nicht erstellt wurde, führen Sie Schritt 1 in der Problembehandlung bei GRUB-Rettungsproblemen offline aus, um den virtuellen Computer zu erstellen. Mount all the required file systems, including / and /boot, and then enter the chroot environment.
Stellen Sie sicher, dass die Konfigurationsdatei "/etc/default/grub " konfiguriert ist. Die unterstützten Azure Linux-Images verfügen bereits über die erforderlichen Konfigurationen. Weitere Informationen finden Sie in den folgenden Artikeln:
Installieren Sie GRUB erneut, und generieren Sie die GRUB-Konfigurationsdatei erneut.
Notiz
Wenn die fehlende Datei "/boot/grub/menu.lst" lautet, gilt dieser Fehler für ältere Betriebssystemversionen (RHEL 6.x, Centos 6.x und Ubuntu 14.04). Die Befehle unterscheiden sich, da GRUB Version 1 stattdessen in diesen Systemen verwendet wird. GRUB Version 1 wird in diesem Artikel nicht behandelt.
Wenn die gesamte /boot-Partition fehlt, führen Sie die Schritte im Fehler aus: keine solche Partition.
Nachdem das Problem behoben wurde, fahren Sie mit Schritt 3 fort, um das GRUB-Rettungsproblem offline zu beheben, um den Betriebssystemdatenträger auszutauschen.
Nächste Schritte
Wenn der spezifische Startfehler kein GRUB-Rettungsproblem ist, finden Sie informationen zur Problembehandlung bei Startfehlern bei virtuellen Azure Linux-Computern für weitere Problembehandlungsoptionen.
Informationen zum Haftungsausschluss von Drittanbietern
Die in diesem Artikel genannten Drittanbieterprodukte stammen von Herstellern, die von Microsoft unabhängig sind. Microsoft gewährt keine implizite oder sonstige Garantie in Bezug auf die Leistung oder Zuverlässigkeit dieser Produkte.
Haftungsausschluss für Kontaktinformationen von Drittanbietern
Microsoft stellt Kontaktinformationen von Drittanbietern bereit, damit Sie weitere Informationen zu diesem Thema einholen können. Diese Kontaktinformationen können ohne vorherige Ankündigung geändert werden. Microsoft übernimmt keine Garantie für die Richtigkeit dieser Kontaktinformationen von Drittanbietern.
Kontaktieren Sie uns für Hilfe
Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.