Virtuele Linux-machine start op met Grub Rescue als gevolg

Van toepassing op: ✔️ Virtuele Linux-machines

Opmerking

CentOS waarnaar in dit artikel wordt verwezen, is een Linux-distributie en bereikt het einde van de levensduur (EOL). Houd rekening met uw gebruik en plan dienovereenkomstig. Zie De richtlijnen voor het einde van de levensduur van CentOS voor meer informatie.

Overzicht

In dit artikel worden meerdere voorwaarden besproken die problemen met GRUB-reddingsacties veroorzaken en richtlijnen voor probleemoplossing bieden.

Tijdens het opstartproces probeert het opstartlaadprogramma de Linux-kernel te vinden en het opstartbeheer af te geven. Als deze overdracht niet kan worden uitgevoerd, wordt de virtuele machine (VM) naar een GRUB rescue-console geleid. De prompt van de GRUB rescue-console wordt niet weergegeven in het Azure seriële consolelogboek, maar kan worden weergegeven in de schermopname Azure diagnostische opstartgegevens.

Probleem met GRUB-reddingsactie identificeren

Schermafbeelding van diagnostische gegevens over opstarten weergeven op de pagina Boot diagnostics van de Azure-portal. Deze schermopname helpt bij het vaststellen van het probleem met GRUB rescue en bepalen of een opstartfout het probleem veroorzaakt.

De volgende tekst is een voorbeeld van een GRUB-reddingsprobleem:

error: file '/boot/grub2/i386-pc/normal.mod' not found.  
Entering rescue mode...  
grub rescue>

Problemen met GRUB rescue offline oplossen

  1. Voor het oplossen van een GRUB-reddingsprobleem is een herstel-/reparatie-VM vereist. Gebruik vm-herstelopdrachten om een herstel-VM te maken waarop een kopie van de besturingssysteemschijf van de betreffende VM is gekoppeld. Mount de kopie van de besturingssysteem bestanden in de herstel-VM met behulp van chroot.

    Opmerking

    U kunt ook handmatig een reddings-VM maken met behulp van de Azure-portal. Zie voor meer informatie Problemen oplossen met een Linux-VM door de OS-schijf aan een herstel-VM te koppelen via het Azure-portaal.

  2. Identificeer GRUB rescue-probleem. Wanneer u een van de volgende GRUB-reddingsproblemen tegenkomt, gaat u naar de bijbehorende sectie om dit op te lossen:

  3. Nadat het probleem met GRUB rescue is opgelost, voert u de volgende acties uit:

    1. Ontkoppel de kopie van de bestandssystemen van de herstel-/reparatie-VM.

    2. Voer de az vm repair restore opdracht uit om de herstelde besturingssysteemschijf te wisselen met de oorspronkelijke besturingssysteemschijf van de virtuele machine. Zie stap 5 in Een virtuele Linux-machine opnieuw maken met behulp van de Azure virtuele-machineherstelopdrachten voor meer informatie.

    3. Controleer of de virtuele machine kan starten door de Azure serieconsole te bekijken of door te proberen verbinding te maken met de virtuele machine.

  4. Als de hele /boot partitie of andere belangrijke inhoud ontbreekt en niet kan worden hersteld, raden we u aan de virtuele machine te herstellen vanuit een back-up. Zie Het herstellen van Azure VM-gegevens in Azure portal voor meer informatie.

Zie de volgende secties voor gedetailleerde fouten, mogelijke oorzaken en oplossingen.

Opmerking

Vervang in de opdrachten die worden genoemd in de volgende secties /dev/sdX door het bijbehorende OS-schijfapparaat.

Installeer GRUB opnieuw en genereer het GRUB-configuratiebestand opnieuw met behulp van Azure Automatisch herstellen van Linux

Azure ALAR-scripts (Linux Auto Repair) maken deel uit van de VM-herstelextensie die wordt beschreven in Use Azure Linux Auto Repair (ALAR) voor het herstellen van een Linux-VM. ALAR behandelt de automatisering van meerdere reparatiescenario's, waaronder GRUB-reddingsproblemen.

