Resolva problemas de arranque de VMs do Linux devido a pânico do kernel

Este documento inclui informações de resolução de problemas sobre uma VM que deixa de responder devido a erros de pânico do kernel.

Antes de começar

  • Se quiser registar a saída da porta série no Cloud Logging, familiarize-se com o Cloud Logging.
  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    2. Set a default region and zone.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    Para mais informações, consulte o artigo Autenticar para usar REST na Google Cloud documentação de autenticação.

Kernel panic

Um kernel panic pode ocorrer quando o kernel não consegue carregar corretamente os módulos, que são necessários para o arranque do SO convidado.initramfs

Outra forma de pânico do kernel pode ocorrer numa situação em que o kernel não sabe como processar um determinado pedido e protege-se parando. O pânico do kernel pode ocorrer numa VM do Compute Engine que execute o RedHat, o SUSE, o CentOS ou o Ubuntu.

Mensagens de erro comuns

Seguem-se alguns dos eventos de pânico do kernel mais comuns para referência:

Kernel panic - not syncing: hung_task: blocked tasks
Kernel Panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
Kernel panic - not syncing: NMI: Not continuing
Kernel panic - not syncing: out of memory. panic_on_oom is selected
Kernel panic - not syncing: Fatal Machine check 

Causas comuns

O erro de pânico do kernel pode ocorrer por vários motivos. Alguns dos motivos comuns são:

  • A entrada relacionada com o ficheiro initramfs que corresponde ao kernel não existe no ficheiro grub.cfg.
  • O ficheiro initramfs não é gerado no diretório /boot durante a instalação do kernel.
  • O ficheiro initramfs é gerado apenas parcialmente ou está danificado.

Sintomas

Quando sofre um kernel panic numa instância de VM, um sintoma comum é que o kernel não lhe permite ligar-se à VM, mesmo quando usa a consola série.

Deve verificar os registos da consola série para identificar o kernel que foi carregado pelo SO convidado, por exemplo:

[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.10.0-1160.95.1.el7.x86_64 (mockbuild@x86-vm-42.build.eng.bos.redhat.com) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Thu Aug 10 10:46:21 EDT 2023
Verifique também o erro de pânico do kernel. Normalmente, este erro é apresentado na linha do kernel quando a VM é iniciada ou no final dos registos da consola série com várias rastreios de chamadas de pilha.

O exemplo seguinte mostra um evento de pânico do kernel devido a problemas de initramfs:

[    1.520840] No filesystem could mount root, tried:
[    1.520840]
[    1.521964] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[    1.523495] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 3.10.0-1160.95.1.el7.x86_64 #1
[    1.524932] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/11/2022
[    1.526901] Call Trace:
[    1.527421]  dump_stack+0x41/0x60
[    1.527978]  panic+0xe7/0x2ac
[    1.528578]  mount_block_root+0x2be/0x2e6
[    1.529693]  ? do_early_param+0x95/0x95
[    1.530441]  prepare_namespace+0x135/0x16b
[    1.531237]  kernel_init_freeable+0x203/0x22d
[    1.532081]  ? rest_init+0xaa/0xaa
[    1.532808]  kernel_init+0xa/0x103
[    1.533395]  ret_from_fork+0x35/0x40
[    1.535229] Kernel Offset: 0x23a00000 from 0xffffffff81000000  

Resolva o erro kernel panic

Para resolver o erro de pânico do kernel, siga estes passos:

  1. Estabeleça ligação à consola série e inicie sessão na VM a partir da Google Cloud consola.

  2. Clique em Repor para a VM na consola Google Cloud .

  3. Depois de aparecer o ecrã inicial do GRUB, selecione o kernel ou o kernel de resgate que funcionava anteriormente e, em seguida, arranque o sistema. Isto faz com que a MV comece com o kernel selecionado.

    kernel panic

  4. Quando a VM estiver acessível, pode iniciar uma ligação SSH à VM.

  5. Identifique a causa do problema e tome medidas adicionais em conformidade.

    Por exemplo, se o ficheiro initramfs estiver em falta ou danificado, conclua os seguintes passos:

    1. Gere o ficheiro initramfs correspondente ao kernel original através do comando dracut:

      dracut -f /boot/initramfs-KERNEL_VERSION.img KERNEL_VERSION
      

      Substitua KERNEL_VERSION pela versão atual do kernel da VM. Por exemplo, 3.10.0-1160.95.1.el7.x86_64.

    2. Atualize o ficheiro grub2.cfg através do comando grub2-mkconfig, por exemplo:

      grub2-mkconfig -o /boot/grub2/grub.cfg
      
    3. Depois de gerar o ficheiro initramfs, pode reiniciar a VM sem erros.