Partager via


La machine virtuelle Linux démarre sur le mode de secours GRUB

S’applique à : ✔️ Machines virtuelles Linux

Note

CentOS référencé dans cet article est une distribution Linux et atteint la fin de vie (EOL). Faites le point sur votre utilisation et organisez-vous en conséquence. Pour plus d’informations, consultez les conseils sur la fin de vie centOS.

Cet article décrit plusieurs conditions qui provoquent des problèmes de sauvetage GRUB et fournit des conseils de dépannage.

Pendant le processus de démarrage, le chargeur de démarrage tente de localiser le noyau Linux et de remettre le contrôle de démarrage. Si ce transfert ne peut pas être effectué, la machine virtuelle entre dans une console de secours GRUB. L’invite de console de secours GRUB n’apparaît pas dans le journal de la console série Azure, mais elle peut être affichée dans la capture d’écran des diagnostics de démarrage Azure.

Identifier le problème de sauvetage GRUB

Affichez une capture d’écran des diagnostics de démarrage dans la page diagnostics de démarrage de la machine virtuelle du Portail Azure. Cette capture d’écran aide à diagnostiquer le problème de sauvetage GRUB et à déterminer si une erreur de démarrage provoque le problème.

Le texte suivant est un exemple de problème de sauvetage GRUB :

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

Résoudre le problème de sauvetage GRUB hors connexion

  1. Pour résoudre un problème de sauvetage GRUB, une machine virtuelle de secours/réparation est requise. Utilisez les commandes de réparation de machine virtuelle pour créer une machine virtuelle de réparation qui a une copie du disque de système d’exploitation de la machine virtuelle affectée attachée. Montez la copie des systèmes de fichiers du système d’exploitation dans la machine virtuelle de réparation à l’aide de chroot.

    Note

    Vous pouvez également créer une machine virtuelle de secours manuellement à l’aide du portail Azure. Pour plus d’informations, consultez l’article Résoudre les problèmes d’une machine virtuelle Linux en attachant le disque du système d’exploitation à une machine virtuelle de récupération à l’aide du portail Azure.

  2. Identifiez le problème de sauvetage GRUB. Lorsque vous rencontrez l’un des problèmes de secours GRUB suivants, accédez à la section correspondante pour la résoudre :

  3. Une fois le problème de sauvetage GRUB résolu, effectuez les actions suivantes :

    1. Démontez la copie des systèmes de fichiers à partir de la machine virtuelle de secours/réparation.

    2. Exécutez la az vm repair restore commande pour échanger le disque du système d’exploitation réparé avec le disque de système d’exploitation d’origine de la machine virtuelle. Pour plus d’informations, consultez l’étape 5 de la réparation d’une machine virtuelle Linux à l’aide des commandes de réparation de machine virtuelle Azure.

    3. Vérifiez si la machine virtuelle peut commencer par examiner la console série Azure ou en essayant de se connecter à la machine virtuelle.

  4. Si l’intégralité de la partition /boot ou d’autres contenus importants sont manquants et ne peuvent pas être récupérés, nous vous recommandons de restaurer la machine virtuelle à partir d’une sauvegarde. Pour plus d’informations, consultez Comment restaurer des données de machine virtuelle Azure dans Portail Azure.

Consultez les sections suivantes pour obtenir des erreurs détaillées, des causes possibles et des solutions.

Note

Dans les commandes mentionnées dans les sections suivantes, remplacez /dev/sdX par le périphérique de disque de système d’exploitation correspondant.

Erreur : système de fichiers inconnu

La capture d’écran suivante montre le message d’erreur :

Capture d’écran de l’erreur du système de fichiers inconnu grub.

Cette erreur peut être associée à l’un des problèmes suivants :

  • /boot file system corruption.

    Pour résoudre ce problème, suivez les étapes décrites dans Correction de l’altération du système de fichiers /boot.

  • Le chargeur de démarrage GRUB pointe vers un disque ou une partition non valide.

    Pour résoudre ce problème, réinstallez GRUB et régénérez le fichier de configuration GRUB.

  • Problèmes de table de partition de disque du système d’exploitation provoqués par une erreur humaine.

    Pour résoudre ces problèmes, suivez les étapes décrites dans l’erreur : aucune partition de ce type avec des recommandations pour recréer la partition /boot s’il est manquant ou créé de manière incorrecte.