De ALAR-scripts gebruiken de reparatie-extensie repair-button om GRUB-problemen op te lossen door op te --button-command grubfix geven voor VM's van de eerste generatie of --button-command efifix voor vm's van de tweede generatie. Met deze parameter wordt het geautomatiseerde herstel geactiveerd. Implementeer de volgende opdrachten om de fix van veelvoorkomende GRUB-fouten te automatiseren door GRUB opnieuw te installeren en het bijbehorende configuratiebestand opnieuw te genereren:

  • Linux-VM's zonder UEFI (BIOS- Gen1):

    az extension add -n vm-repair
    az extension update -n vm-repair
    az vm repair repair-button --button-command 'grubfix' --verbose $RGNAME --name $VMNAME
    
  • Linux-VM's met UEFI (Gen2):

    az extension add -n vm-repair
    az extension update -n vm-repair
    az vm repair repair-button --button-command 'efifix' --verbose $RGNAME --name $VMNAME
    

Belangrijk

Vervang de naam $RGNAME van de resourcegroep en de NAAM van $VMNAME de VM dienovereenkomstig.

Het herstel-VM-script, in combinatie met het ALAR-script, maakt tijdelijk een resourcegroep, een herstel-VM en een kopie van de besturingssysteemschijf van de betreffende VM. Het installeert GRUB opnieuw, genereert het bijbehorende GRUB-configuratiebestand opnieuw en wisselt vervolgens de besturingssysteemschijf van de verbroken VM om met de gekopieerde vaste schijf. Ten slotte wordt met het repair-button script automatisch de resourcegroep verwijderd die de tijdelijke herstel-VM bevat.

Installeer GRUB opnieuw en genereer het GRUB-configuratiebestand handmatig

  1. Controleer of er een herstel-VM is gemaakt. Als deze niet is gemaakt, voert u stap 1 uit in Problemen met GRUB-herstelmodus offline oplossen om de virtuele machine te maken. Koppel alle vereiste bestandssystemen, inclusief / en /boot in de herstel-/reparatie-VM, en voer vervolgens de chroot-omgeving in.

  2. Installeer GRUB opnieuw en genereer het bijbehorende GRUB-configuratiebestand opnieuw met behulp van een van de volgende opdrachten:

    • RHEL/CentOS/Oracle 7.x/8.x/9.x Linux-VM's zonder UEFI (BIOS- 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/9.x Linux-VM's met 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
      

      Als op de VM CentOS wordt uitgevoerd, vervang redhat door centos in het absolute pad van het bestand grub.cfg/boot/efi/EFI/centos/grub.cfg.

    • SLES 12/15 Gen1 en Gen2

      grub2-install /dev/sdX
      grub2-mkconfig -o /boot/grub2/grub.cfg
      sed -i 's/hd2/hd0/g' /boot/grub2/grub.cfg
      
    • Ubuntu Gen1 en Gen2

      grub-install /dev/sdX
      update-grub
      
  3. Ga naar stap 3 in Problemen met GRUB-reddingsactie offline oplossen om de besturingssysteemschijf te wisselen.

Fout: onbekend bestandssysteem

In de volgende schermopname ziet u het foutbericht:

Schermopname van een onbekende bestandssysteemfout.

Deze fout kan worden gekoppeld aan een van de volgende problemen:

Beschadiging van /boot-bestandssysteem oplossen

Voer de volgende stappen uit om beschadiging van het bestandssysteem op te lossen /boot :

  1. Controleer of er een herstel-VM is gemaakt. Als deze niet is gemaakt, voert u stap 1 uit in Problemen met GRUB-herstelmodus offline oplossen om de virtuele machine te maken.

  2. Raadpleeg Troubleshoot file system corruption errors in Azure Linux om de corruptieproblemen in de bijbehorende /boot partitie op te lossen.

  3. Ga naar stap 3 in Problemen met GRUB-reddingsactie offline oplossen om de besturingssysteemschijf te wisselen.

Fout 15: Bestand niet gevonden

In de volgende schermopname ziet u het foutbericht:

Schermopname van grub-fout 15 bestand niet gevonden.

