Dela via


Den virtuella Linux-datorn startar till GRUB Rescue

Gäller för: ✔️ Virtuella Linux-datorer

Obs!

CentOS som refereras i den här artikeln är en Linux-distribution och kommer att nå End Of Life (EOL). Överväg att använda och planera i enlighet med detta. Mer information finns i CentOS End Of Life-vägledning.

Den här artikeln beskriver flera villkor som orsakar GRUB-räddningsproblem och innehåller felsökningsvägledning.

Under startprocessen försöker startinläsaren hitta Linux-kerneln och lämna över startkontrollen. Om den här överlämningen inte kan utföras anger den virtuella datorn (VM) en GRUB-återställningskonsol. GRUB-kommandotolken för återställningskonsolen visas inte i Azure-seriekonsolloggen, men den kan visas i skärmbilden av Azure-startdiagnostik.

Identifiera grub-räddningsproblem

Visa en skärmbild av startdiagnostik på sidan Startdiagnostik för den virtuella datorn i Azure Portal. Den här skärmbilden hjälper dig att diagnostisera GRUB-räddningsproblemet och avgöra om ett startfel orsakar problemet.

Följande text är ett exempel på ett GRUB-räddningsproblem:

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

Felsöka grub-räddningsproblem offline

  1. För att felsöka ett GRUB-räddningsproblem krävs en virtuell dator för räddning/reparation. Använd vm-reparationskommandon för att skapa en reparations-VM som har en kopia av den berörda virtuella datorns OS-disk ansluten. Montera kopian av OS-filsystemen på den virtuella reparationsdatorn med hjälp av chroot.

    Obs!

    Du kan också skapa en virtuell räddningsdator manuellt med hjälp av Azure Portal. Mer information finns i Felsöka en virtuell Linux-dator genom att ansluta OS-disken till en återställnings-VM med hjälp av Azure Portal.

  2. Identifiera grub-räddningsproblem. När du stöter på något av följande GRUB-räddningsproblem går du till motsvarande avsnitt för att lösa det:

  3. När grub-räddningsproblemet har lösts utför du följande åtgärder:

    1. Demontera kopian av filsystemen från den virtuella datorn för räddning/reparation.

    2. az vm repair restore Kör kommandot för att växla den reparerade OS-disken med den virtuella datorns ursprungliga OS-disk. Mer information finns i Steg 5 i Reparera en virtuell Linux-dator med hjälp av reparationskommandona för Azure Virtual Machine.

    3. Kontrollera om den virtuella datorn kan starta genom att ta en titt på Azure-seriekonsolen eller genom att försöka ansluta till den virtuella datorn.

  4. Om hela /boot partitionen eller annat viktigt innehåll saknas och inte kan återställas rekommenderar vi att du återställer den virtuella datorn från en säkerhetskopia. Mer information finns i Så här återställer du data för virtuella Azure-datorer i Azure Portal.

I följande avsnitt finns detaljerade fel, möjliga orsaker och lösningar.

Obs!

I kommandona som nämns i följande avsnitt ersätter du /dev/sdX med motsvarande operativsystemdiskenhet (OS).

Installera om GRUB och återskapa GRUB-konfigurationsfilen med hjälp av automatisk reparation av Azure Linux

Azure Linux-skript för automatisk reparation (ALAR) är en del av reparationstillägget för virtuella datorer som beskrivs i Använda Azure Linux Auto Repair (ALAR) för att åtgärda en virtuell Linux-dator. ALAR omfattar automatisering av flera reparationsscenarier, inklusive GRUB-räddningsproblem.

