A máquina virtual Linux do Azure falha ao inicializar e entra no shell de emergência dracut
Aplica-se a: ✔️ VMs do 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 fornece soluções para um problema em que uma VM (máquina virtual) Linux do Azure não pode ser inicializada porque o sistema de arquivos do sistema operacional (SO) não pode ser acessado do RAMdisk. A VM pousa no shell de emergência dracut.
Pré-requisitos
Verifique se o console serial está habilitado e funcional na VM do Linux.
Como identificar o problema de inicialização dracut
Para identificar um problema de inicialização dracut, use o portal do Azure para exibir a saída de log do console serial da VM no painel de diagnóstico de inicialização, no painel de console serial ou use a CLI AZ.
Todas as VMs com o problema de inicialização chegarão ao shell de emergência dracut ou initramfs e aparecerão no final do log do console serial:
RHEL/CentOS/SLES/Oracle Linux:
[ 201.935612] dracut-initqueue[455]: Warning: dracut-initqueue timeout - starting timeout scripts [ 201.941153] dracut-initqueue[455]: Warning: Could not boot. Starting Setup Virtual Console... [[0;32m OK [0m] Started Setup Virtual Console. Starting Dracut Emergency Shell... Warning: /dev/mapper/rootvg-rootlv does not exist Generating "/run/initramfs/rdsosreport.txt" Entering emergency mode. Exit the shell to continue. Type "journalctl" to view system logs. You might want to save "/run/initramfs/rdsosreport.txt" to a USB stick or /boot after mounting them and attach it to a bug report. dracut:/#
Ubuntu:
mdadm: No arrays found in config file or automatically done. Gave up waiting for root file system device. Common problems: - Boot args (cat /proc/cmdline) - Check rootdelay= (did the system wait long enough?) - Missing modules (cat /proc/modules; ls /dev) ALERT! /dev/mapper/osencrypt does not exist. Dropping to a shell! BusyBox v1.27.2 (Ubuntu 1:1.27.2-2ubuntu3.4) built-in shell (ash) Enter 'help' for a list of built-in commands. (initramfs)
Solução de problemas on-line
Dica
Se você tiver um backup recente da VM, restaure a VM do backup para corrigir o problema de inicialização.
O console serial é o método mais rápido para resolver problemas. Ele permite que você corrija o problema diretamente sem precisar apresentar o disco do sistema a uma VM de recuperação. Certifique-se de atender aos pré-requisitos necessários para sua distribuição. Para obter mais informações, consulte Console serial da máquina virtual para Linux.
Identifique se sua VM chega ao shell de emergência dracut.
Tente solucionar o problema usando o console serial do Azure.
Observação
Nem todos os problemas podem ser resolvidos usando o console serial do Azure.
- Dispare a reinicialização da VM (Hard) no console serial.
- Interrompa sua VM no menu GRUB com a tecla ESC .
- Selecione E para modificar a primeira entrada do kernel no menu GRUB.
- Vá para a linha e valide e corrija a configuração incorreta do
linux16
GRUB da seguinte maneira:- Caminho do dispositivo raiz incorreto no arquivo de configuração do GRUB, UUID incorreto ou nome do volume raiz.
- Caminho do dispositivo de troca incorreto no arquivo de configuração do GRUB.
- Parâmetros duplicados no arquivo de configuração do GRUB.
- Qualquer erro de digitação óbvio.
Depois de modificar manualmente as configurações do GRUB, selecione Ctrl+X para inicializar a VM.
Qualquer modificação feita neste estágio é uma modificação não persistente. Se a VM puder inicializar, resolva esse problema no arquivo de configuração do GRUB ou ele ocorrerá novamente.
Depois que a VM estiver on-line novamente, corrija os problemas de configuração no
/etc/default/grub
arquivo de configuração e atualize a configuração do GRUB. Para fazer isso, consulte Reinstalar o GRUB e regenerar o arquivo de configuração do GRUB.Reinicialize a VM para garantir que ela possa ser inicializada sem qualquer intervenção manual.
Solução de problemas off-line
Dica
Se você tiver um backup recente da VM, restaure a VM do backup para corrigir o problema de inicialização.
Caso o console serial do Azure não funcione na VM específica ou não seja uma opção em sua assinatura, solucione esse problema usando 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, confira Solucionar problemas de uma VM do Linux anexando o disco do sistema operacional a uma VM de recuperação usando o portal do Azure.
Vá para as seções a seguir para resolver problemas específicos:
- A VM criptografada do ADE falha ao inicializar porque o VFAT está desabilitado.
- Os drivers do Hyper-V estão ausentes.
- Configuração incorreta do GRUB.
- Caminho do dispositivo raiz incorreto no arquivo de configuração do GRUB.
- Caminho do dispositivo de troca incorreto no arquivo de configuração do GRUB.
- Parâmetros duplicados no arquivo de configuração do GRUB.
- Corrupção do sistema de arquivos raiz.
- Problemas com a ativação do LVM.
- A partição raiz está ausente.
- Initrd ou initramfs corrupção.
Depois que o problema de inicialização relacionado ao dracut/initramfs for resolvido, execute as seguintes ações:
- Saia do chroot.
- 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. - Valide se a VM pode inicializar examinando o console serial do Azure ou tentando se conectar à VM.
A VM criptografada do ADE falha ao inicializar porque o VFAT está desabilitado
Para obter mais informações, consulte Falha na inicialização de VMs criptografadas do ADE.
Os drivers do Hyper-V estão ausentes
Se os drivers Hyper-V incluídos no kernel Linux de todas as distribuições Linux modernas estiverem desabilitados, reative-os e gere novamente a imagem initramfs/initrd. Para obter mais informações, consulte Cenário 3: outros drivers do Hyper-V estão desabilitados.
Se a VM for Red Hat e for migrada do local, habilite os drivers Hyper-V necessários na imagem initramfs. Para obter mais informações, consulte O driver do Hyper-V não pôde ser incluído no disco RAM inicial ao usar um hipervisor não Hyper-V.
Configuração incorreta do GRUB
O rd.break
parâmetro força a VM a inicializar no shell de emergência dracut. Verifique se esse parâmetro não está codificado no arquivo de configuração do GRUB.
Caminho do dispositivo raiz incorreto no arquivo de configuração do GRUB
Valide se o caminho root=/dev/***
raiz no arquivo de configuração do GRUB está correto. Certifique-se de que o caminho adequado do dispositivo seja usado.
Se você estiver dentro do chroot em uma VM de reparo/resgate:
- Siga a etapa 1 em Solução de problemas offline.
- Valide o
/etc/default/grub
arquivo, aGRUB_CMDLINE_LINUX
entrada e procure oroot=
parâmetro caso ele esteja codificado no arquivo de configuração. - Reinstale o GRUB e gere novamente o arquivo de configuração do GRUB.
Se você estiver no console serial do Azure:
- Siga a etapa 3 em Solução de problemas online.
- Valide a
linux16
linha e, em seguida, procure oroot=
parâmetro e corrija-o. - Selecione Ctrl+X para inicializar a VM.
- Depois que a VM for inicializada com êxito, modifique o
/etc/default/grub
arquivo, corrija oroot
parâmetro e atualize o arquivo de configuração do GRUB, conforme instruído em Reinstalar o GRUB e regenerar o arquivo de configuração do GRUB.
Durante essa validação, certifique-se do seguinte:
- Em VMs do Ubuntu com criptografia do sistema operacional, verifique se o nome do dispositivo é
/dev/mapper/osencrypt
. - Em VMs com LVM (Gerenciador de Volume Lógico) no disco do sistema operacional, o volume raiz é
/dev/mapper/rootvg-rootlv
. O mesmo caminho é usado em VMs RHEL com disco do sistema operacional ADE criptografado. - Certifique-se de que nenhum nome de dispositivo na forma de
/dev/sdX
seja usado, pois eles mudarão nas reinicializações e não são persistentes no Linux. Para obter mais informações, consulte Solucionar problemas de alterações de nome de dispositivo de VM do Linux. - Se forem usados UUIDs, certifique-se de que o UUID do sistema de arquivos raiz adequado seja usado e que a sintaxe seja
root=UUID=xxx-yyy-zzz
.
Caminho do dispositivo de troca incorreto no arquivo de configuração do GRUB
Nesse cenário, uma VM não consegue concluir o processo de inicialização e entra no shell de emergência dracut com um erro semelhante ao seguinte:
[ 188.000765] dracut-initqueue[324]: Warning: /dev/VG/SwapVol does not exist
Starting Dracut Emergency Shell...
Warning: /dev/VG/SwapVol does not exist
O arquivo de configuração do GRUB neste exemplo é definido para carregar um Volume Lógico (LV) como swap com o parâmetro rd.lvm.lv=VG/SwapVol
. No entanto, a VM não consegue localizar esse LV durante o processo de inicialização.
É importante observar que não é recomendável usar um dispositivo de permuta dessa maneira em VMs Linux do Azure. Para obter mais informações, consulte Criar um arquivo SWAP para uma VM Linux do Azure.
Para resolver esse problema, localize o caminho rd.lvm.lv=VG/SwapVol
de permuta no arquivo de configuração do GRUB (/etc/default/grub
) e remova-o. Para fazer isso, utilize um dos métodos seguintes:
Se você estiver dentro do chroot em uma VM de reparo/resgate:
- Siga a etapa 1 em Solução de problemas offline.
- Edite o
/etc/default/grub
arquivo, vá para aGRUB_CMDLINE_LINUX
entrada, localize ord.lvm.lv=VG/SwapVol
parâmetro e remova-o da configuração. - Reinstale o GRUB e gere novamente o arquivo de configuração do GRUB.
Se você estiver no console serial do Azure:
- Siga a etapa 3 em Solução de problemas online.
- Vá para a linha que começa com
linux
, localize ord.lvm.lv=VG/SwapVol
parâmetro e remova-o. - Selecione Ctrl+X para inicializar a VM.
- Depois que a VM for inicializada com êxito, modifique o
/etc/default/grub
arquivo, remova ord.lvm.lv=VG/SwapVol
parâmetro e atualize o arquivo de configuração do GRUB, conforme instruído na seção Reinstalar o GRUB e regenerar o arquivo de configuração do GRUB.
Parâmetros duplicados no arquivo de configuração do GRUB
Valide se há parâmetros duplicados no arquivo de configuração do GRUB:
Se você estiver dentro do chroot em uma VM de reparo/resgate:
- Siga a etapa 1 em Solução de problemas offline.
- Valide o
/etc/default/grub
arquivo e aGRUB_CMDLINE_LINUX
entrada. - Procure parâmetros duplicados e remova-os.
- Atualize o arquivo de configuração do GRUB. Para obter mais informações, consulte Reinstalar o GRUB e regenerar o arquivo de configuração do GRUB.
Se você estiver no console serial do Azure:
- Siga a etapa 3 em Solução de problemas online.
- Valide a
linux16
linha, procure parâmetros duplicados e remova-os. - Selecione Ctrl+X para inicializar a VM.
- Depois que a VM for inicializada com êxito, modifique o
/etc/default/grub
arquivo adequadamente, corrija os problemas de configuração identificados anteriormente e atualize o arquivo de configuração do GRUB, conforme instruído em Reinstalar o GRUB e regenerar o arquivo de configuração do GRUB.
Corrupção do sistema de arquivos raiz
Quando o sistema de arquivos raiz está corrompido, ele não pode ser montado a partir da imagem initrd/initramfs.
Para corrigir a corrupção do sistema de arquivos raiz, siga as instruções em Solucionar problemas de inicialização da máquina virtual Linux devido a erros do sistema de arquivos - Executar reparo do sistema de arquivos.
Problemas com a ativação do LVM
Alguns problemas podem ocorrer quando você acessa o volume físico (PV), o grupo de volumes (VG) e/ou o volume lógico (LV) do LVM. Eles não podem ser resolvidos no console serial do Azure. Para resolvê-los, use uma VM de reparo/resgate.
Siga a etapa 1 em Solução de problemas offline.
Para identificar os problemas, execute os comandos a seguir e dê uma olhada nas saídas do comando.
Identifique qual dispositivo corresponde ao disco do sistema operacional e verifique se ele é detectado como um PV:
lsblk pvs
Valide se o
rootvg
VG for detectado:vgs
Valide se o VE for detectado:
lvs
Solucione os seguintes erros comuns de LVM que causam problemas com o acesso ao volume raiz:
PV desconhecido quando o VG rootvg tem apenas um único PV (essa é a configuração padrão do Azure)
A partição que contém o PV é excluída, redimensionada ou criada incorretamente. Para resolver esse problema, consulte A partição raiz está ausente.
PV desconhecido quando o rootvg VG é modificado e dividido em mais de um disco
Ter 2 PVs no VG rootvg não é uma configuração recomendada. Nesse cenário, o disco de dados pode ser desanexado da máquina virtual e os volumes lógicos rootvg não estão mais acessíveis. Para resolver esse problema, reconecte o disco original à VM e reinicie-o.
Se o PV for irrecuperável, execute uma restauração do backup.
A partição raiz está ausente
O sistema de arquivos raiz pode estar inacessível devido a alguns problemas que ocorrem no nível da partição durante as operações de redimensionamento de partição ou outros.
Nesse cenário, se você documentou o layout da tabela de partição original, com os setores inicial e final exatos para cada uma das partições originais (e nenhuma modificação adicional é feita no sistema, como a criação de novos sistemas de arquivos), recrie as partições usando o mesmo layout original. Você pode fazer isso com ferramentas como fdisk
(para tabelas de partição MBR) ou gdisk
(para tabelas de partição GPT) para obter acesso ao sistema de arquivos inacessível. Siga esta operação de recuperação de uma VM de reparo/resgate. Para obter mais informações, consulte a seção Solução de problemas offline.
Se essa abordagem não funcionar, recomendamos executar uma restauração do backup.
Corrupção Initrd ou initramfs
A imagem initrd/initramfs tem algum nível de corrupção que faz com que a montagem do volume raiz e o início do processo de inicialização do sistema operacional falhem.
Para resolver esse problema, siga estas etapas de dentro do chroot em uma VM de reparo/resgate:
- Siga a etapa 1 em Solução de problemas offline.
- Regenere initramfs ausentes manualmente.
- Reinicie a VM para confirmar se ela pode inicializar.
Próximas etapas
Caso o erro de inicialização específico não seja um problema dracut ou initramfs, consulte Solucionar problemas de erros de inicialização de Máquinas Virtuais Linux do Azure para obter mais opções de solução de problemas.
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.