SlideShare uma empresa Scribd logo
1 de 14
Baixar para ler offline
A crash course on crash
    The Kernel crash analysis tool




                      Rafael Aquini & Marcelo Mello
                   Fórum Internacional do Software Livre 12
                                                     Porto Alegre - RS - Brasil


1                A crash course on Crash – FISL 12
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

2                        A crash course on Crash – FISL 12
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/


3                      A crash course on Crash – FISL 12
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
4                            A crash course on Crash – FISL 12
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!!




5                      A crash course on Crash – FISL 12
Os requisitos para começar sua análise




6              A crash course on Crash – FISL 12
Os requisitos para começar sua análise

    # yum install –enablerepo=fedora-debuginfo –enablerepo=updates-debuginfo 
           kexec-tools kernel-debuginfo crash

                                                                   quantidade de memória reservada
    # /etc/grub.conf                                               início da região de memória reservada
       kernel /vmlinuz-xxxx crashkernel=128M
                            crashkernel=128M@16M

    # /etc/sysctl.conf
    kernel.panic_on_oops = 1




    # chkconfig kdump on




                                                              system-config-kdump
7                              A crash course on Crash – FISL 12
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+)

8                           A crash course on Crash – FISL 12
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
9                             A crash course on Crash – FISL 12
10   A crash course on Crash – FISL 12
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;

11                        A crash course on Crash – FISL 12
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/




12                            A crash course on Crash – FISL 12
“Talk is cheap...
So, show me the code!”
                                                  Linus Torvalds




                       DEMO




13            A crash course on Crash – FISL 12
Obrigado!!




                                             Dúvidas??




14            A crash course on Crash – FISL 12

Mais conteúdo relacionado

Mais procurados

Docker na vida real
Docker na vida realDocker na vida real
Docker na vida realFernando Ike
 
TDC2019Floripa - Não existe container de prata
TDC2019Floripa - Não existe container de prataTDC2019Floripa - Não existe container de prata
TDC2019Floripa - Não existe container de prataBruno Pedroso
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...tdc-globalcode
 
Vagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolsoVagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolsoDiogo Lucas
 
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...Tchelinux
 
Docker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoDocker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoTobias Sette
 
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...tdc-globalcode
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerWaldemar Neto
 
Seguranca - docker
Seguranca - dockerSeguranca - docker
Seguranca - dockerStefani Lima
 
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers tdc-globalcode
 
Programando Software Livre em C
Programando Software Livre em CProgramando Software Livre em C
Programando Software Livre em CDiego Santos
 
Novidades no OpenBSD 4.3 - Leonardo Menezes Vaz
Novidades no OpenBSD 4.3 - Leonardo Menezes VazNovidades no OpenBSD 4.3 - Leonardo Menezes Vaz
Novidades no OpenBSD 4.3 - Leonardo Menezes VazTchelinux
 
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containersTDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containerstdc-globalcode
 
TDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unhaTDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unhatdc-globalcode
 
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?tdc-globalcode
 
Desenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerDesenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerBruno Ricardo Siqueira
 

Mais procurados (20)

Docker na vida real
Docker na vida realDocker na vida real
Docker na vida real
 
TDC2019Floripa - Não existe container de prata
TDC2019Floripa - Não existe container de prataTDC2019Floripa - Não existe container de prata
TDC2019Floripa - Não existe container de prata
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
 
Protegendo Docker
Protegendo DockerProtegendo Docker
Protegendo Docker
 
Vagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolsoVagrant & Docker: carregue seus ambientes no bolso
Vagrant & Docker: carregue seus ambientes no bolso
 
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
 
Docker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoDocker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de uso
 
Bem vindo ao Docker
Bem vindo ao DockerBem vindo ao Docker
Bem vindo ao Docker
 
Iniciando com docker
Iniciando com dockerIniciando com docker
Iniciando com docker
 
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
TDC2018SP | Trilha Containers - Provisionando um cluster Kubernetes multi-mas...
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e Docker
 
Seguranca - docker
Seguranca - dockerSeguranca - docker
Seguranca - docker
 
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
TDC2018SP | Trilha Containers - ASGARD: Abstraindo orquestradores de containers
 
Mrtg
MrtgMrtg
Mrtg
 
Programando Software Livre em C
Programando Software Livre em CProgramando Software Livre em C
Programando Software Livre em C
 
Novidades no OpenBSD 4.3 - Leonardo Menezes Vaz
Novidades no OpenBSD 4.3 - Leonardo Menezes VazNovidades no OpenBSD 4.3 - Leonardo Menezes Vaz
Novidades no OpenBSD 4.3 - Leonardo Menezes Vaz
 
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containersTDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
 
TDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unhaTDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unha
 
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
 
Desenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerDesenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando Docker
 

Destaque (19)

Resume 2012
Resume 2012Resume 2012
Resume 2012
 
Chadar trek including Lingshed 2015
Chadar trek including Lingshed 2015 Chadar trek including Lingshed 2015
Chadar trek including Lingshed 2015
 
Great Leaders
Great LeadersGreat Leaders
Great Leaders
 
Chadar trek
Chadar trekChadar trek
Chadar trek
 
The Ultimate Communicator
The Ultimate CommunicatorThe Ultimate Communicator
The Ultimate Communicator
 
Corporate outbound training presentation
Corporate outbound training presentationCorporate outbound training presentation
Corporate outbound training presentation
 
Sede Centro Studi Zen Life
Sede Centro Studi Zen LifeSede Centro Studi Zen Life
Sede Centro Studi Zen Life
 
Boost ur creativity!
Boost ur creativity!Boost ur creativity!
Boost ur creativity!
 
Centro Studi Zen Life
Centro Studi Zen LifeCentro Studi Zen Life
Centro Studi Zen Life
 
Real Time Right Now Back Office V2
Real Time Right Now Back Office V2Real Time Right Now Back Office V2
Real Time Right Now Back Office V2
 
Atenção Primaria em Saúde e Violência Domestica
Atenção Primaria em Saúde e Violência Domestica Atenção Primaria em Saúde e Violência Domestica
Atenção Primaria em Saúde e Violência Domestica
 
Urban Velvet´s
Urban Velvet´sUrban Velvet´s
Urban Velvet´s
 
Magazine analysis 2
Magazine analysis 2Magazine analysis 2
Magazine analysis 2
 
Lema lara
Lema laraLema lara
Lema lara
 
1rtridossier 2na naturals 2011
1rtridossier 2na naturals 20111rtridossier 2na naturals 2011
1rtridossier 2na naturals 2011
 
Presentación2
Presentación2Presentación2
Presentación2
 
Video
VideoVideo
Video
 
Slideshare
SlideshareSlideshare
Slideshare
 
Ejercicio ii. diana cova
Ejercicio ii. diana covaEjercicio ii. diana cova
Ejercicio ii. diana cova
 

Semelhante a Crash Course on Kernel Crash Analysis Tool Crash

Desenvolvendo Sistemas de Linux Embarcado - Marcelo Veiga Neves
Desenvolvendo Sistemas de Linux Embarcado - Marcelo Veiga NevesDesenvolvendo Sistemas de Linux Embarcado - Marcelo Veiga Neves
Desenvolvendo Sistemas de Linux Embarcado - Marcelo Veiga NevesTchelinux
 
Desenvolvendo Sistemas de Linux Embarcado - Tchelinux 2009
Desenvolvendo Sistemas de Linux Embarcado - Tchelinux 2009Desenvolvendo Sistemas de Linux Embarcado - Tchelinux 2009
Desenvolvendo Sistemas de Linux Embarcado - Tchelinux 2009Marcelo Veiga Neves
 
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling LandgrafDesenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling LandgrafTchelinux
 
Apresentando o FreeBSD
Apresentando o FreeBSDApresentando o FreeBSD
Apresentando o FreeBSDflisolmaringa
 
Evitando a fadiga com Laravel Homestead
Evitando a fadiga com Laravel HomesteadEvitando a fadiga com Laravel Homestead
Evitando a fadiga com Laravel HomesteadDanilo Esser
 
Linux4all#2
Linux4all#2Linux4all#2
Linux4all#2Daniel
 
Rootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSD
Rootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSDRootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSD
Rootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSDNullbyte Security Conference
 
LinuxCon 2010: Tutorial - Reverse Engineering on GNU/Linux Systems
LinuxCon 2010: Tutorial - Reverse Engineering on GNU/Linux SystemsLinuxCon 2010: Tutorial - Reverse Engineering on GNU/Linux Systems
LinuxCon 2010: Tutorial - Reverse Engineering on GNU/Linux SystemsFernando Mercês
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcadotdc-globalcode
 
Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilli...
Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilli...Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilli...
Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilli...Tchelinux
 
Palestra xen-flisol2011
Palestra xen-flisol2011Palestra xen-flisol2011
Palestra xen-flisol2011andreluizfm
 
Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé Leite
Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé LeiteComo ajudar no desenvolvimento do kernel Linux? - Fábio Olivé Leite
Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé LeiteTchelinux
 
Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Leo Amorim
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1Leo Amorim
 
Introdução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcadosIntrodução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcadosRodrigo Almeida
 
