View
340
Download
7
Category
Preview:
DESCRIPTION
A small talk given at FISL 12 about the kernel crash analysis tool (crash)
Citation preview
A crash course on Crash – FISL 121
A crash course on crash
The Kernel crash analysis tool
Rafael Aquini & Marcelo MelloFórum Internacional do Software Livre 12
Porto Alegre - RS - Brasil
A crash course on Crash – FISL 122
Agenda:
● O que é crash?
● Por que crash?
● Os requisitos para começar sua análise
● Lock n' load: o contexto do crash
● O conjunto de comandos
● Estudos de caso:● Under the hood: Investigando o Kernel on-the-fly com crash
● Dirty work: Caçando “NULL pointer dereference” em device drivers
A crash course on Crash – FISL 123
O que é crash?
● Utilitário de análise imagens de memória do Kernel, baseado no comando crash do UNIX SVR4, significantemente melhorado após um 'merge' completo com o GNU gdb debugger
● O “casamento” das duas ferramentas combina efetivamente as capacidades de “source-level debugging” do gdb com a natureza específica de análise de Kernel do crash
● Projetado para ser independente de versão de Linux
● Upstream: http://people.redhat.com/anderson/
A crash course on Crash – FISL 124
Por que crash?
● Projetado com foco em flexibilidade e extensibilidade, crash pode ter seu conjunto de comandos facilmente extendido, para atender as necessidades mais específicas de desenvolvedores e analistas;
● Pode ser utilizado para investigar as seguintes bases:● Live Linux systems; ● Linux kernel core dumps criados com:
● kdump (makedumpfile, netdump, diskdump)● xendump original, e ELF-format (XEN guests)● virsh dump (KVM guests)● IBM standalone core dump (s390, s390x)● LKCD (Linux Kernel Crash Dumps) Sourceforge project
A crash course on Crash – FISL 125
Por que crash?
● Por você ser um sysadmin responsável;
● Porque você vai querer saber a causa do problema;
● Para coletar evidências (memória RAM é volátil);
Por que você não é fotógrafo!!
A crash course on Crash – FISL 126
Os requisitos para começar sua análise
A crash course on Crash – FISL 127
Os requisitos para começar sua análise
# yum install –enablerepo=fedora-debuginfo –enablerepo=updates-debuginfo \ kexec-tools kernel-debuginfo crash
# /etc/grub.conf kernel /vmlinuz-xxxx crashkernel=128M crashkernel=128M@16M
# /etc/sysctl.confkernel.panic_on_oops = 1
# chkconfig kdump on
system-config-kdump
quantidade de memória reservada
início da região de memória reservada
A crash course on Crash – FISL 128
Os requisitos para começar sua análise.
● Código-objeto do kernel:● vmlinux obrigatoriamente de mesmo release do kernel que
gerou a imagem de memória, e compilado com a flag -g –– assim possuindo os simbolos de debug
● Imagem de memória:● Kernel crash dump (vmcore) criado por umas das ferramentas
citadas, ou acesso a /dev/mem em um live-system
● Plataforma e tipo de cpu:● x86, x86_64, ia64, ppc64, arm, s390 e s390x
● Linux kernel:● Compatibilidade assegurada de Red Hat 6.0 (2.2.5-12) até
RHEL6 (2.6.32+)
A crash course on Crash – FISL 129
Lock n' load: o contexto do crash
● Muitos comandos do crash são "context-sensitive";
● Após invocar uma sessão do crash, o contexto corrente é determinado seguindo os critérios:
● Em dumpfiles:● a tarefa que rodava quando die() die_nmi() foi chamada
● a tarefa que rodava quando panic() foi chamada
● a tarefa que rodava quando a interrupção de teclado ALT-SYSRQ-c foi recebida
● a tarefa que rodava quando echo "c" > /proc/sysrq-trigger foi emitido
● Em um “live-system”:● a própria tarefa do crash
A crash course on Crash – FISL 1210
A crash course on Crash – FISL 1211
O conjunto de comandos
● Display dos símbolos e estruturas do Kernel (gdb)● struct; union; *; p; whatis; sym; dis;
● Estado do sistema (kernel-aware)● bt; dev; files; fuser; irq; kmem; log; mach; mod; mount; net; ps; pte; runq; sig; swap; sys; task; timer; vm; vtop; waitq;
● Funções utilitárias (helpers)● ascii; btop; eval; list; ptob; ptov; search; rd; wr;
● Controle da sessão● alias; exit; extend; foreach (bt, vm, task, files, net, set, sig, vtop); gdb; repeat; set;
A crash course on Crash – FISL 1212
Antes de arregaçar as mangas:
● Material de consulta:● http://people.redhat.com/anderson/crash_whitepaper● http://en.wikipedia.org/wiki/X86_assembly_language● http://en.wikipedia.org/wiki/X86_architecture● http://en.wikipedia.org/wiki/X86_instruction_listings● http://en.wikipedia.org/wiki/X86-64
● Kernel source tree (source rpm)
● Cscope● http://cscope.sourceforge.net/
A crash course on Crash – FISL 1213
“Talk is cheap... So, show me the code!”
Linus Torvalds
DEMO
A crash course on Crash – FISL 1214
Obrigado!!
Dúvidas??
Recommended