Depurando falhas do kernel usando o kdump

Introdução

kdump é um serviço que cria um "crash dump" ou "despejo de erros" quando há uma falha no kernel. Ele usa kexec(8) para inicializar em um kernel secundário (conhecido como kernel de captura) e, em seguida, exporta o conteúdo da memória do kernel (conhecido como crash dump ou vmcore) para o sistema de arquivos. O conteúdo do vmcore pode então ser analisado para determinar a raiz da falha do kernel.

A configuração do kdump requer a definição do argumento do kernel crashkernel e a ativação do serviço systemd kdump. A memória deve ser reservada para o kernel travado durante a inicialização do primeiro kernel. crashkernel=auto geralmente não reserva memória suficiente no Fedora CoreOS, então é recomendado especificar crashkernel=300M.

Por padrão, o vmcore será salvo em /var/crash. Também é possível gravar o dump em algum outro espaço no sistema local ou enviá-lo pela rede editando /etc/kdump.conf. Para obter informações adicionais, consulte kdump.conf(5) e os comentários em /etc/kdump.conf e /etc/sysconfig/kdump.

Configurando o kdump via Ignition

Exemplo de configuração do kdump
variant: fcos
version: 1.5.0
kernel_arguments:
  should_exist:
  - 'crashkernel=300M'
systemd:
  units:
  - name: kdump.service
    enabled: true

Configurando o kdump após o provisionamento inicial

  1. Defina o argumento de kernel crashkernel

    sudo rpm-ostree kargs --append='crashkernel=300M'

    Mais informações sobre como modificar kargs via rpm-ostree.

  2. Habilite o serviço systemd kdump.

    sudo systemctl enable kdump.service
  3. Reinicialize seu sistema.

    sudo systemctl reboot
É altamente recomendável testar a configuração após configurar o serviço kdump, com atenção extra para a quantidade de memória reservada para o kernel de travamento. Para informações sobre como testar se o kdump está devidamente armado e como analisar o despejo, consulte a documentação de kdump para Fedora e a documentação do kernel Linux sobre kdump.