Ga als volgt te werk om dit probleem op te lossen:

  1. Controleer of er een herstel-VM is gemaakt. Als deze niet is gemaakt, voert u stap 1 uit in Problemen met GRUB-herstelmodus offline oplossen om de virtuele machine te maken. Koppel alle vereiste bestandssystemen, inclusief / en /boot in de herstel-/reparatie-VM, en voer vervolgens de chroot-omgeving in.

  2. Controleer de inhoud van het /boot bestandssysteem en bepaal wat er ontbreekt.

  3. Als het GRUB-configuratiebestand ontbreekt, installeert u GRUB opnieuw en genereert u het GRUB-configuratiebestand handmatig opnieuw.

  4. Controleer of de bestandsmachtigingen in het /boot bestandssysteem in orde zijn. U kunt de machtigingen vergelijken met behulp van een andere VIRTUELE machine waarop dezelfde Linux-versie wordt uitgevoerd.

  5. Als de volledige /bootpartitie of andere belangrijke inhoud ontbreekt en niet kan worden hersteld, raden we u aan de virtuele machine te herstellen vanuit een back-up. Zie Het herstellen van Azure VM-gegevens in Azure portal voor meer informatie.

  6. Nadat het probleem is opgelost, gaat u naar stap 3 in Problemen met GRUB-rescue offline oplossen om de OS-schijf te wisselen.

Fout: bestand '/boot/grub2/i386-pc/normal.mod' niet gevonden

In de volgende schermopname ziet u het foutbericht:

Schermopname van grub error normal.mod niet gevonden.

  1. Controleer of er een herstel-VM is gemaakt. Als het niet is aangemaakt, volgt u stap 1 in GRUB-reddingsprobleem offline oplossen om er een aan te maken. Koppel alle vereiste bestandssystemen, inclusief / en /boot in de herstel-/reparatie-VM, en voer vervolgens de chroot-omgeving in.

  2. Als u het /boot bestandssysteem niet kunt koppelen vanwege een beschadiging, herstelt u het /boot-bestandssysteem.

  3. Wanneer u zich in chroot bevindt, controleert u de inhoud in de /boot/grub2/i386-pc map. Als de inhoud ontbreekt, kopieert u de inhoud van /usr/lib/grub/i386-pc. Gebruik hiervoor de volgende opdrachten:

    ls -l /boot/grub2/i386-pc
    cp -rp /usr/lib/grub/i386-pc /boot/grub2
    
  4. Als de inhoud van de /boot partitie leeg is, gebruikt u de volgende opdrachten om deze opnieuw te maken:

    Opmerking

    De volgende stappen zijn van toepassing op RHEL/CentOS/Oracle 7.x/8.x Linux-VM's zonder UEFI (BIOS- Gen1).

    1. Installeer de grub opnieuw onder het chroot-proces. Vervang /dev/sd[X] dienovereenkomstig door de bijbehorende kopie van de besturingssysteemschijf die is gekoppeld aan de herstel-/reddings-VM:

      grub2-install /dev/sd[X]
      
    2. Zorg ervoor dat er voor /etc/resolv.conf een geldige DNS-vermelding is om de naam van de opslagplaats te kunnen resolveren.

      cat /etc/resolv.conf
      
    3. Installeer de kernel opnieuw:

      yum reinstall $(rpm -qa | grep -i kernel)
      
    4. Maak het grub.cfg bestand:

      grub2-mkconfig -o /boot/grub2/grub.cfg
      sed -i 's/hd2/hd0/g' /boot/grub2/grub.cfg
      
  5. Ga verder met stap 3 in Problemen met GRUB-reddingsactie offline oplossen om de besturingssysteemschijf te wisselen.

Fout: geen dergelijke partitie

In de volgende schermopname ziet u het foutbericht:

Schermopname van een grub-fout die geen dergelijke partitie bevat.

Deze fout treedt op op een RHEL-VM (Red Hat, Oracle Linux, CentOS) op in een van de volgende scenario's:

  • De /boot partitie wordt per ongeluk verwijderd.
  • De /boot partitie wordt opnieuw gemaakt met behulp van de verkeerde begin- en eindsectoren.

