Manual Prático de Interpretação de Logs e Erros do Kernel Linux
Introdução
Este documento tem como objetivo servir como um guia prático para interpretar logs do kernel Linux. Ele é voltado para analistas de infraestrutura, sysadmins e entusiastas que desejam entender melhor as mensagens emitidas pelo sistema, diagnosticar falhas e aplicar correções de forma eficaz.
Estrutura de Logs do Kernel
As mensagens do kernel geralmente são acessadas via dmesg ou journalctl -k.
Elas seguem um padrão:
[tempo desde o boot] origem:
mensagem
Exemplo:
[ 2111.447935] BUG: unable to handle page fault for address: 00000000d2000110
Tipos Comuns de Erros e Mensagens
1. BUG: unable to handle page fault
Significado: Tentativa de acesso a uma região de memória inválida.
Possíveis causas:
Ponteiro inválido no código do kernel ou driver.
Driver com bug ou incompatível.
Problemas de hardware (RAM).
Ação sugerida:
Verificar mensagens completas com dmesg -T.
Analisar stack trace (RIP, Call Trace).
Usar memtest86+ para testar memória.
2. kernel panic
Significado:
Erro fatal que força o kernel a travar completamente.
Possíveis causas:
Falhas críticas no sistema de arquivos, drivers ou subsistemas do kernel.
Ação sugerida:
Verificar logs anteriores à mensagem.
Usar crash ou dump de memória para análise mais profunda.
3. Oops
Significado:
Erro interno do kernel, mas nem sempre fatal como um panic.
Possíveis causas:
Problemas com ponteiros nulos ou acesso fora dos limites.
Bugs em módulos carregados dinamicamente.
Ação sugerida:
Analisar a saída do Call Trace.
Verificar se o kernel está "tainted".
4. soft lockup / hard lockup
Significado: CPU está travada em uma tarefa e não consegue continuar a execução.
Possíveis causas:
Deadlocks.
Problemas com escalonamento de processos.
Ação sugerida:
Usar perf top ou ftrace para analisar processos em tempo real.
Investigar uso excessivo de CPU.
5. tainted kernel
Significado: O kernel detectou algo incomum e marcou o sistema como "contaminado".
Possíveis causas:
Uso de módulos proprietários.
Falhas de hardware.
Ação sugerida:
Verificar código de contaminação em /proc/sys/kernel/tainted.
Usar uname -a para coletar versão do kernel e contexto.
Ferramentas de Apoio
dmesg -T: Visualiza mensagens com timestamp legível.
journalctl -k: Filtra logs do kernel.
memtest86+: Teste de memória RAM.
crash /
makedumpfile: Análise de crash dumps.
drgn: Depuração interativa de kernel.
perf, ftrace, systemtap: Análise de performance e tracing.
Recursos de Estudo
Kernel.org Documentation
Livro: Linux Kernel Development (Robert Love)
Fórum: LinuxQuestions - Kernel
LWN.net - Kernel