Apresentando o FreeBSD
Apresentando o FreeBSDApresentando o FreeBSD
Apresentando o FreeBSDflisolmaringa
 

Semelhante a Crash Course on Kernel Crash Analysis Tool Crash (20)

Desenvolvendo Sistemas de Linux Embarcado - Marcelo Veiga Neves
Desenvolvendo Sistemas de Linux Embarcado - Marcelo Veiga NevesDesenvolvendo Sistemas de Linux Embarcado - Marcelo Veiga Neves
Desenvolvendo Sistemas de Linux Embarcado - Marcelo Veiga Neves
 
Desenvolvendo Sistemas de Linux Embarcado - Tchelinux 2009
Desenvolvendo Sistemas de Linux Embarcado - Tchelinux 2009Desenvolvendo Sistemas de Linux Embarcado - Tchelinux 2009
Desenvolvendo Sistemas de Linux Embarcado - Tchelinux 2009
 
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling LandgrafDesenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf
 
Apresentando o FreeBSD
Apresentando o FreeBSDApresentando o FreeBSD
Apresentando o FreeBSD
 
Evitando a fadiga com Laravel Homestead
Evitando a fadiga com Laravel HomesteadEvitando a fadiga com Laravel Homestead
Evitando a fadiga com Laravel Homestead
 
Linux4all#2
Linux4all#2Linux4all#2
Linux4all#2
 
Rootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSD
Rootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSDRootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSD
Rootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSD
 
Replicação PostgreSQL com RepManager
Replicação PostgreSQL com RepManagerReplicação PostgreSQL com RepManager
Replicação PostgreSQL com RepManager
 
LinuxCon 2010: Tutorial - Reverse Engineering on GNU/Linux Systems
LinuxCon 2010: Tutorial - Reverse Engineering on GNU/Linux SystemsLinuxCon 2010: Tutorial - Reverse Engineering on GNU/Linux Systems
LinuxCon 2010: Tutorial - Reverse Engineering on GNU/Linux Systems
 
Minicurso GNU/Linux
Minicurso GNU/LinuxMinicurso GNU/Linux
Minicurso GNU/Linux
 
Lab so-abertos-unidade8
Lab so-abertos-unidade8Lab so-abertos-unidade8
Lab so-abertos-unidade8
 
TDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux EmbarcadoTDC2016SP - Trilha Linux Embarcado
TDC2016SP - Trilha Linux Embarcado
 
Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilli...
Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilli...Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilli...
Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilli...
 
Palestra xen-flisol2011
Palestra xen-flisol2011Palestra xen-flisol2011
Palestra xen-flisol2011
 
Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé Leite
Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé LeiteComo ajudar no desenvolvimento do kernel Linux? - Fábio Olivé Leite
Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé Leite
 
Linux básico
Linux básicoLinux básico
Linux básico
 
Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1
 
Introdução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcadosIntrodução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcados
 
Apresentando o FreeBSD
Apresentando o FreeBSDApresentando o FreeBSD
Apresentando o FreeBSD
 

Crash Course on Kernel Crash Analysis Tool Crash

  • 1. A crash course on crash The Kernel crash analysis tool Rafael Aquini & Marcelo Mello Fórum Internacional do Software Livre 12 Porto Alegre - RS - Brasil 1 A crash course on Crash – FISL 12
  • 2. 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 2 A crash course on Crash – FISL 12
  • 3. 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/ 3 A crash course on Crash – FISL 12
  • 4. 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 4 A crash course on Crash – FISL 12
  • 5. 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!! 5 A crash course on Crash – FISL 12
  • 6. Os requisitos para começar sua análise 6 A crash course on Crash – FISL 12
  • 7. Os requisitos para começar sua análise # yum install –enablerepo=fedora-debuginfo –enablerepo=updates-debuginfo kexec-tools kernel-debuginfo crash quantidade de memória reservada # /etc/grub.conf início da região de memória reservada kernel /vmlinuz-xxxx crashkernel=128M crashkernel=128M@16M # /etc/sysctl.conf kernel.panic_on_oops = 1 # chkconfig kdump on system-config-kdump 7 A crash course on Crash – FISL 12
  • 8. 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+) 8 A crash course on Crash – FISL 12
  • 9. 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 9 A crash course on Crash – FISL 12
  • 10. 10 A crash course on Crash – FISL 12
  • 11. 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; 11 A crash course on Crash – FISL 12
  • 12. 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/ 12 A crash course on Crash – FISL 12
  • 13. “Talk is cheap... So, show me the code!” Linus Torvalds DEMO 13 A crash course on Crash – FISL 12
  • 14. Obrigado!! Dúvidas?? 14 A crash course on Crash – FISL 12