Corriger l’altération du système de fichiers /boot

  1. Vérifiez si une machine virtuelle de secours/réparation a été créée. S’il n’a pas été créé, suivez l’étape 1 pour résoudre le problème de sauvetage GRUB hors connexion pour créer la machine virtuelle.

  2. Reportez-vous à Résoudre les erreurs d’altération du système de fichiers dans Azure Linux pour résoudre les problèmes d’altération dans la partition /boot correspondante.

  3. Accédez à l’étape 3 dans Résoudre le problème de secours GRUB hors connexion pour permuter le disque du système d’exploitation.

Réinstaller GRUB et régénérer le fichier de configuration GRUB

  1. Vérifiez si une machine virtuelle de secours/réparation a été créée. S’il n’a pas été créé, suivez l’étape 1 pour résoudre le problème de sauvetage GRUB hors connexion pour créer la machine virtuelle. Montez tous les systèmes de fichiers requis, y compris / et /boot dans la machine virtuelle de secours/réparation, puis entrez l’environnement chroot .

  2. Réinstallez GRUB et régénérez le fichier de configuration GRUB correspondant à l’aide de l’une des commandes suivantes :

    • RHEL/CentOS/Oracle 7.x/8.x Machines virtuelles Linux sans UEFI (BIOS basé sur 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 Machines virtuelles Linux avec 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
      

      Si la machine virtuelle exécute CentOS, remplacez-la redhat centos dans le chemin absolu du fichier grub.cfg /boot/efi/EFI/centos/grub.cfg.

    • SLES 12/15 Gen1 et 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. Accédez à l’étape 3 dans Résoudre le problème de secours GRUB hors connexion pour permuter le disque du système d’exploitation.

Erreur 15 : Fichier introuvable

La capture d’écran suivante montre le message d’erreur :

Capture d’écran de l’erreur grub 15 introuvable.

Pour résoudre ce problème, effectuez les étapes suivantes :

  1. Vérifiez si une machine virtuelle de secours/réparation a été créée. S’il n’a pas été créé, suivez l’étape 1 pour résoudre le problème de sauvetage GRUB hors connexion pour créer la machine virtuelle. Montez tous les systèmes de fichiers requis, y compris / et /boot dans la machine virtuelle de secours/réparation, puis entrez l’environnement chroot .

  2. Inspectez le contenu du système de fichiers /boot et déterminez les éléments manquants.

  3. Si le fichier de configuration GRUB est manquant, réinstallez GRUB et régénérez le fichier de configuration GRUB.

  4. Vérifiez que les autorisations de fichier dans le système de fichiers /boot sont OK. Vous pouvez comparer les autorisations à l’aide d’une autre machine virtuelle exécutant la même version Linux.

  5. Si l’intégralité de la partition /boot ou d’autres contenus importants sont manquants et ne peuvent pas être récupérés, nous vous recommandons de restaurer la machine virtuelle à partir d’une sauvegarde. Pour plus d’informations, consultez Comment restaurer des données de machine virtuelle Azure dans Portail Azure.

  6. Une fois le problème résolu, passez à l’étape 3 dans Résoudre le problème de sauvetage GRUB hors connexion pour échanger le disque du système d’exploitation.

Erreur : fichier '/boot/grub2/i386-pc/normal.mod' introuvable

La capture d’écran suivante montre le message d’erreur :

Capture d’écran de l’erreur grub normal.mod introuvable.

  1. Vérifiez si une machine virtuelle de secours/réparation a été créée. S’il n’a pas été créé, suivez l’étape 1 pour résoudre le problème de sauvetage GRUB hors connexion pour en créer un. Montez tous les systèmes de fichiers requis, y compris / et /boot dans la machine virtuelle de secours/réparation, puis entrez l’environnement chroot .

  2. Si vous ne parvenez pas à monter le système de fichiers /boot en raison d’une erreur d’altération, corrigez l’altération du système de fichiers /boot.

  3. Lorsque vous êtes situé à l’intérieur de chroot, vérifiez le contenu dans le répertoire /boot/grub2/i386-pc . Si le contenu est manquant, copiez le contenu à partir de /usr/lib/grub/i386-pc. Pour ce faire, utilisez les commandes suivantes :

    ls -l /boot/grub2/i386-pc
    cp -rp /usr/lib/grub/i386-pc /boot/grub2
    
  4. Si le contenu de la /boot partition est vide, utilisez les commandes suivantes pour la recréer :

    Note

    Les étapes suivantes s’appliquent aux machines virtuelles RHEL/CentOS/Oracle 7.x/8.x Linux sans UEFI (BIOS basé sur Gen1).

    1. Sous le processus chroot, réinstallez le grub. Remplacez /dev/sd[X] en conséquence par la copie correspondante du disque du système d’exploitation attaché à la machine virtuelle de réparation/sauvetage :

      grub2-install /dev/sd[X]
      
    2. Vérifiez qu’une /etc/resolv.conf entrée DNS valide est présente pour résoudre le nom du référentiel :

      cat /etc/resolv.conf
      
    3. Réinstallez le noyau :

      yum reinstall $(rpm -qa | grep -i kernel)
      
    4. Créez le fichier grub.cfg :

      grub2-mkconfig -o /boot/grub2/grub.cfg
      sed -i 's/hd2/hd0/g' /boot/grub2/grub.cfg
      
  5. Passez à l’étape 3 pour résoudre le problème de sauvetage GRUB hors connexion pour permuter le disque du système d’exploitation.

Erreur : aucune partition de ce type

La capture d’écran suivante montre le message d’erreur :

Capture d’écran de l’erreur grub sans partition de ce type.

Cette erreur se produit sur une machine virtuelle RHEL (Red Hat, Oracle Linux, CentOS) dans l’un des scénarios suivants :

  • La partition /boot est supprimée par erreur.
  • La partition /boot est recréée à l’aide des secteurs de début et de fin incorrects.

Solution : recréer /boot partition

Si la partition /boot est manquante, recréez-la en procédant comme suit :

  1. Vérifiez si une machine virtuelle de secours/réparation a été créée. S’il n’a pas été créé, suivez l’étape 1 pour résoudre le problème de sauvetage GRUB hors connexion pour créer la machine virtuelle.

  2. Identifiez si la table de partition est créée en tant que type dos ou GPT à l’aide de la commande suivante :

    sudo fdisk -l /dev/sdX
    
    • Table de partitions dos

      Capture d’écran montrant le démarrage avec le type de table de partition.

    • Table de partition GPT

      Capture d’écran montrant le démarrage avec la table de partition de type GPT.

  3. Si la table de partition a le type de table de partition, recréez /boot partition dans les systèmes dos. Si la table de partition a GPT comme type de table de partition, recréez /boot partition dans les systèmes GPT.

  4. Assurez-vous que le chargeur de démarrage GRUB est installé à l’aide du disque approprié. Vous pouvez suivre les étapes décrites dans Réinstaller GRUB et régénérer le fichier de configuration GRUB pour l’installer et le configurer.

  5. Passez à l’étape 3 pour résoudre le problème de sauvetage GRUB hors connexion pour permuter le disque du système d’exploitation.

Recréer /boot partition in dos systems

  1. Recréez la partition /boot à l’aide de la commande suivante :

    sudo fdisk /dev/sdX
    

    Utilisez les valeurs par défaut dans les secteurs First et Last , et le type de partition (83). Vérifiez que la table de partition /boot est marquée comme pouvant être démarrée à l’aide de l’option a de l’outil fdisk , comme indiqué dans la sortie suivante :

    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. Après avoir recréé la partition /boot manquante, vérifiez si le système de fichiers /boot est détecté. Vous devez être en mesure de voir une entrée pour /dev/sdX1 (la partition /boot manquante).

    sudo blkid /dev/sdX1
    
    sudo blkid /dev/sdc1
    /dev/sdc1: UUID="<UUID>" TYPE="ext4"
    
  3. Si le système de fichiers /boot n’est pas visible après blkid avoir recréé la partition, cela signifie que les données /boot n’existent plus. Vous devez recréer le système de fichiers /boot (à l’aide du même format UUID et du système de fichiers qui se trouve dans l’entrée /etc/fstab /boot), puis restaurer son contenu à partir d’une sauvegarde.

Recréer /boot partition dans les systèmes GPT

  1. Recréez la partition /boot à l’aide de la commande suivante :

    sudo gdisk /dev/sdX
    

    Utilisez les valeurs par défaut dans les secteurs First et Last , et le type de partition (8300), comme indiqué dans la sortie suivante :

    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. Vérifiez si le système de fichiers /boot est détecté par le système à l’aide de la commande suivante :

    sudo blkid /dev/sdX1
    

    Vous devez être en mesure de voir une entrée pour /dev/sdX1 (la partition /boot manquante).

    sudo blkid /dev/sdc1
    /dev/sdc1: UUID="<UUID>" BLOCK_SIZE="4096" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="<PARTUUID>"
    
  3. Si le système de fichiers /boot n’est pas visible après avoir recréé la partition, cela signifie que les données /boot n’existent plus. Vous devez recréer le système de fichiers /boot (à l’aide du même UUID que dans l’entrée /etc/fstab /boot), puis restaurer son contenu à partir d’une sauvegarde.

Erreur : symbole 'grub_efi_get_secure_boot' introuvable

La capture d’écran suivante montre le message d’erreur :

Capture d’écran de l’erreur grub « grub_efi_get_secure_boot » introuvable.

Le noyau Linux version 4.12.14 (utilisé dans SLES 12 SP5) ne prend pas en charge l’option de démarrage sécurisé. Par conséquent, si le démarrage sécurisé est activé pendant le déploiement de la machine virtuelle (autrement dit, le champ Type de sécurité est défini sur Machines virtuelles de lancement approuvé), la machine virtuelle génère l’erreur de démarrage sécurisée via la console lorsque vous essayez de commencer à utiliser cette version du noyau SUSE sur une image de machine virtuelle Gen2.

Solution

Pour résoudre l’erreur de démarrage, procédez comme suit :

  1. Vérifiez si une machine virtuelle de secours/réparation a été créée. S’il n’a pas été créé, suivez l’étape 1 pour résoudre le problème de sauvetage GRUB hors connexion pour créer la machine virtuelle. Montez tous les systèmes de fichiers requis, y compris / et /boot, puis entrez l’environnement chroot .

  2. Exécutez la commande YaST suivante dans l’environnement chroot :

    yast2 bootloader
    
  3. Désactivez l’option « x » dans l’option Activer la prise en charge du démarrage sécurisé, puis sélectionnez F10 pour enregistrer la modification.

    Capture d’écran des paramètres du chargeur de démarrage YaST2 dans la console SUSE.

  4. Suivez l’étape 3 pour résoudre le problème de sauvetage GRUB hors connexion pour permuter le disque du système d’exploitation.

Autres erreurs de secours GRUB

La capture d’écran suivante montre le message d’erreur :

Capture d’écran d’un autre problème de sauvetage de grub.

Ce type d’erreur est déclenché dans l’un des scénarios suivants :

  • Le fichier de configuration GRUB est manquant.
  • La configuration GRUB incorrecte est utilisée.
  • La partition /boot ou son contenu sont manquants.

Pour résoudre cette erreur, procédez comme suit :

  1. Vérifiez si une machine virtuelle de secours/réparation a été créée. S’il n’a pas été créé, suivez l’étape 1 pour résoudre le problème de sauvetage GRUB hors connexion pour créer la machine virtuelle. Montez tous les systèmes de fichiers requis, y compris / et /boot, puis entrez l’environnement chroot .

  2. Vérifiez que le fichier de configuration /etc/default/grub est configuré. Les images Linux Azure approuvées ont déjà les configurations requises. Pour plus d’informations, consultez les articles suivants :

  3. Réinstallez GRUB et régénérez le fichier de configuration GRUB.

    Note

    Si le fichier manquant est /boot/grub/menu.lst, cette erreur concerne les versions antérieures du système d’exploitation (RHEL 6.x, Centos 6.x et Ubuntu 14.04). Les commandes diffèrent, car GRUB version 1 est utilisée dans ces systèmes à la place. Grub version 1 n’est pas abordée dans cet article.

  4. Si l’intégralité de la partition /boot est manquante, suivez les étapes décrites dans Erreur : aucune partition de ce type.

  5. Une fois le problème résolu, passez à l’étape 3 dans Résoudre le problème de sauvetage GRUB hors connexion pour échanger le disque du système d’exploitation.

Étapes suivantes

Si l’erreur de démarrage spécifique n’est pas un problème de secours GRUB, reportez-vous à Résoudre les erreurs de démarrage d’Azure Linux Machines Virtuelles pour obtenir d’autres options de résolution des problèmes.

Exclusion de responsabilité de tiers

Les produits tiers mentionnés dans le présent article sont fabriqués par des sociétés indépendantes de Microsoft. Microsoft exclut toute garantie, implicite ou autre, concernant les performances ou la fiabilité de ces produits.

Exclusion de responsabilité de contact tierce

Microsoft fournit des informations de contact tierces pour vous aider à trouver des informations supplémentaires à ce sujet. Ces informations de contact peuvent changer sans préavis. Microsoft ne garantit pas l’exactitude des informations de contact tierces.

Contactez-nous pour obtenir de l’aide

Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.