Partilhar via


A máquina virtual Linux inicializa para resgate GRUB

Observação

O CentOS referenciado neste artigo é uma distribuição do Linux e chegará ao EOL (End Of Life). Considere seu uso e planeje de acordo. Para obter mais informações, confira Diretrizes de Fim de Vida do CentOS.

Este artigo discute várias condições que causam problemas de resgate do GRUB e fornece orientação para solução de problemas.

Durante o processo de inicialização, o carregador de inicialização tentará localizar o kernel do Linux e passará o controle de inicialização. Se esse handoff não puder ser executado, a máquina virtual (VM) entra em um console de resgate GRUB. O prompt do console de resgate do GRUB não é mostrado no log do console serial do Azure, mas pode ser mostrado na captura de tela do diagnóstico de inicialização do Azure.

Identifique o problema de resgate do GRUB

Exiba uma captura de tela de diagnóstico de inicialização na página Diagnóstico de inicialização da VM no portal do Azure. Esta captura de tela ajuda a diagnosticar o problema de resgate do GRUB e determinar se um erro de inicialização causa o problema.

O seguinte texto é um exemplo de um problema de resgate de GRUB:

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

Solucionar problemas de resgate do GRUB off-line

  1. Para solucionar um problema de resgate do GRUB, é necessária uma VM de resgate/reparo. Use comandos de reparo vm para criar uma VM de reparo que tenha uma cópia anexada do disco do sistema operacional da VM afetada. Monte a cópia dos sistemas de arquivos do sistema operacional na VM de reparo usando chroot.

    Observação

    Como alternativa, você pode criar uma VM de resgate manualmente usando o portal do Azure. Para obter mais informações, consulte Solucionar problemas de uma VM do Linux anexando o disco do sistema operacional a uma VM de recuperação usando o portal do Azure.

  2. Identifique o problema de resgate do GRUB. Ao encontrar um dos seguintes problemas de resgate do GRUB, vá para a seção correspondente para resolvê-lo:

  3. Depois que o problema de resgate do GRUB for resolvido, execute as seguintes ações:

    1. Desmonte a cópia dos sistemas de arquivos da VM de resgate/reparo.

    2. Execute o comando az vm repair restore para trocar o disco reparado do sistema operacional pelo disco original do sistema operacional da VM. Para obter mais informações, consulte a Etapa 5 em Reparar uma VM do Linux usando os comandos de reparo da Máquina Virtual do Azure.

    3. Verifique se a VM consegue inicializar examinando o console serial do Azure ou tentando se conectar à VM.

  4. Se toda a partição /boot ou outro conteúdo importante estiver ausente e não puder ser recuperado, recomendamos restaurar a VM de um backup. Para obter mais informações, consulte Como restaurar dados de VM do Azure no portal do Azure.

Consulte as seções a seguir para obter erros detalhados, possíveis causas e soluções.

Observação

Nos comandos mencionados nas seções a seguir, substitua /dev/sdX pelo dispositivo de disco do sistema operacional (SO) correspondente.

Erro: sistema de arquivos desconhecido

A captura de tela a seguir mostra a mensagem de erro:

Captura de tela do erro do sistema de arquivos desconhecido do grub.

Esse erro pode estar associado a um dos seguintes problemas:

Corrigir corrupção do sistema de arquivos /boot

  1. Verifique se uma VM de resgate/reparo foi criada. Caso contrário, siga a etapa 1 em Solucionar problemas de resgate do GRUB off-line para criar a VM.

  2. Consulte Solução de erros de corrupção do sistema de arquivos no Azure Linux para resolver os problemas de corrupção na partição /boot correspondente.

  3. Prossiga com a etapa 3 em Solucionar problemas de resgate do GRUB off-line para trocar o disco do sistema operacional.