ALAR-skripten använder reparationstillägget repair-button för att åtgärda GRUB-problem genom att --button-command grubfix ange för virtuella datorer i generation 1 eller --button-command efifix för virtuella datorer i generation 2. Den här parametern utlöser den automatiserade återställningen. Implementera följande kommandon för att automatisera korrigeringen av vanliga GRUB-fel genom att installera om GRUB och återskapa motsvarande konfigurationsfil:

  • Virtuella Linux-datorer utan UEFI (BIOS-baserad – 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
    
  • Virtuella Linux-datorer med 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
    

Viktigt!

Ersätt resursgruppens namn $RGNAME och VM-namn $VMNAME i enlighet med detta.

Skriptet för den virtuella reparationsdatorn, tillsammans med ALAR-skriptet, skapar tillfälligt en resursgrupp, en virtuell reparationsdator och en kopia av den berörda virtuella datorns OS-disk. Den installerar om GRUB, återskapar motsvarande GRUB-konfigurationsfil och växlar sedan den trasiga virtuella datorns OS-disk med den kopierade fasta disken. Slutligen tar skriptet repair-button automatiskt bort resursgruppen som innehåller den temporära reparationsdatorn.

Installera om GRUB och återskapa GRUB-konfigurationsfilen manuellt

  1. Kontrollera om en virtuell dator för räddning/reparation har skapats. Om den inte har skapats följer du steg 1 i Felsöka grub-räddningsproblem offline för att skapa den virtuella datorn. Montera alla nödvändiga filsystem, inklusive / och /boot i den virtuella datorn för räddning/reparation, och ange sedan chroot-miljön .

  2. Installera om GRUB och återskapa motsvarande GRUB-konfigurationsfil med något av följande kommandon:

    • RHEL/CentOS/Oracle 7.x/8.x/9.x Virtuella Linux-datorer utan UEFI (BIOS-baserad – 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 Virtuella Linux-datorer med 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
      

      Om den virtuella datorn kör CentOS ersätter du redhat med centos i grub.cfg-filensabsoluta sökväg /boot/efi/EFI/centos/grub.cfg.

    • SLES 12/15 Gen1 och Gen2

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

      grub-install /dev/sdX
      update-grub
      
  3. Gå till steg 3 i Felsöka GRUB-räddningsproblem offline för att växla OS-disken.

Fel: okänt filsystem

Följande skärmbild visar felmeddelandet:

Skärmbild av grub okänt filsystemfel.

Det här felet kan vara kopplat till något av följande problem:

Åtgärda skadade /boot-filsystem

Följ dessa steg för att åtgärda /boot fel i filsystemet:

  1. Kontrollera om en virtuell dator för räddning/reparation har skapats. Om den inte har skapats följer du steg 1 i Felsöka grub-räddningsproblem offline för att skapa den virtuella datorn.

  2. Se Felsöka fel med skadade filsystem i Azure Linux för att lösa problemen med skadade filer i motsvarande /boot partition.

  3. Gå till steg 3 i Felsöka GRUB-räddningsproblem offline för att växla OS-disken.

Fel 15: Filen hittades inte

Följande skärmbild visar felmeddelandet:

Skärmbild av grubfel 15-filen hittades inte.

Lös problemet så här:

  1. Kontrollera om en virtuell dator för räddning/reparation har skapats. Om den inte har skapats följer du steg 1 i Felsöka grub-räddningsproblem offline för att skapa den virtuella datorn. Montera alla nödvändiga filsystem, inklusive / och /boot i den virtuella datorn för räddning/reparation, och ange sedan chroot-miljön .

  2. Granska innehållet i /boot filsystemet och ta reda på vad som saknas.

  3. Om GRUB-konfigurationsfilen saknas installerar du om GRUB och återskapar GRUB-konfigurationsfilen manuellt.

  4. Kontrollera att filbehörigheterna i /boot filsystemet är OK. Du kan jämföra behörigheterna med hjälp av en annan virtuell dator som kör samma Linux-version.

  5. Om hela /boot-partitionen eller annat viktigt innehåll saknas och inte kan återställas rekommenderar vi att du återställer den virtuella datorn från en säkerhetskopia. Mer information finns i Så här återställer du data för virtuella Azure-datorer i Azure Portal.

  6. När problemet har lösts går du till steg 3 i Felsöka GRUB-räddningsproblem offline för att växla os-disken.

Fel: filen '/boot/grub2/i386-pc/normal.mod' hittades inte

Följande skärmbild visar felmeddelandet:

Skärmbild av grubfelet normal.mod hittades inte.

  1. Kontrollera om en virtuell dator för räddning/reparation har skapats. Om den inte har skapats följer du steg 1 i Felsöka grub-räddningsproblem offline för att skapa ett. Montera alla nödvändiga filsystem, inklusive / och /boot i den virtuella datorn för räddning/reparation, och ange sedan chroot-miljön .

  2. Om du inte kan montera /boot filsystemet på grund av ett fel vid skada kan du åtgärda /boot-filsystemets skada.

  3. När du befinner dig i chroot kontrollerar du innehållet i /boot/grub2/i386-pc katalogen. Om innehållet saknas kopierar du innehållet från /usr/lib/grub/i386-pc. Gör detta genom att använda följande kommandon:

    ls -l /boot/grub2/i386-pc
    cp -rp /usr/lib/grub/i386-pc /boot/grub2
    
  4. Om innehållet i partitionen /boot är tomt använder du följande kommandon för att återskapa det:

    Obs!

    Följande steg gäller för virtuella DATORER med RHEL/CentOS/Oracle 7.x/8.x Linux utan UEFI (BIOS-baserad – Gen1).

    1. Installera om grub under chroot-processen. Ersätt /dev/sd[X] därefter med motsvarande kopia av os-disken som är ansluten till den virtuella reparations-/räddningsdatorn:

      grub2-install /dev/sd[X]
      
    2. Kontrollera att /etc/resolv.conf det finns en giltig DNS-post för att matcha namnet på lagringsplatsen:

      cat /etc/resolv.conf
      
    3. Installera om kerneln:

      yum reinstall $(rpm -qa | grep -i kernel)
      
    4. grub.cfg Skapa filen:

      grub2-mkconfig -o /boot/grub2/grub.cfg
      sed -i 's/hd2/hd0/g' /boot/grub2/grub.cfg
      
  5. Fortsätt med steg 3 i Felsöka GRUB-räddningsproblem offline för att växla OS-disken.

Fel: ingen sådan partition

Följande skärmbild visar felmeddelandet:

Skärmbild av grub-fel ingen sådan partition.

Det här felet uppstår på en RHEL-baserad virtuell dator (Red Hat, Oracle Linux, CentOS) i något av följande scenarier:

  • Partitionen /boot tas bort av misstag.
  • Partitionen /boot återskapas med hjälp av fel start- och slutsektorer.

Lösning: Återskapa /startpartition

Om partitionen /boot saknas skapar du den igen genom att följa dessa steg:

  1. Kontrollera om en virtuell dator för räddning/reparation har skapats. Om den inte har skapats följer du steg 1 i Felsöka grub-räddningsproblem offline för att skapa den virtuella datorn.

  2. Identifiera om partitionstabellen skapas som dos - eller GPT-typ med hjälp av följande kommando:

    sudo fdisk -l /dev/sdX
    
    • Dos-partitionstabell

      Skärmbild som visar start med dos-typpartitionstabell.

    • GPT-partitionstabell

      Skärmbild som visar start med GPT-typpartitionstabell.

  3. Om partitionstabellen har dos som partitionstabelltyp återskapar du /boot partition i dos-system. Om partitionstabellen har GPT som partitionstabelltyp återskapar du /boot partition i GPT-system.

  4. Kontrollera att GRUB-startinläsaren är installerad med rätt disk. Du kan följa stegen i Installera om GRUB och återskapa GRUB-konfigurationsfilen manuellt för att få den installerad och konfigurerad.

  5. Fortsätt med steg 3 i Felsöka GRUB-räddningsproblem offline för att växla OS-disken.

Återskapa /startpartition i dos-system

  1. Återskapa partitionen /boot från en virtuell dator för räddning/reparation med hjälp av följande kommando:

    sudo fdisk /dev/sdX
    

    Använd standardvärdena i sektorerna Första och Sista och partitionstyp (83). Kontrollera att partitionstabellen /boot är markerad som startbar med hjälp a av alternativet i fdisk verktyget, enligt följande utdata:

    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. När du har återskapat partitionen som saknas /boot kontrollerar du om /boot filsystemet har identifierats. Du bör kunna se en post för /dev/sdX1 (den saknade /boot-partitionen).

    sudo blkid /dev/sdX1
    
    sudo blkid /dev/sdc1
    /dev/sdc1: UUID="<UUID>" TYPE="ext4"
    
  3. /boot Om filsystemet inte visas i blkid när du har skapat partitionen igen innebär det att /boot data inte längre finns. Du måste återskapa /boot filsystemet (med samma UUID- och filsystemformat som finns i /etc/fstab/boot posten) och sedan återställa dess innehåll från en säkerhetskopia.

Återskapa /startpartition i GPT-system

  1. Återskapa partitionen /boot från en virtuell dator för räddning/reparation med hjälp av följande kommando:

    sudo gdisk /dev/sdX
    

    Använd standardvärdena i sektorerna Första och Sista och partitionstyp (8300), enligt följande utdata:

    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. Kontrollera om /boot filsystemet identifieras av systemet med hjälp av följande kommando:

    sudo blkid /dev/sdX1
    

    Du bör kunna se en post för /dev/sdX1 (den saknade /boot partitionen).

    sudo blkid /dev/sdc1
    /dev/sdc1: UUID="<UUID>" BLOCK_SIZE="4096" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="<PARTUUID>"
    
  3. /boot Om filsystemet inte visas när du har skapat partitionen igen innebär det att /boot data inte längre finns. Du måste återskapa /boot filsystemet (med samma UUID som finns i /etc/fstab/boot posten) och sedan återställa dess innehåll från en säkerhetskopia.

Fel: symbolen "grub_efi_get_secure_boot" hittades inte

Följande skärmbild visar felmeddelandet:

Skärmbild av grub-felet

Linux-kernelversionen 4.12.14 (som används i SLES 12 SP5) stöder inte alternativet Säker start . Om säker start är aktiverad under distributionen av den virtuella datorn (dvs . fältet Säkerhetstyp är inställt på Betrodda virtuella startdatorer) genererar den virtuella datorn det säkra startfelet via konsolen när du försöker starta med den här SUSE-kernelversionen på en gen2 VM-avbildning.

Lösning

Lös startfelet genom att följa dessa steg:

  1. Kontrollera om en virtuell dator för räddning/reparation har skapats. Om den inte har skapats följer du steg 1 i Felsöka grub-räddningsproblem offline för att skapa den virtuella datorn. Montera alla nödvändiga filsystem, inklusive / och , och ange sedan chroot-miljön/boot.

  2. Kör följande YaST-kommando i chroot-miljön:

    yast2 bootloader
    
  3. Ta bort "x" från alternativet Aktivera stöd för säker start och välj sedan F10 för att spara ändringen.

    Skärmbild av inställningarna för YaST2-startinläsaren i SUSE-konsolen.

  4. Följ steg 3 i Felsöka GRUB-räddningsproblem offline för att växla OS-disken.

Andra GRUB-räddningsfel

Följande skärmbild visar felmeddelandet:

Skärmbild av ett annat grub rescue-problem.

Den här typen av fel utlöses i något av följande scenarier:

  • GRUB-konfigurationsfilen saknas.
  • Fel GRUB-konfiguration används.
  • Partitionen /boot eller dess innehåll saknas.

Du kan lösa det här felet genom att följa de här stegen:

  1. Kontrollera om en virtuell dator för räddning/reparation har skapats. Om den inte har skapats följer du steg 1 i Felsöka grub-räddningsproblem offline för att skapa den virtuella datorn. Montera alla nödvändiga filsystem, inklusive / och , och ange sedan chroot-miljön/boot.

  2. Kontrollera att konfigurationsfilen /etc/default/grub är konfigurerad. De godkända Azure Linux-avbildningarna har redan de konfigurationer som krävs. Mer information finns i följande artiklar:

  3. Installera om GRUB och återskapa GRUB-konfigurationsfilen manuellt.

    Obs!

    Om filen saknas är /boot/grub/menu.lstdet här felet för äldre OS-versioner (RHEL 6.x, Centos 6.x och Ubuntu 14.04). Kommandona skiljer sig eftersom GRUB version 1 används i dessa system i stället. GRUB version 1 beskrivs inte i den här artikeln.

  4. Om hela /boot partitionen saknas följer du stegen i Fel: ingen sådan partition.

  5. När problemet har lösts går du till steg 3 i Felsöka GRUB-räddningsproblem offline för att växla os-disken.

Nästa steg

Om det specifika startfelet inte är ett GRUB-återställningsproblem kan du läsa Felsöka startfel för virtuella Azure Linux-datorer för ytterligare felsökningsalternativ.

Ansvarsfriskrivning för information från tredje part

De produkter från andra tillverkare som diskuteras i denna artikel tillverkas oberoende av Microsoft. Produkternas funktion eller tillförlitlighet kan därför inte garanteras.

Ansvarsfriskrivning för tredje part

Microsoft tillhandahåller kontaktinformation från tredje part som hjälper dig att hitta ytterligare information om det här ämnet. Denna kontaktinformation kan ändras utan föregående meddelande. Microsoft garanterar inte att kontaktinformation från tredje part är korrekt.

Kontakta oss för att få hjälp

Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.