Delen via


Virtuele Linux-machine start op met Grub Rescue als gevolg

Van toepassing op: ✔️ Virtuele Linux-machines

Notitie

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.

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, voert de virtuele machine (VM) een GRUB rescue-console in. De prompt van de GRUB rescue-console wordt niet weergegeven in het seriële consolelogboek van Azure, maar kan worden weergegeven in de schermopname van diagnostische gegevens over Azure-opstartgegevens.

Probleem met GRUB-reddingsactie identificeren

Bekijk een schermopname van diagnostische gegevens over opstarten op de vm-opstartdiagnose van 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. Koppel de kopie van de besturingssysteembestandssystemen in de herstel-VM met behulp van chroot.

  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-/herstel-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 Het herstellen van een Virtuele Linux-machine met behulp van de herstelopdrachten voor virtuele Azure-machines voor meer informatie.

    3. Controleer of de VIRTUELE machine kan beginnen met het bekijken van de seriële Console van Azure of door verbinding te maken met de virtuele machine.

  4. 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 Azure VM-gegevens herstellen in Azure Portal voor meer informatie.

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

Notitie

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

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

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

  2. Raadpleeg Troubleshoot file system corruption errors in Azure Linux to resolve the corruption issues in the corresponding /boot partition. (Problemen met beschadigde bestanden in het bestandssysteem in Azure Linux oplossen) om de beschadigingsproblemen 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.

Grub opnieuw installeren en GRUB-configuratiebestand opnieuw genereren

  1. Controleer of er een herstel-VM is gemaakt. Als deze niet is gemaakt, volgt u stap 1 in Problemen met GRUB-reddingsactie offline oplossen om de VIRTUELE machine te maken. Koppel alle vereiste bestandssystemen, inclusief/en/boot in de herstel-/herstel-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 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 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, vervangt redhat u dit centos door in het bestand grub.cfg absolute pad /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 18.04/20.04

      grub-install /dev/sdX
      update-grub
      
  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 error 15 file not found.

Volg deze stappen om dit probleem op te lossen:

  1. Controleer of er een herstel-VM is gemaakt. Als deze niet is gemaakt, volgt u stap 1 in Problemen met GRUB-reddingsactie offline oplossen om de VIRTUELE machine te maken. Koppel alle vereiste bestandssystemen, inclusief/en /boot in de herstel-/herstel-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 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 Azure VM-gegevens herstellen in Azure Portal voor meer informatie.

  6. Nadat het probleem is opgelost, gaat u offline naar stap 3 in Problemen met GRUB-redding oplossen om de besturingssysteemschijf 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 gemaakt, volgt u stap 1 in Problemen met GRUB-reddingsproblemen offline oplossen om er een te maken. Koppel alle vereiste bestandssystemen, inclusief/en/boot in de herstel-/herstel-VM, en voer vervolgens de chroot-omgeving in.

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

  3. Wanneer u zich in chroot bevindt, controleert u de inhoud in de map /boot/grub2/i386-pc . 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:

    Notitie

    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 /etc/resolv.conf er een geldige DNS-vermelding is om de naam van de opslagplaats om te zetten:

      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 /boot-partitie ontbreekt, maakt u deze opnieuw door de volgende stappen uit te voeren:

  1. Controleer of er een herstel-VM is gemaakt. Als deze niet is gemaakt, volgt u stap 1 in Problemen met GRUB-reddingsactie 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
    
    • Partitietabel Dos

      Schermopname van opstarten met de partitietabel dos.

    • GPT-partitietabel

      Schermopname van opstarten met gpt-type partitietabel.

  3. Als de partitietabel doet als het partitietabeltype, maakt u de /boot-partitie opnieuw 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. U kunt de stappen in GRUB opnieuw installeren en GRUB-configuratiebestand opnieuw 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 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 partitietabel /boot 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 behulp van dezelfde UUID- en bestandssysteemindeling die zich in de vermelding /etc/fstab /boot) bevindt en vervolgens de inhoud van een back-up herstellen.

Maak /bootpartitie opnieuw in GPT-systemen

  1. Maak de /boot-partitie opnieuw 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 kunnen zien voor /dev/sdX1 (de ontbrekende /opstartpartitie).

    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 vermelding /etc/fstab /boot) 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, volgt u stap 1 in Problemen met GRUB-reddingsactie 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. Schakel de x uit de optie Secure Boot Support inschakelen 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-reddingsfouten

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.

Om deze fout op te lossen, volgt u deze stappen:

  1. Controleer of er een herstel-VM is gemaakt. Als deze niet is gemaakt, volgt u stap 1 in Problemen met GRUB-reddingsactie 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 configuratiebestand /etc/default/grub is geconfigureerd. De goedgekeurde Azure Linux-installatiekopieën hebben al de vereiste configuraties. Raadpleeg voor meer informatie de volgende artikelen:

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

    Notitie

    Als het ontbrekende bestand /boot/grub/menu.lst is, 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 offline naar stap 3 in Problemen met GRUB-redding oplossen om de besturingssysteemschijf te wisselen.

Volgende stappen

Als de specifieke opstartfout geen GRUB-reddingsprobleem is, raadpleegt u Opstartfouten in Virtuele Linux-machines in Azure oplossen voor verdere probleemoplossingsopties.

Disclaimerinformatie van derden

De producten van derden die in dit artikel worden vermeld, worden vervaardigd door bedrijven die onafhankelijk zijn van Microsoft. Microsoft verleent dan ook geen enkele garantie, impliciet noch anderszins, omtrent de prestaties of de betrouwbaarheid van deze producten.

Vrijwaring van contactpersonen van derden

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

Contact met ons opnemen voor ondersteuning

Als u vragen hebt of hulp nodig hebt, maakt u een ondersteuningsaanvraag of stelt u ondersteuning voor de Azure-community. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.