Reinstale o GRUB e gere novamente o arquivo de configuração do GRUB

  1. Verifique se uma VM de resgate/reparo foi criada. Caso contrário, siga a etapa 1 em Solucionar problemas de resgate do GRUB off-line para criar a VM. Monte todos os sistemas de arquivos necessários, incluindo / e /boot na VM de resgate/reparo e, em seguida, entre no ambiente chroot.

  2. Reinstale o GRUB e gere novamente o arquivo de configuração do GRUB correspondente usando um dos seguintes comandos:

    • RHEL/CentOS/Oracle 7.x/8.x Linux VMs sem UEFI (baseado em 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 VMs com 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
      

      Se a VM estiver executando o CentOS, substitua redhat por centos no caminho absoluto do arquivo grub.cfg/boot/efi/EFI/centos/grub.cfg.

    • SLES 12/15 Gen1 e 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. Prossiga com a etapa 3 em Solucionar problemas de resgate do GRUB off-line para trocar o disco do sistema operacional.

Erro 15: arquivo não encontrado

A captura de tela a seguir mostra a mensagem de erro:

Captura de tela do arquivo de erro 15 do grub não encontrado.

Para resolver esse problema, siga estas etapas:

  1. Verifique se uma VM de resgate/reparo foi criada. Caso contrário, siga a etapa 1 em Solucionar problemas de resgate do GRUB off-line para criar a VM. Monte todos os sistemas de arquivos necessários, incluindo / e /boot na VM de resgate/reparo e, em seguida, entre no ambiente chroot.

  2. Inspecione o conteúdo do sistema de arquivos /boot e determine o que está faltando.

  3. Se o arquivo de configuração do GRUB estiver ausente, reinstale o GRUB e gere novamente o arquivo de configuração do GRUB.

  4. Verifique se as permissões de arquivo no sistema de arquivos /boot estão OK. Você pode comparar as permissões usando outra VM que opera com a mesma versão do Linux.

  5. Se toda a partição /boot ou outro conteúdo importante estiver ausente e não puder ser recuperado, recomendamos restaurar a VM de um backup. Para obter mais informações, consulte Como restaurar dados de VM do Azure no portal do Azure.

  6. Depois que o problema for resolvido, prossiga com a etapa 3 em Solucionar problemas de resgate do GRUB off-line para trocar o disco do sistema operacional.

Erro: arquivo '/boot/grub2/i386-pc/normal.mod' não encontrado

A captura de tela a seguir mostra a mensagem de erro:

Captura de tela do erro grub normal.mod não encontrado.

  1. Verifique se uma VM de resgate/reparo foi criada. Caso contrário, siga a etapa 1 em Solucionar problemas de resgate do GRUB off-line para criar uma. Monte todos os sistemas de arquivos necessários, incluindo / e /boot na VM de resgate/reparo e, em seguida, entre no ambiente chroot.

  2. Se você não conseguir montar o sistema de arquivos /boot devido a um erro de corrupção, corrija a corrupção do sistema de arquivos /boot.

  3. Uma vez localizado dentro do chroot, verifique o conteúdo no diretório /boot/grub2/i386-pc. Se o conteúdo estiver faltando, copie o conteúdo de /usr/lib/grub/i386-pc. Para fazer isso, use os seguintes comandos:

    ls -l /boot/grub2/i386-pc
    cp -rp /usr/lib/grub/i386-pc /boot/grub2
    
  4. Se o conteúdo da /boot partição estiver vazio, use os seguintes comandos para recriá-la:

    Observação

    As etapas a seguir se aplicam a VMs RHEL/CentOS/Oracle 7.x/8.x Linux sem UEFI (baseado em BIOS – Gen1).

    1. No processo chroot, reinstale a grub. Substitua /dev/sd[X] de acordo com a cópia correspondente do disco do sistema operacional anexado à VM de reparo/resgate:

      grub2-install /dev/sd[X]
      
    2. Certifique-se de ter /etc/resolv.conf uma entrada DNS válida para resolve o nome do repositório:

      cat /etc/resolv.conf
      
    3. Reinstale o kernel:

      yum reinstall $(rpm -qa | grep -i kernel)
      
    4. Create o arquivo grub.cfg:

      grub2-mkconfig -o /boot/grub2/grub.cfg
      sed -i 's/hd2/hd0/g' /boot/grub2/grub.cfg
      
  5. Prossiga com a etapa 3 em Solucionar problemas de resgate do GRUB off-line para trocar o disco do sistema operacional.

Erro: não existe tal partição

A captura de tela a seguir mostra a mensagem de erro:

Captura de tela do erro do grub sem tal partição.

Este erro ocorre em uma VM baseada em RHEL (Red Hat, Oracle Linux, CentOS) em um dos seguintes cenários:

  • A partição /boot foi deletada por engano.
  • A partição /boot é recriada usando os setores inicial e final incorretos.

Solução: recriar a partição /boot

Se a partição /boot estiver ausente, recrie-a seguindo estas etapas:

  1. Verifique se uma VM de resgate/reparo foi criada. Caso contrário, siga a etapa 1 em Solucionar problemas de resgate do GRUB off-line para criar a VM.

  2. Identifique se a tabela de partição é criada como o tipo dos ou GPT usando o seguinte comando:

    sudo fdisk -l /dev/sdX
    
    • Tabela de partição Dos

      A captura de tela mostra a inicialização com a tabela de partições do tipo DOS.

    • Tabela de partições GPT

      A captura de tela mostra a inicialização com tabela de partições do tipo GPT.

  3. Se a tabela de partição tiver dos como tipo de tabela de partição, recrie a partição /boot em sistemas DOS. Se a tabela de partição tiver GPT como o tipo de tabela de partição, recrie a partição /boot em sistemas GPT.

  4. Certifique-se de que o carregador de inicialização GRUB esteja instalado usando o disco apropriado. Você pode seguir as etapas em Reinstalar o GRUB e gerar novamente o arquivo de configuração do GRUB para instalá-lo e configurá-lo.

  5. Prossiga com a etapa 3 em Solucionar problemas de resgate do GRUB off-line para trocar o disco do sistema operacional.

Recrie a partição /boot em sistemas DOS

  1. Recrie a partição /boot usando o seguinte comando:

    sudo fdisk /dev/sdX
    

    Use os valores padrão nos setores Primeiro e Último e tipo de partição (83). Certifique-se de que a tabela de partição /boot esteja marcada como inicializável usando a opção a na ferramenta fdisk, conforme mostrado na seguinte saída abaixo:

    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. Depois de recriar a partição /boot ausente, verifique se o sistema de arquivos /boot foi detectado. Você deve conseguir ver uma entrada para /dev/sdX1 (a partição /boot ausente).

    sudo blkid /dev/sdX1
    
    sudo blkid /dev/sdc1
    /dev/sdc1: UUID="<UUID>" TYPE="ext4"
    
  3. Se o sistema de arquivos /boot não estiver visível em blkid após a recriação da partição, isso significa que os dados de /boot já não existem. Você precisará recriar o sistema de arquivos /boot (usando o mesmo UUID e formato de sistema de arquivos da entrada /etc/fstab /boot) e restaurar seu conteúdo do backup.

Recrie a partição /boot em sistemas GPT

  1. Recrie a partição /boot usando o seguinte comando:

    sudo gdisk /dev/sdX
    

    Use os valores padrão nos setores First e Last e partition type (8300), conforme mostrado na seguinte saída:

    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. Verifique se o sistema de arquivos /boot é detectado pelo sistema usando o seguinte comando:

    sudo blkid /dev/sdX1
    

    Você deve conseguir ver uma entrada para /dev/sdX1 (a partição /boot ausente).

    sudo blkid /dev/sdc1
    /dev/sdc1: UUID="<UUID>" BLOCK_SIZE="4096" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="<PARTUUID>"
    
  3. Se o sistema de arquivos /boot não estiver visível após a recriação da partição, isso significa que os dados de /boot já não existem. Você precisará recriar o sistema de arquivos /boot (usando o mesmo UUID que está na entrada /etc/fstab /boot) e, em seguida restaurar seu conteúdo do backup.

Erro: símbolo 'grub_efi_get_secure_boot' não encontrado

A captura de tela a seguir mostra a mensagem de erro:

Captura de tela do erro 'grub_efi_get_secure_boot' não encontrado.

O kernel do Linux versão 4.12.14 (usado no SLES 12 SP5) não dá suporte à opção Inicialização Segura. Portanto, se a inicialização segura estiver habilitada durante a implantação da VM (ou seja, o campo Tipo de segurança será definido como Máquinas virtuais de inicialização confiáveis), a máquina virtual gera o erro de inicialização segura por meio do console quando você tenta iniciar usando essa versão do kernel SUSE em uma imagem de VM Gen2.

Solução

Para resolver esse erro de inicialização, siga estas etapas:

  1. Verifique se uma VM de resgate/reparo foi criada. Caso contrário, siga a etapa 1 em Solucionar problemas de resgate do GRUB off-line para criar a VM. Monte todos os sistemas de arquivos necessários, incluindo / e /boot, e então entre no ambiente chroot.

  2. Execute os seguintes comandos YaST no ambiente chroot:

    yast2 bootloader
    
  3. Desmarque o "x" da opção Habilitar Suporte à Inicialização Segura e selecione F10 para salvar a alteração.

    Captura de tela das configurações do carregador de inicialização do YaST2 no console do SUSE.

  4. Siga com a etapa 3 em Solucionar problemas de resgate do GRUB off-line para trocar o disco do sistema operacional.

Outros erros de resgate do GRUB

A captura de tela a seguir mostra a mensagem de erro:

Captura de tela de outro problema de resgate do grub.

Esse tipo de erro é acionado em um dos seguintes cenários:

  • O arquivo de configuração do GRUB está ausente.
  • A configuração errada do GRUB está sendo usada.
  • A partição /boot ou seu conteúdo está faltando.

Para resolver esse erro, siga estas etapas:

  1. Verifique se uma VM de resgate/reparo foi criada. Caso contrário, siga a etapa 1 em Solucionar problemas de resgate do GRUB off-line para criar a VM. Monte todos os sistemas de arquivos necessários, incluindo / e /boot, e então entre no ambiente chroot.

  2. Certifique-se de que o arquivo de configuração /etc/default/grub esteja configurado. As imagens do Azure Linux endossadas já possuem as configurações necessárias. Para saber mais, confira os seguintes artigos:

  3. Reinstale o GRUB e gere novamente o arquivo de configuração do GRUB.

    Observação

    Se o arquivo ausente for /boot/grub/menu.lst, esse erro é para versões mais antigas do sistema operacional (RHEL 6.x, Centos 6.xe Ubuntu 14.04). Os comandos serão diferentes porque o GRUB versão 1 é usado nesses sistemas. A versão 1 do GRUB não é abordada neste artigo.

  4. Se toda a partição /boot estiver faltando, siga as etapas em Erro: partição inexistente.

  5. Depois que o problema for resolvido, prossiga com a etapa 3 em Solucionar problemas de resgate do GRUB off-line para trocar o disco do sistema operacional.

Próximas etapas

Se o erro de inicialização específico não for um problema de resgate do GRUB, consulte Solucionar problemas de erros de inicialização das Máquinas Virtuais Linux do Azure para obter mais opções de solução de problemas.

Aviso de isenção de responsabilidade para informações de terceiros

Os produtos de terceiros mencionados neste artigo são produzidos por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, implícita ou não, do desempenho ou da confiabilidade desses produtos.

Aviso de isenção de responsabilidade para contatos de terceiros

A Microsoft fornece informações de contato de terceiros para ajudá-lo a encontrar informações adicionais sobre esse tópico. Essas informações de contato podem ser alteradas sem aviso prévio. A Microsoft não garante a precisão das informações de contato de terceiros.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.