SlideShare una empresa de Scribd logo
1 de 38
Descargar para leer sin conexión
Introdução ao Desenvolvimento  
        do Kernel Linux
              Versões 2.6.X

                                 
         http://www.tchelinux.org




             Palestrante: Douglas Schilling Landgraf
                      Email: dougsland@gmail.com
Kernel Linux



  ●
      Sobre o palestrante
  ●
      Sobre a palestra
  ●
      Dicas iniciais




2007­03­24
Kernel Linux 

   Onde começar ?  TODO List ?

                http://www.kernelnewbies.org
                http://br.kernelnewbies.org/

                http://kerneljanitors.org
                http://kernelnewbies.org/KernelJanitors/Todo
                http://kernelnewbies.org/KernelMentors

                http://www.kernel.org




 2007­03­24
Kernel Linux 


   Onde obter o código fonte ? 

      http://www.kernel.org
      ftp://ftp.kernel.org/pub
      rsync://rsync.kernel.org/pub/




 2007­03­24
Kernel Linux


  Licença: 
  ●
      GPL ( versão 2 )   
      http://www.gnu.org/copyleft/gpl.html


  Como funciona?
  ●
      Podemos baixar o software e alterar, desde que publiquemos este 
      software com as licenças originais, incluindo a disponibilização do 
      código fonte.




2007­03­24
Kernel


  Definição:

  ●
      É no kernel que estão definidas funções para operação com 
      periféricos (mouse, discos, impressoras, interface serial/interface 
      paralela, usb etc.), gerenciamento de memória, entre outros. 


  ●
      Conjunto de programas que fornece, para os programas de usuário 
      (aplicativos), uma interface para utilizar os recursos do sistema.




2007­03­24
Kernel

                                    User-Space


                          Aplicativo 1    Aplicativo 2




             System Call Interface (open, close, brk (malloc), etc.)

                                    Kernel-Space

                      Kernel Subsystems




                                Device Drivers


                                    Hardware


2007­03­24
Kernel


  Design: Monolítico versus MicroKernel
  ●
      Monolítico:
             ●
                 Criado em meados de 1980
             ●
                 Um grande e único processo (imenso)
             ●
                 Comunicação trivial (todos rodam em um único processo)

  ●
      MicroKernel:
             ●
                 Separado em dois processos (“servers” / user­space)
             ●
                 Comunicação via IPC (interprocess communication)
             ●
                 Modularidade


2007­03­24
Kernel 

     Exemplo:

          Monolítico                     MicroKernel


             Kernel                          Kernel



                                                  IPC
          Softwares

                                   Servers              Softwares




IPC = Interprocess Communication



 2007­03­24
Kernel Linux


  Design: 
  ●
      Executa em um único processo
  ●
      Kernel Linux é monolítico 
  ●
      Implementa recursos do microkernel design
       ●
             Capacidade de carregar dinamicamente módulos
       ●
             Suporte a processadores SMP (symmetrical multiprocessor)
       ●
             Sistema de acesso ao dispositivos (sysfs)




2007­03­24
Kernel Linux 

   Versões: 

     Estáveis:
                 ●
                     Correções de bugs
                 ●
                     Novos drivers


     Desenvolvimento:
                 ●
                     Alterações frequentes e drásticas
                 ●
                     Desenvolvedores testam novas soluções




 2007­03­24
Kernel Linux 


   Versões: 

                                   2.6.0
      Versão principal é 2                       Release é 0

                     Versão secundária é 6 (estável)

      Números pares = versões estáveis  
           Ex.: (2.0, 2.4, 2.6)
      Números ímpares = versões de desenvolvimento  
           Ex.: (1.3, 2.3, 2.5)

                                              Ex.: linux­2.6.20.3.tar.bz2

 2007­03­24
Kernel Linux


  Versões, e hoje como funciona? 

  ●
      Hoje só temos a versão 2.6.X
  ●
      Decisão tomada no Linux Kernel Developers Summit ( 2004 )
  ●
      Todas novas implementações são enviadas para o Andrew Morton 
      (Árvore  ­mm)
  ●
      Após tornar­se estável o patch entra na versão principal.
  ●
      Versão 2.7 ~=  Árvore ­mm




2007­03­24
Kernel Linux 

   Diretórios: 
              arch/            Código específico de arquitetura
              crypto/          API de criptografia
              Documentation/   Documentação
              drivers/         Device Drivers
              fs/              File systems
              include/         Headers
              init/            Kernel boot
              ipc/             Interprocess communication
              kernel/          Core do Kernel


 2007­03­24
