Dela via


Den virtuella Linux-datorn startar till GRUB Rescue

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

Kommentar

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.

    Kommentar

    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.

Kommentar

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

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

  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.

Installera om GRUB och återskapa GRUB-konfigurationsfilen

  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-filens absoluta 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 20.04/22.04/24.04

      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 15: Filen hittades inte

Följande skärmbild visar felmeddelandet:

Skärmbild av grubfel 15-filen hittades inte.

Följ dessa anvisningar för att lösa problemet:

  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.

  4. Kontrollera att filbehörigheterna i filsystemet /boot ä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 filsystemet /boot 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 katalogen /boot/grub2/i386-pc . 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:

    Kommentar

    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. Skapa grub.cfg-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 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 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 den saknade /boot-partitionen kontrollerar du om filsystemet /boot 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. Om filsystemet /boot inte visas i blkid när du har återskapat partitionen innebär det att /boot-data inte längre finns. Du måste återskapa filsystemet /boot (med samma UUID- och filsystemformat som finns i /etc/fstab /boot-posten) och sedan återställa innehållet från en säkerhetskopia.

Återskapa /startpartition i GPT-system

  1. Återskapa partitionen /boot 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. Om filsystemet /boot inte visas när du har skapat partitionen igen innebär det att /boot-data inte längre finns. Du måste återskapa filsystemet /boot (med samma UUID som finns i /etc/fstab /boot-posten) och sedan återställa innehållet 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 /boot, och ange sedan chroot-miljön .

  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.
  • /boot-partitionen eller dess innehåll saknas.

Du åtgärdar felet 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 /boot, och ange sedan chroot-miljön .

  2. Kontrollera att konfigurationsfilen /etc/default/grub har konfigurerats. 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.

    Kommentar

    Om den saknade filen är /boot/grub/menu.lst gäller det 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.