Oplossing: Maak /bootpartitie opnieuw

Als de partitie ontbreekt, maakt u deze /boot opnieuw door deze stappen uit te voeren:

  1. Controleer of er een herstel-VM is gemaakt. Als deze niet is gemaakt, voert u stap 1 uit in Problemen met GRUB-herstelmodus offline oplossen om de virtuele machine te maken.

  2. Bepaal of de partitietabel is gemaakt als het type dos of GPT met behulp van de volgende opdracht:

    sudo fdisk -l /dev/sdX
    
    • DOS-partitietabel

      Schermopname toont het opstarten met een partitie-indeling van het type DOS.

    • GPT-partitietabel

      Schermopname van opstarten met gpt-type partitietabel.

  3. Als de partitietabel het type dos heeft, maak dan de /boot-partitie opnieuw aan in dos-systemen. Als de partitietabel GPT heeft als partitietabeltype, maakt u de /boot-partitie opnieuw in GPT-systemen.

  4. Zorg ervoor dat het GRUB-opstartlaadprogramma is geïnstalleerd met behulp van de juiste schijf. Volg de stappen in om GRUB opnieuw te installeren en het GRUB-configuratiebestand handmatig opnieuw te genereren om het te installeren en te configureren.

  5. Ga verder met stap 3 in Problemen met GRUB-reddingsactie offline oplossen om de besturingssysteemschijf te wisselen.

Maak /bootpartitie opnieuw in dos-systemen

  1. Maak de /boot partitie opnieuw vanaf een herstel-/herstel-VM met behulp van de volgende opdracht:

    sudo fdisk /dev/sdX
    

    Gebruik de standaardwaarden in de eerste en laatste sectoren en het partitietype (83). Zorg ervoor dat de /boot partitietabel is gemarkeerd als opstartbaar met behulp van de a optie in het fdisk hulpprogramma, zoals wordt weergegeven in de volgende uitvoer:

    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.
    
  2. Nadat u de ontbrekende /boot partitie opnieuw hebt gemaakt, controleert u of het /boot bestandssysteem is gedetecteerd. U moet een vermelding kunnen zien voor /dev/sdX1 (de ontbrekende /opstartpartitie).

    sudo blkid /dev/sdX1
    
    sudo blkid /dev/sdc1
    /dev/sdc1: UUID="<UUID>" TYPE="ext4"
    
  3. Als het /boot bestandssysteem niet zichtbaar is nadat blkid u de partitie opnieuw hebt gemaakt, betekent dit dat de /boot gegevens niet meer bestaan. U moet het /boot bestandssysteem opnieuw maken (met dezelfde UUID- en bestandssysteemindeling die zich in de /etc/fstab/boot vermelding bevindt) en vervolgens de inhoud van een back-up herstellen.

Maak /bootpartitie opnieuw in GPT-systemen

  1. Maak de /boot partitie opnieuw vanaf een herstel-/herstel-VM met behulp van de volgende opdracht:

    sudo gdisk /dev/sdX
    

    Gebruik de standaardwaarden in de eerste en laatste sectoren en het partitietype (8300), zoals wordt weergegeven in de volgende uitvoer:

    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.
    
  2. Controleer of het /boot bestandssysteem door het systeem wordt gedetecteerd met behulp van de volgende opdracht:

    sudo blkid /dev/sdX1
    

    U moet een vermelding voor /dev/sdX1 (de ontbrekende /boot partitie) kunnen zien.

    sudo blkid /dev/sdc1
    /dev/sdc1: UUID="<UUID>" BLOCK_SIZE="4096" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="<PARTUUID>"
    
  3. Als het /boot bestandssysteem niet zichtbaar is nadat u de partitie opnieuw hebt gemaakt, betekent dit dat de /boot gegevens niet meer bestaan. U moet het /boot bestandssysteem opnieuw maken (met behulp van dezelfde UUID die zich in de /etc/fstab/boot vermelding bevindt) en vervolgens de inhoud van een back-up herstellen.

Fout: symbool 'grub_efi_get_secure_boot' is niet gevonden

In de volgende schermopname ziet u het foutbericht:

