A máquina virtual Linux inicializa para resgate GRUB
Aplica-se a: ✔️ VMs linux
Observação
O CentOS mencionado neste artigo é uma distribuição Linux e chegará ao fim da vida útil (EOL). Considere seu uso e planeje adequadamente. Para obter mais informações, consulte Diretrizes de fim da vida útil 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
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.
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:
Depois que o problema de resgate do GRUB for resolvido, execute as seguintes ações:
Desmonte a cópia dos sistemas de arquivos da VM de resgate/reparo.
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.Verifique se a VM consegue inicializar examinando o console serial do Azure ou tentando se conectar à VM.
Se toda
/boot
a partição 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.
Reinstale o GRUB e gere novamente o arquivo de configuração do GRUB usando o Reparo Automático do Linux no Azure
Os scripts do ALAR (Reparo Automático do Linux no Azure) fazem parte da extensão de reparo de VM descrita em Usar o ALAR (Reparo Automático do Linux no Azure) para corrigir uma VM do Linux. O ALAR abrange a automação de vários cenários de reparo, incluindo problemas de resgate do GRUB.
Os scripts ALAR usam a extensão repair-button
de reparo para corrigir problemas do GRUB especificando --button-command grubfix
para VMs de Geração 1 ou --button-command efifix
para VMs de Geração 2. Esse parâmetro aciona a recuperação automatizada. Implemente os seguintes comandos para automatizar a correção de erros comuns do GRUB reinstalando o GRUB e regenerando o arquivo de configuração correspondente:
VMs Linux sem UEFI (baseadas em BIOS - 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
VMs do Linux com 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
Importante
Substitua o nome $RGNAME
do grupo de recursos e o nome $VMNAME
da VM de acordo.
O script de VM de reparo, em conjunto com o script ALAR, cria temporariamente um grupo de recursos, uma VM de reparo e uma cópia do disco do sistema operacional da VM afetada. Ele reinstala o GRUB, regenera o arquivo de configuração do GRUB correspondente e, em seguida, troca o disco do sistema operacional da VM quebrada pelo disco fixo copiado. Por fim, o repair-button
script exclui automaticamente o grupo de recursos que contém a VM de reparo temporário.
Reinstale o GRUB e gere novamente o arquivo de configuração do GRUB manualmente
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 .Reinstale o GRUB e gere novamente o arquivo de configuração do GRUB correspondente usando um dos seguintes comandos:
VMs Linux RHEL/CentOS/Oracle 7.x/8.x/9.x 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
VMs Linux RHEL/CentOS/Oracle 7.x/8.x/9.x 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
porcentos
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 Gen1 e Gen2
grub-install /dev/sdX update-grub
Prossiga com a etapa 3 em Solucionar problemas de resgate do GRUB off-line para trocar o disco do sistema operacional.
Erro: sistema de arquivos desconhecido
A captura de tela a seguir mostra a mensagem de erro:
Esse erro pode estar associado a um dos seguintes problemas:
/boot
corrupção do sistema de arquivos.Para resolver esse problema, siga as etapas em Corrigir corrupção do sistema de arquivos /boot.
O carregador de inicialização GRUB aponta para um disco ou partição inválido.
Para resolver esse problema, reinstale o GRUB e gere novamente o arquivo de configuração do GRUB manualmente.
Problemas na tabela de partição de disco do sistema operacional causados por erro humano.
Para resolver esses problemas, siga as etapas em Erro: Nenhuma partição para recriar a
/boot
partição se estiver ausente ou for criada incorretamente.
Corrigir corrupção do sistema de arquivos /boot
Para corrigir /boot
a corrupção do sistema de arquivos, siga estas etapas:
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.
Consulte Solucionar problemas de erros de corrupção do sistema de arquivos no Linux do Azure para resolver os problemas de corrupção na partição correspondente
/boot
.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:
Para resolver esse problema, siga estas etapas:
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 .Inspecione o conteúdo do
/boot
sistema de arquivos e determine o que está faltando.Se o arquivo de configuração do GRUB estiver ausente, reinstale o GRUB e gere novamente o arquivo de configuração do GRUB manualmente.
Verifique se as permissões de arquivo no sistema de
/boot
arquivos estão OK. Você pode comparar as permissões usando outra VM que opera com a mesma versão do Linux.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.
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:
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 .Se você não conseguir montar o sistema de arquivos devido a um erro de corrupção, corrija a corrupção do
/boot
sistema de arquivos /boot.Quando você estiver localizado dentro do chroot, verifique o conteúdo no
/boot/grub2/i386-pc
diretório. Se o conteúdo estiver ausente, copie-o 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
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 Linux RHEL/CentOS/Oracle 7.x/8.x sem UEFI (baseado em BIOS - Gen1).
No processo chroot, reinstale o grub. Substitua
/dev/sd[X]
adequadamente pela cópia correspondente do disco do sistema operacional anexado à VM de reparo/resgate:grub2-install /dev/sd[X]
Certifique-se de que
/etc/resolv.conf
tenha uma entrada DNS válida para resolver o nome do repositório:cat /etc/resolv.conf
Reinstale o kernel:
yum reinstall $(rpm -qa | grep -i kernel)
Crie o arquivo
grub.cfg
:grub2-mkconfig -o /boot/grub2/grub.cfg sed -i 's/hd2/hd0/g' /boot/grub2/grub.cfg
Prossiga com a etapa 3 em Solucionar problemas de resgate do GRUB off-line para trocar o disco do sistema operacional.
Erro: essa partição não existe
A captura de tela a seguir mostra a mensagem de erro:
Este erro ocorre em uma VM baseada em RHEL (Red Hat, Oracle Linux, CentOS) em um dos seguintes cenários:
- A
/boot
partição é excluída por engano. - A
/boot
partição é recriada usando os setores inicial e final errados.
Solução: recriar a partição /boot
Se a /boot
partição estiver ausente, recrie-a seguindo estas etapas:
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.
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
Tabela de partições GPT
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.
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 manualmente para instalá-lo e configurá-lo.
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
Recrie a
/boot
partição de uma VM de resgate/reparo 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
/boot
partição esteja marcada como inicializável usando aa
opção nafdisk
ferramenta, conforme mostrado na saída a seguir: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.
Depois de recriar a partição ausente
/boot
, verifique se o sistema de/boot
arquivos 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"
Se o
/boot
sistema de arquivos não estiver visível depoisblkid
que você recriar a partição, isso significa que os/boot
dados não existem mais. Você precisa recriar o/boot
sistema de arquivos (usando o mesmo UUID e formato de sistema de arquivos que está na entrada) e, em/etc/fstab
/boot
seguida, restaurar seu conteúdo de um backup.
Recrie a partição /boot em sistemas GPT
Recrie a
/boot
partição de uma VM de resgate/reparo 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.
Verifique se o
/boot
sistema de arquivos é detectado pelo sistema usando o seguinte comando:sudo blkid /dev/sdX1
Você deve ser capaz de ver uma entrada para
/dev/sdX1
(a partição ausente/boot
).sudo blkid /dev/sdc1 /dev/sdc1: UUID="<UUID>" BLOCK_SIZE="4096" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="<PARTUUID>"
Se o
/boot
sistema de arquivos não estiver visível depois que você recriar a partição, isso significa que os/boot
dados não existem mais. Você precisa recriar o/boot
sistema de arquivos (usando o mesmo UUID que está na/etc/fstab
/boot
entrada) e, em seguida, restaurar seu conteúdo de um backup.
Erro: símbolo 'grub_efi_get_secure_boot' não encontrado
A captura de tela a seguir mostra a mensagem de erro:
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:
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 entre no ambiente chroot .Execute os seguintes comandos YaST no ambiente chroot:
yast2 bootloader
Desmarque o "x" da opção Habilitar Suporte à Inicialização Segura e selecione F10 para salvar a alteração.
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:
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
/boot
partição ou seu conteúdo estão ausentes.
Para resolver esse erro, siga estas etapas:
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 entre no ambiente chroot .Certifique-se de que o
/etc/default/grub
arquivo de configuração esteja configurado. As imagens do Azure Linux endossadas já possuem as configurações necessárias. Para saber mais, confira os seguintes artigos:Reinstale o GRUB e gere novamente o arquivo de configuração do GRUB manualmente.
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.x e 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.Se toda
/boot
a partição estiver ausente, siga as etapas em Erro: nenhuma partição existe.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.