Kernel Linux

  Diretórios: 

             lib/        Bibliotecas  
             mm/         Gerenciamento de Memória
             net/        Sistema de Rede 
             scripts/    Scripts em geral
             security/   Subsistema de segurança
             sound/      Susbsistema de som
             usr/        initramfs




2007­03­24
Kernel Linux 

   CodingStyle:  

              Identação         1 TAB = 8 caracteres (!= 8 espaços)
              Colunas           80 

              if(teste) {
                   blah();
              } else {
                      bleh();
              }
              if(foo)
                   bar();
$ linux/Documentation/CodingStyle 
 2007­03­24
Kernel Linux 

   CodingStyle:  

              Funções:
                            1, 2 páginas?
                            < 10 variáveis locais ?

              Comentários:
                   /*
                    *  Olá, Eu sou um comentário!
                    */ 

              Outros: typedef, structs, etc. 


 2007­03­24
Kernel Linux 

   CodingStyle:  

              Ferramenta indent:

              $ indent ­kr ­i8 ­ts8 ­sob ­180 ­ss ­bs ­ps1 <arquivo>

              ou 

              $ scripts/Lindent




 2007­03­24
Kernel Linux 

   Compilando/Carregando/Listando/Descarregando:  
                                          Atenção aos WARNINGS


   $ linux/drivers/net> vi hello.c    
   $ linux/drivers/net> vi Makefile
                                   obj­m += hello.o 
   $ linux/drivers/net> make ­C /usr/src/linux SUBDIRS=$PWD modules

   $ insmod ./modulo.ko       
   $ lsmod
   $ modprobe modulo.ko  (procura por dependências)
   $ rmmod modulo.ko


 2007­03­24
Kernel Linux 

   hello.c  

   #include <linux/init.h>
   #include <linux/module.h>
   MODULE_LICENSE("Dual BSD/GPL");

   static int hello_init(void)
   {
       printk(KERN_ALERT "hello!n");
       return 0;
   }



 2007­03­24
Kernel Linux 

   hello.c  

   static void hello_exit(void)
   {
        printk(KERN_ALERT "Goodbyen");
   }

   module_init(hello_init);
   module_exit(hello_exit);




 2007­03­24
Kernel Linux 

   Depuração com printfk():  


      printk() ~= printf()

      printk(KERN_WARNING “mensagem de warning!n”);
      printk(KERN_DEBUG “mensagem de debug!n”);
      printk(<1> “mensagem de alerta!!n”);
       
      <linux/kernel.h>  valores das MACROS {0,1,2,3, ... 7}

      Prioridade:  0 ­> 7


 2007­03­24
Kernel Linux 

   Ferramentas:  
      diff                           Ferramenta para comparar arquivos
      patch                       Ferramenta para aplicar patchs 
      quilt                          Scripts para manutenção de patchs  
      vimdiff                        Feramenta para comparar arquivos
      qemu                           Emulador
      git                            Controle de fontes/versões
      ctags                          Tags no código fonte
      cscope                         Navega no código fonte
      ketchup                   Ferramenta para atualização do kernel



 2007­03­24
Kernel Linux 

   Ctags:  

      $ make tags

      $ vi .vimrc
          set tags=/usr/src/linux/tags

      :ta printk
      $ vim ­t printk
      CTRL + ]
      CTRL + t


http://ctags.sourceforge.net.
 2007­03­24
Kernel Linux 

   Ferramentas Diff e Patch:  

      $ diff ­ruN linux­x.y.z/ linux/ > meu­patch.diff

      ­r      Recursivo
      ­u      Formato compreensivo
      ­N      Incluir arquivos novos

      $ patch ­p1 < ../meu­patch.diff (diretório abaixo)

      ­p1     Indica qual ponto da árvore ele vai aplicar o patch
              linux/drivers/net/arquivo.c


 2007­03­24