Schermopname van grub-fout 'grub_efi_get_secure_boot' niet gevonden.

Linux-kernelversie 4.12.14 (die wordt gebruikt in SLES 12 SP5) biedt geen ondersteuning voor de optie Beveiligd opstarten . Als beveiligd opstarten is ingeschakeld tijdens de implementatie van de VM (dat wil gezegd, het veld Beveiligingstype is ingesteld op virtuele machines met vertrouwde start), genereert de virtuele machine de fout beveiligd opstarten via de console wanneer u probeert te beginnen met het gebruik van deze SUSE-kernelversie op een Gen2-VM-installatiekopie.

Oplossing

Voer de volgende stappen uit om de opstartfout op te lossen:

  1. Controleer of er een herstel-VM is gemaakt. Als deze niet is gemaakt, voert u stap 1 uit in Problemen met GRUB-herstelmodus offline oplossen om de virtuele machine te maken. Koppel alle vereiste bestandssystemen, inclusief / en /boot, en voer vervolgens de chroot-omgeving in.

  2. Voer de volgende YaST-opdracht uit in de chroot-omgeving:

    yast2 bootloader
    
  3. Verwijder het vinkje bij de optie Secure Boot Support en selecteer vervolgens F10 om de wijziging op te slaan.

    Schermopname van de instellingen voor het opstarten van het opstartlaadprogramma van YaST2 in de SUSE-console.

  4. Volg stap 3 in Problemen met GRUB-reddingsactie offline oplossen om de besturingssysteemschijf te wisselen.

Andere GRUB-herstelfouten

In de volgende schermopname ziet u het foutbericht:

Schermopname van een ander probleem met grub rescue.

Dit type fout wordt geactiveerd in een van de volgende scenario's:

  • Het GRUB-configuratiebestand ontbreekt.
  • De verkeerde GRUB-configuratie wordt gebruikt.
  • De /boot partitie of de inhoud ervan ontbreekt.

U kunt deze fout als volgt oplossen:

  1. Controleer of er een herstel-VM is gemaakt. Als deze niet is gemaakt, voert u stap 1 uit in Problemen met GRUB-herstelmodus offline oplossen om de virtuele machine te maken. Koppel alle vereiste bestandssystemen, inclusief / en /boot, en voer vervolgens de chroot-omgeving in.

  2. Zorg ervoor dat het /etc/default/grub configuratiebestand is geconfigureerd. De goedgekeurde Azure Linux-afbeeldingen beschikken al over de vereiste configuraties. Zie de volgende artikelen voor meer informatie:

  3. Installeer GRUB opnieuw en genereer het GRUB-configuratiebestand handmatig.

    Opmerking

    Als het ontbrekende bestand is /boot/grub/menu.lst, is deze fout voor oudere versies van het besturingssysteem (RHEL 6.x, Centos 6.x en Ubuntu 14.04). De opdrachten verschillen omdat GRUB versie 1 in plaats daarvan in deze systemen wordt gebruikt. GRUB versie 1 wordt niet behandeld in dit artikel.

  4. Als de volledige /boot partitie ontbreekt, volgt u de stappen in Fout: geen dergelijke partitie.

  5. Nadat het probleem is opgelost, gaat u naar stap 3 in Problemen met GRUB-rescue offline oplossen om de OS-schijf te wisselen.

Volgende stappen

Als de specifieke opstartfout geen GRUB-probleem is, raadpleegt u Troubleshoot Azure Linux Virtual Machines opstartfouten voor verdere probleemoplossingsopties.

Vrijwaring voor informatie van derden

De producten van derden die in dit artikel worden besproken, worden vervaardigd door bedrijven die onafhankelijk zijn van Microsoft. Microsoft maakt geen garantie, impliciet of anderszins, over de prestaties of betrouwbaarheid van deze producten.

Disclaimer voor derde partij contact

Microsoft biedt contactgegevens van derden om u te helpen aanvullende informatie over dit onderwerp te vinden. Deze contactinformatie kan zonder voorafgaande kennisgeving worden gewijzigd. Microsoft garandeert niet de nauwkeurigheid van contactgegevens van derden.