Kernel Linux 

   Ferramentas Diff e Patch (exemplo):  

   ­­­ linux­2.6.20.3.orig/drivers/net/ni65.c
   +++ linux­2.6.20.3/drivers/net/ni65.c
   @@ ­295,7 +295,7 @@ static void ni65_set_performance(struct
    */
    static int ni65_open(struct net_device *dev)
    {
   ­       struct priv *p = (struct priv *) dev­>priv;
   +       struct priv *p = dev­>priv;




 2007­03­24
Kernel Linux 

   Ferramenta Quilt:  

              $ mkdir patches
              $ quilt new nome­do­patch.diff
              $ quilt add nome_do_arquivo
              $ quilt refresh
              $ quilt top
              $ quilt diff
              $ quilt pop [­f] [­a]
              $ quilt push [­f] [­a]
              $ quilt remove


http://savannah.nongnu.org/projects/quilt/
 2007­03­24
Kernel Linux 

   Enviando um patch:  
      SEM anexos, patchs INLINE
      Mensagem em TEXTO PURO ( SEM HTML ) 
                             ( SEM HTML )
      Você testou ?
      Escolheu a lista certa? 
      O patch esta conforme o CodingStyle?
      Mensagem:  O que o patch faz com detalhes
      Assunto: [PATCH] arquivo.c  O que ele faz 
      Assinatura: Signed­off­by: Autor <email>
      No máximo um patch por email ( Depende de outro patch?)

 2007­03­24
Kernel Linux 

   Enviando um patch (exemplo):  

      To: kerneljanitors@....
      Subject: [PATCH] ni65.c: cleanup not needed casts
      Mensagem: Removed all unnecessary casts.
      Signed­off­by: Douglas Schilling Landgraf <dougsland@gmail.com>
      ­­­ linux­2.6.20.3.orig/drivers/net/ni65.c
      +++ linux­2.6.20.3/drivers/net/ni65.c
      @@ ­295,7 +295,7 @@ static void ni65_set_performance(struct
       */
       static int ni65_open(struct net_device *dev)



 2007­03­24
Kernel Linux 

   Instalando o código fonte: 
   Diretório padrão:
              /usr/src/linux  (Devemos usar esse path ?)


   Descompactando:


               $ tar xvjf linux­x­y­z.tar.bz2
                 linux­x.y.z/Documentation/device­mapper/linear.txt
                 linux­x.y.z/Documentation/device­mapper/snapshot.txt
                 linux­x.y.z/Documentation/device­mapper/striped.txt


 2007­03­24
Kernel Linux

  Compilando: 

  $ make help         ajuda
  $ make mrproper     Remover todos os arquivos + .config + backup 
  $ make config       modo texto 
  $ make menuconfig   modo texto (ncurses)
  $ make xconfig      modo gráfico (Xwindows)
  $ make gconfig      modo gráfico (GTK+)




2007­03­24
Kernel Linux

  Compilando: 

  Opções:
             [ *   ]  ­ Habilitado (built­in)     [     ]   ­ Não esta habilitado
             [ M ]   ­ Habilitado (Módulo)

  $ make                           Compilando o Kernel 
  $ make modules_install   Instalando os módulos




2007­03­24
Kernel Linux

  Compilando: 

  # cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz­2.6.X
             vmlinuz = Kernel Linux Compactado
  # cp /usr/src/linux/System.map /boot/System.map­2.6.X
             System.map = Tabela de Símbolos
  # cp /usr/src/linux/.config /boot/config­2.6.X
             Copiar o .config para /boot (backup)




2007­03­24
Kernel Linux

   Compilando: 

   Será necessário criar uma imagem inicial para que o kernel carregue 
   alguns módulos  básicos (IDE, SCSI, RAID) antes de acessar o 
   filesystem.


       # mkinitrd ­k /boot/vmlinuz­2.6.X ­i /boot/initrd­2.6.X
                ou
     #  mkinitrd /boot/initrd­2.6.X.img 2.6.X


                 

2007­03­24
Kernel Linux 

   Compilando (Grub boot loader): 

         $ vi /boot/grub/menu.list


                title Kernel­2.6.X­default
                root (hd0,5)
                kernel /boot/vmlinuz­2.6.X­default root=/dev/hda6 
                vga=0x314 resume=/dev/hda5 splash=silent showopts
                initrd /boot/initrd­2.6.X­default




 2007­03­24
Kernel Linux 

   Compilando (LILO boot loader): 

   $ vi /etc/lilo/lilo.conf
      image=/boot/vmlinuz­2.6.X­default
              label=2.6.X
              root=/dev/hda3
              read­only


   $ /sbin/lilo                Grava as configurações
   $ reboot                    Reiniciando o sistema
   $ uname ­a                  Exibe o kernel atual

 2007­03­24
Kernel Linux 

   Documentação:  
      linux­2.6.X/Documentation

      Linux Kernel Development 2rd Edition (Robert Love)  
      ISBN: 0­672327201
      Linux Device Drivers 3rd Edition  (Cobert, Rubini, Kroah­Hartman)
      ISBN: 0­596­00590­3
      Versão Online (free): http://kroah.com/lkn/
      Linux Weekly News
      http://www.lwn.net
      Google
      http://www.google.com

 2007­03­24
Dúvidas ?
                    Sugestões?

                     http://tchelinux.org
             http://dougsland.livejournal.com




                           Palestrante: Douglas Schilling Landgraf
2007­03­24
                                    Email: dougsland@gmail.com

Más contenido relacionado

La actualidad más candente

São paulo docker meetup #2
São paulo docker meetup #2São paulo docker meetup #2
São paulo docker meetup #2Azuki
 
Apresentacao infotec 2008
Apresentacao infotec 2008Apresentacao infotec 2008
Apresentacao infotec 2008Bruno Santos
 
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
 
Administração de servidores Linux
Administração de servidores LinuxAdministração de servidores Linux
Administração de servidores LinuxJoão Sá
 
Aspectos do kernel Linux e Instalação
Aspectos do kernel Linux e InstalaçãoAspectos do kernel Linux e Instalação
Aspectos do kernel Linux e InstalaçãoMauro Tapajós
 
Implatação de Sistemas de Segurança com Linux
Implatação de Sistemas de Segurança com LinuxImplatação de Sistemas de Segurança com Linux
Implatação de Sistemas de Segurança com LinuxAlvaro Gomes
 
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...Marlon Willrich
 
Trabalho sobre linux-Denise Guimarães
Trabalho sobre linux-Denise GuimarãesTrabalho sobre linux-Denise Guimarães
Trabalho sobre linux-Denise GuimarãesCassandra Cristina
 
Alta Disponibilidade na Prática utilizando servidores Linux
Alta Disponibilidade na Prática utilizando servidores LinuxAlta Disponibilidade na Prática utilizando servidores Linux
Alta Disponibilidade na Prática utilizando servidores Linuxelliando dias
 

La actualidad más candente (20)

São paulo docker meetup #2
São paulo docker meetup #2São paulo docker meetup #2
São paulo docker meetup #2
 
Apresentacao infotec 2008
Apresentacao infotec 2008Apresentacao infotec 2008
Apresentacao infotec 2008
 
Customizando Slackware
Customizando SlackwareCustomizando Slackware
Customizando Slackware
 
ARTIGO CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUX
ARTIGO CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUXARTIGO CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUX
ARTIGO CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUX
 
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
 
Administração de servidores Linux
Administração de servidores LinuxAdministração de servidores Linux
Administração de servidores Linux
 
Kernel do Linux
Kernel do LinuxKernel do Linux
Kernel do Linux
 
Introdução Linux
Introdução LinuxIntrodução Linux
Introdução Linux
 
S.o iuras
S.o iurasS.o iuras
S.o iuras
 
Oficina docker
Oficina dockerOficina docker
Oficina docker
 
Aspectos do kernel Linux e Instalação
Aspectos do kernel Linux e InstalaçãoAspectos do kernel Linux e Instalação
Aspectos do kernel Linux e Instalação
 
Implatação de Sistemas de Segurança com Linux
Implatação de Sistemas de Segurança com LinuxImplatação de Sistemas de Segurança com Linux
Implatação de Sistemas de Segurança com Linux
 
Docker
DockerDocker
Docker
 
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula1 - Semana Sistemas de Informação 2015 - UNI...
 
Trabalho sobre linux-Denise Guimarães
Trabalho sobre linux-Denise GuimarãesTrabalho sobre linux-Denise Guimarães
Trabalho sobre linux-Denise Guimarães
 
Unix - Sistema Operacional
Unix - Sistema OperacionalUnix - Sistema Operacional
Unix - Sistema Operacional
 
Minicurso linux
Minicurso linuxMinicurso linux
Minicurso linux
 
Docker - Básico
Docker - BásicoDocker - Básico
Docker - Básico
 
Alta Disponibilidade na Prática utilizando servidores Linux
Alta Disponibilidade na Prática utilizando servidores LinuxAlta Disponibilidade na Prática utilizando servidores Linux
Alta Disponibilidade na Prática utilizando servidores Linux
 
Exercicios linux
Exercicios linuxExercicios linux
Exercicios linux
 

Destacado (20)

Fanny Liautard - CloseUp mag nov2011
Fanny Liautard - CloseUp mag nov2011Fanny Liautard - CloseUp mag nov2011
Fanny Liautard - CloseUp mag nov2011
 
7 สามัญ ภาษาไทย
7 สามัญ ภาษาไทย7 สามัญ ภาษาไทย
7 สามัญ ภาษาไทย
 
Criatividade co criacao-e_design_thinking
Criatividade co criacao-e_design_thinkingCriatividade co criacao-e_design_thinking
Criatividade co criacao-e_design_thinking
 
WRBB用のBluetooth基板
WRBB用のBluetooth基板WRBB用のBluetooth基板
WRBB用のBluetooth基板
 
Case de Sucesso Symnetics: Pfizer
Case de Sucesso Symnetics: PfizerCase de Sucesso Symnetics: Pfizer
Case de Sucesso Symnetics: Pfizer
 
Ghp2010jav
Ghp2010javGhp2010jav
Ghp2010jav
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
Future search: em busca de uma visão compartilhada de futuro
Future search: em busca de uma visão compartilhada de futuroFuture search: em busca de uma visão compartilhada de futuro
Future search: em busca de uma visão compartilhada de futuro
 
G046024851
G046024851G046024851
G046024851
 
Discrecionalidad y legalidad
Discrecionalidad y legalidadDiscrecionalidad y legalidad
Discrecionalidad y legalidad
 
Calendario Turístico 2010 de San Antonio de Areco
Calendario Turístico 2010 de San Antonio de ArecoCalendario Turístico 2010 de San Antonio de Areco
Calendario Turístico 2010 de San Antonio de Areco
 
Imagens em alta resolução (Sebo e Acervo)
Imagens em alta resolução (Sebo e Acervo)Imagens em alta resolução (Sebo e Acervo)
Imagens em alta resolução (Sebo e Acervo)
 
Andrew Godwin Theory
Andrew Godwin TheoryAndrew Godwin Theory
Andrew Godwin Theory
 
Как быть собой
Как быть собойКак быть собой
Как быть собой
 
RPH WUDHUK
RPH WUDHUKRPH WUDHUK
RPH WUDHUK
 
Ae04602212216
Ae04602212216Ae04602212216
Ae04602212216
 
Case de Sucesso Symnetics: Petrobras
Case de Sucesso Symnetics: PetrobrasCase de Sucesso Symnetics: Petrobras
Case de Sucesso Symnetics: Petrobras
 
Aa04606162167
Aa04606162167Aa04606162167
Aa04606162167
 
Thor desenhos para colorir
Thor desenhos para colorirThor desenhos para colorir
Thor desenhos para colorir
 
H046044147
H046044147H046044147
H046044147
 

Similar a Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X

Linux4all#2
Linux4all#2Linux4all#2
Linux4all#2Daniel
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1Leo Amorim
 
Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Leo Amorim
 
Sistemas Operacionais.pptx
Sistemas Operacionais.pptxSistemas Operacionais.pptx
Sistemas Operacionais.pptxstenio medeiros
 
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
 
Mini-curso de Linux na CPRecife2
Mini-curso de Linux na CPRecife2Mini-curso de Linux na CPRecife2
Mini-curso de Linux na CPRecife2Adriano Melo
 
(01) intro+inicializacao+boot loader+fhs
(01) intro+inicializacao+boot loader+fhs(01) intro+inicializacao+boot loader+fhs
(01) intro+inicializacao+boot loader+fhsAnderson Lago
 
Linux - Sobre a Disciplina + Introdução ao Linux
Linux - Sobre a Disciplina + Introdução ao LinuxLinux - Sobre a Disciplina + Introdução ao Linux
Linux - Sobre a Disciplina + Introdução ao LinuxFrederico Madeira
 
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
 
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé LeiteComo Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé LeiteTchelinux
 
Linux Desktop (Campus Party Recife)
Linux Desktop (Campus Party Recife)Linux Desktop (Campus Party Recife)
Linux Desktop (Campus Party Recife)Adriano Melo
 

Similar a Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X (20)

Linux4all#2
Linux4all#2Linux4all#2
Linux4all#2
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1
 
Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1
 
Sistemas Operacionais.pptx
Sistemas Operacionais.pptxSistemas Operacionais.pptx
Sistemas Operacionais.pptx
 
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
 
Mini-curso de Linux na CPRecife2
Mini-curso de Linux na CPRecife2Mini-curso de Linux na CPRecife2
Mini-curso de Linux na CPRecife2
 
(01) intro+inicializacao+boot loader+fhs
(01) intro+inicializacao+boot loader+fhs(01) intro+inicializacao+boot loader+fhs
(01) intro+inicializacao+boot loader+fhs
 
Axuste do Kernel 2.6
Axuste do Kernel 2.6Axuste do Kernel 2.6
Axuste do Kernel 2.6
 
IntroduçãO Ao Linux
IntroduçãO Ao LinuxIntroduçãO Ao Linux
IntroduçãO Ao Linux
 
Lab so-abertos-unidade8
Lab so-abertos-unidade8Lab so-abertos-unidade8
Lab so-abertos-unidade8
 
O kernel do linux
O kernel do linuxO kernel do linux
O kernel do linux
 
Linux - Sobre a Disciplina + Introdução ao Linux
Linux - Sobre a Disciplina + Introdução ao LinuxLinux - Sobre a Disciplina + Introdução ao Linux
Linux - Sobre a Disciplina + Introdução ao Linux
 
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
 
Apresentação Final
Apresentação FinalApresentação Final
Apresentação Final
 
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé LeiteComo Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite
 
Minicurso Linux
Minicurso Linux Minicurso Linux
Minicurso Linux
 
Debian squeeze
Debian squeezeDebian squeeze
Debian squeeze
 
Linux Desktop (Campus Party Recife)
Linux Desktop (Campus Party Recife)Linux Desktop (Campus Party Recife)
Linux Desktop (Campus Party Recife)
 
Distribuição Linux fedora
Distribuição Linux fedoraDistribuição Linux fedora
Distribuição Linux fedora
 
A.S.O 2 - Linux
A.S.O 2 - LinuxA.S.O 2 - Linux
A.S.O 2 - Linux
 

Más de Tchelinux

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Tchelinux
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeTchelinux
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Tchelinux
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Tchelinux
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeTchelinux
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...Tchelinux
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Tchelinux
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...Tchelinux
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Tchelinux
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeTchelinux
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeTchelinux
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Tchelinux
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...Tchelinux
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...Tchelinux
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Tchelinux
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Tchelinux
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.Tchelinux
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Tchelinux
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygameTchelinux
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Tchelinux
 

Más de Tchelinux (20)

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes.
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygame
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?
 

Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X

  • 1. Introdução ao Desenvolvimento   do Kernel Linux Versões 2.6.X   http://www.tchelinux.org Palestrante: Douglas Schilling Landgraf Email: dougsland@gmail.com
  • 2. Kernel Linux ● Sobre o palestrante ● Sobre a palestra ● Dicas iniciais 2007­03­24
  • 3. Kernel Linux  Onde começar ?  TODO List ? http://www.kernelnewbies.org http://br.kernelnewbies.org/ http://kerneljanitors.org http://kernelnewbies.org/KernelJanitors/Todo http://kernelnewbies.org/KernelMentors http://www.kernel.org 2007­03­24
  • 4. Kernel Linux  Onde obter o código fonte ?  http://www.kernel.org ftp://ftp.kernel.org/pub rsync://rsync.kernel.org/pub/ 2007­03­24
  • 5. Kernel Linux Licença:  ● GPL ( versão 2 )    http://www.gnu.org/copyleft/gpl.html Como funciona? ● Podemos baixar o software e alterar, desde que publiquemos este  software com as licenças originais, incluindo a disponibilização do  código fonte. 2007­03­24
  • 6. Kernel Definição: ● É no kernel que estão definidas funções para operação com  periféricos (mouse, discos, impressoras, interface serial/interface  paralela, usb etc.), gerenciamento de memória, entre outros.  ● Conjunto de programas que fornece, para os programas de usuário  (aplicativos), uma interface para utilizar os recursos do sistema. 2007­03­24
  • 7. Kernel User-Space Aplicativo 1 Aplicativo 2 System Call Interface (open, close, brk (malloc), etc.) Kernel-Space Kernel Subsystems Device Drivers Hardware 2007­03­24
  • 8. Kernel Design: Monolítico versus MicroKernel ● Monolítico: ● Criado em meados de 1980 ● Um grande e único processo (imenso) ● Comunicação trivial (todos rodam em um único processo) ● MicroKernel: ● Separado em dois processos (“servers” / user­space) ● Comunicação via IPC (interprocess communication) ● Modularidade 2007­03­24
  • 9. Kernel  Exemplo: Monolítico MicroKernel Kernel Kernel IPC Softwares Servers Softwares IPC = Interprocess Communication 2007­03­24
  • 10. Kernel Linux Design:  ● Executa em um único processo ● Kernel Linux é monolítico  ● Implementa recursos do microkernel design ● Capacidade de carregar dinamicamente módulos ● Suporte a processadores SMP (symmetrical multiprocessor) ● Sistema de acesso ao dispositivos (sysfs) 2007­03­24
  • 11. Kernel Linux  Versões:  Estáveis: ● Correções de bugs ● Novos drivers Desenvolvimento: ● Alterações frequentes e drásticas ● Desenvolvedores testam novas soluções 2007­03­24
  • 12. Kernel Linux  Versões:    2.6.0 Versão principal é 2 Release é 0 Versão secundária é 6 (estável) Números pares = versões estáveis   Ex.: (2.0, 2.4, 2.6) Números ímpares = versões de desenvolvimento   Ex.: (1.3, 2.3, 2.5) Ex.: linux­2.6.20.3.tar.bz2 2007­03­24
  • 13. Kernel Linux Versões, e hoje como funciona?  ● Hoje só temos a versão 2.6.X ● Decisão tomada no Linux Kernel Developers Summit ( 2004 ) ● Todas novas implementações são enviadas para o Andrew Morton  (Árvore  ­mm) ● Após tornar­se estável o patch entra na versão principal. ● Versão 2.7 ~=  Árvore ­mm 2007­03­24
  • 14. Kernel Linux  Diretórios:  arch/ Código específico de arquitetura crypto/ API de criptografia Documentation/ Documentação drivers/ Device Drivers fs/ File systems include/ Headers init/ Kernel boot ipc/ Interprocess communication kernel/ Core do Kernel 2007­03­24
  • 15. Kernel Linux Diretórios:  lib/ Bibliotecas   mm/ Gerenciamento de Memória net/ Sistema de Rede  scripts/ Scripts em geral security/ Subsistema de segurança sound/ Susbsistema de som usr/ initramfs 2007­03­24
  • 16. Kernel Linux  CodingStyle:   Identação 1 TAB = 8 caracteres (!= 8 espaços) Colunas 80  if(teste) { blah(); } else {         bleh(); } if(foo) bar(); $ linux/Documentation/CodingStyle  2007­03­24
  • 17. Kernel Linux  CodingStyle:   Funções: 1, 2 páginas? < 10 variáveis locais ? Comentários: /*       *  Olá, Eu sou um comentário!       */  Outros: typedef, structs, etc.  2007­03­24
  • 18. Kernel Linux  CodingStyle:   Ferramenta indent: $ indent ­kr ­i8 ­ts8 ­sob ­180 ­ss ­bs ­ps1 <arquivo> ou  $ scripts/Lindent 2007­03­24
  • 19. Kernel Linux  Compilando/Carregando/Listando/Descarregando:    Atenção aos WARNINGS $ linux/drivers/net> vi hello.c     $ linux/drivers/net> vi Makefile                                 obj­m += hello.o  $ linux/drivers/net> make ­C /usr/src/linux SUBDIRS=$PWD modules $ insmod ./modulo.ko        $ lsmod $ modprobe modulo.ko  (procura por dependências) $ rmmod modulo.ko 2007­03­24
  • 20. Kernel Linux  hello.c   #include <linux/init.h> #include <linux/module.h> MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) {     printk(KERN_ALERT "hello!n");     return 0; } 2007­03­24
  • 21. Kernel Linux  hello.c   static void hello_exit(void) {      printk(KERN_ALERT "Goodbyen"); } module_init(hello_init); module_exit(hello_exit); 2007­03­24
  • 22. Kernel Linux  Depuração com printfk():   printk() ~= printf() printk(KERN_WARNING “mensagem de warning!n”); printk(KERN_DEBUG “mensagem de debug!n”); printk(<1> “mensagem de alerta!!n”);   <linux/kernel.h>  valores das MACROS {0,1,2,3, ... 7} Prioridade:  0 ­> 7 2007­03­24
  • 23. Kernel Linux  Ferramentas:   diff                           Ferramenta para comparar arquivos patch                       Ferramenta para aplicar patchs  quilt Scripts para manutenção de patchs   vimdiff Feramenta para comparar arquivos qemu Emulador git Controle de fontes/versões ctags Tags no código fonte cscope Navega no código fonte ketchup                   Ferramenta para atualização do kernel 2007­03­24
  • 24. Kernel Linux  Ctags:   $ make tags $ vi .vimrc set tags=/usr/src/linux/tags :ta printk $ vim ­t printk CTRL + ] CTRL + t http://ctags.sourceforge.net. 2007­03­24
  • 25. Kernel Linux  Ferramentas Diff e Patch:   $ diff ­ruN linux­x.y.z/ linux/ > meu­patch.diff ­r  Recursivo ­u Formato compreensivo ­N Incluir arquivos novos $ patch ­p1 < ../meu­patch.diff (diretório abaixo) ­p1  Indica qual ponto da árvore ele vai aplicar o patch linux/drivers/net/arquivo.c 2007­03­24
  • 26. Kernel Linux  Ferramentas Diff e Patch (exemplo):   ­­­ linux­2.6.20.3.orig/drivers/net/ni65.c +++ linux­2.6.20.3/drivers/net/ni65.c @@ ­295,7 +295,7 @@ static void ni65_set_performance(struct  */  static int ni65_open(struct net_device *dev)  { ­       struct priv *p = (struct priv *) dev­>priv; +       struct priv *p = dev­>priv; 2007­03­24
  • 27. Kernel Linux  Ferramenta Quilt:   $ mkdir patches $ quilt new nome­do­patch.diff $ quilt add nome_do_arquivo $ quilt refresh $ quilt top $ quilt diff $ quilt pop [­f] [­a] $ quilt push [­f] [­a] $ quilt remove http://savannah.nongnu.org/projects/quilt/ 2007­03­24
  • 28. Kernel Linux  Enviando um patch:   SEM anexos, patchs INLINE Mensagem em TEXTO PURO ( SEM HTML )  ( SEM HTML ) Você testou ? Escolheu a lista certa?  O patch esta conforme o CodingStyle? Mensagem:  O que o patch faz com detalhes Assunto: [PATCH] arquivo.c  O que ele faz  Assinatura: Signed­off­by: Autor <email> No máximo um patch por email ( Depende de outro patch?) 2007­03­24
  • 29. Kernel Linux  Enviando um patch (exemplo):   To: kerneljanitors@.... Subject: [PATCH] ni65.c: cleanup not needed casts Mensagem: Removed all unnecessary casts. Signed­off­by: Douglas Schilling Landgraf <dougsland@gmail.com> ­­­ linux­2.6.20.3.orig/drivers/net/ni65.c +++ linux­2.6.20.3/drivers/net/ni65.c @@ ­295,7 +295,7 @@ static void ni65_set_performance(struct  */  static int ni65_open(struct net_device *dev) 2007­03­24
  • 30. Kernel Linux  Instalando o código fonte:  Diretório padrão: /usr/src/linux  (Devemos usar esse path ?) Descompactando: $ tar xvjf linux­x­y­z.tar.bz2 linux­x.y.z/Documentation/device­mapper/linear.txt linux­x.y.z/Documentation/device­mapper/snapshot.txt linux­x.y.z/Documentation/device­mapper/striped.txt 2007­03­24
  • 31. Kernel Linux Compilando:  $ make help ajuda $ make mrproper Remover todos os arquivos + .config + backup  $ make config  modo texto  $ make menuconfig   modo texto (ncurses) $ make xconfig modo gráfico (Xwindows) $ make gconfig modo gráfico (GTK+) 2007­03­24
  • 32. Kernel Linux Compilando:  Opções: [ *   ]  ­ Habilitado (built­in)   [     ]   ­ Não esta habilitado [ M ]   ­ Habilitado (Módulo) $ make Compilando o Kernel  $ make modules_install   Instalando os módulos 2007­03­24
  • 33. Kernel Linux Compilando:  # cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz­2.6.X vmlinuz = Kernel Linux Compactado # cp /usr/src/linux/System.map /boot/System.map­2.6.X System.map = Tabela de Símbolos # cp /usr/src/linux/.config /boot/config­2.6.X Copiar o .config para /boot (backup) 2007­03­24
  • 34. Kernel Linux Compilando:    Será necessário criar uma imagem inicial para que o kernel carregue  alguns módulos  básicos (IDE, SCSI, RAID) antes de acessar o  filesystem.       # mkinitrd ­k /boot/vmlinuz­2.6.X ­i /boot/initrd­2.6.X ou #  mkinitrd /boot/initrd­2.6.X.img 2.6.X                  2007­03­24
  • 35. Kernel Linux  Compilando (Grub boot loader):  $ vi /boot/grub/menu.list title Kernel­2.6.X­default      root (hd0,5)      kernel /boot/vmlinuz­2.6.X­default root=/dev/hda6  vga=0x314 resume=/dev/hda5 splash=silent showopts      initrd /boot/initrd­2.6.X­default 2007­03­24
  • 36. Kernel Linux  Compilando (LILO boot loader):  $ vi /etc/lilo/lilo.conf image=/boot/vmlinuz­2.6.X­default label=2.6.X root=/dev/hda3 read­only $ /sbin/lilo Grava as configurações $ reboot Reiniciando o sistema $ uname ­a Exibe o kernel atual 2007­03­24
  • 37. Kernel Linux  Documentação:   linux­2.6.X/Documentation Linux Kernel Development 2rd Edition (Robert Love)   ISBN: 0­672327201 Linux Device Drivers 3rd Edition  (Cobert, Rubini, Kroah­Hartman) ISBN: 0­596­00590­3 Versão Online (free): http://kroah.com/lkn/ Linux Weekly News http://www.lwn.net Google http://www.google.com 2007­03­24
  • 38. Dúvidas ? Sugestões? http://tchelinux.org http://dougsland.livejournal.com Palestrante: Douglas Schilling Landgraf 2007­03­24 Email: dougsland@gmail.com