Como Colaborar no
    Desenvolvimento do Kernel Linux



                                  Fábio Olivé Leite
                               fabio.olive@gmail.com




1° Workshop de Desenvolvimento TcheLinux   http://www.tchelinux.org
31/03/2007 – FTEC – Porto Alegre
Tópicos
   ●
       O que é o kernel Linux?
   ●
       Como ele é desenvolvido?
   ●
       Sua hierarquia social
   ●
       Sua estrutura
   ●
       Seu comportamento
   ●
       A mítica figura do kernel hacker
   ●
       Ferramentas para começar


1° Workshop de Desenvolvimento TcheLinux    http://www.tchelinux.org
31/03/2007 – FTEC – Porto Alegre
O que é o kernel Linux?
   ●
       Núcleo do Sistema Operacional
         –   Linux é só o caroço
   ●
       É carregado pelo boot loader, inicializa o 
       hardware, e inicia o primeiro processo
   ●
       Funciona geralmente em benefício dos 
       processos, por trás dos panos
   ●
       Gnome, KDE, X, login, vi, nada é kernel
1° Workshop de Desenvolvimento TcheLinux   http://www.tchelinux.org
31/03/2007 – FTEC – Porto Alegre
Como ele é desenvolvido?
●
    O processo de desenvolvimento é 
    massivamente distribuído
●
    Funciona 24h por dia
●
    Primariamente via emails em listas de 
    discussão e patches
●
    Peer review intenso


1° Workshop de Desenvolvimento TcheLinux   http://www.tchelinux.org
31/03/2007 – FTEC – Porto Alegre
Sua hierarquia social
   ●
       O time de desenvolvimento é uma 
       MERITOCRACIA
   ●
       A confiança é conquistada aos poucos, 
       baseada em quesitos TÉCNICOS
   ●
       As diversas áreas do kernel possuem 
       pessoas responsáveis
   ●
       Todos são “casca grossa”
1° Workshop de Desenvolvimento TcheLinux   http://www.tchelinux.org
31/03/2007 – FTEC – Porto Alegre
Sua estrutura
●
    Projeto estruturado muito limpo
●
    Interfaces bem definidas entre blocos

      Proc 1             Proc 2             Proc 1
                                                                        Chamadas de Sistema

    Protocolos de Rede                     Sistemas de arquivos               Processos
         Seriais                   Rede        Bloco                          Memória
                                       Hardware

1° Workshop de Desenvolvimento TcheLinux     http://www.tchelinux.org
31/03/2007 – FTEC – Porto Alegre
Sua estrutura
  fleite@sleipnir:~/git/linux-2.6
  $ ls
  arch           cscope.out     ipc                                   net
  block          cscope.po.out Kbuild                                 README
  COPYING        Documentation kernel                                 REPORTING-BUGS
  CREDITS        drivers        lib                                   scripts
  crypto         fs             MAINTAINERS                           security
  cscope.files   include        Makefile                              sound
  cscope.in.out init            mm                                    usr

  $ ls net
  802               dccp               Kconfig        nonet.c             tipc
  ...
  bluetooth         ipv4               netfilter      sctp                xfrm
  bridge            ipv6               netlabel       socket.c
  compat.c          ipx                netlink        sunrpc
  core              irda               netrom         sysctl_net.c



1° Workshop de Desenvolvimento TcheLinux   http://www.tchelinux.org
31/03/2007 – FTEC – Porto Alegre
Seu comportamento
●
    Depois do boot, o kernel está sempre:
      –   Atendendo pedidos dos processos
      –   Atendendo pedidos do hardware
●
    Nunca fica esperando
●
    Redes e disco influenciam memória, que 
    influencia rede e disco; tudo é interligado


1° Workshop de Desenvolvimento TcheLinux   http://www.tchelinux.org
31/03/2007 – FTEC – Porto Alegre
A mítica figura do kernel hacker
●
    “Mamãe, eu quero ser um kernel hacker!”
●
    É complexo, mas nem tanto
      –   Pode­se começar pequeno, e isto também tem um 
          valor inestimável (kernel janitors)
●
    Antes de mais nada, entender de arquitetura de 
    computadores, pois o kernel gerencia o 
    hardware

1° Workshop de Desenvolvimento TcheLinux   http://www.tchelinux.org
31/03/2007 – FTEC – Porto Alegre
Ferramentas para começar
   ●
       Uma máquina com Linux
   ●
       Um bom editor de textos PARA CÓDIGO
   ●
       Compilador C
   ●
       git para baixar o código fonte
   ●
       cscope para não se perder
   ●
       diff e patch
   ●
       Programa de e­mail bom
1° Workshop de Desenvolvimento TcheLinux   http://www.tchelinux.org
31/03/2007 – FTEC – Porto Alegre
Ferramentas para começar
              Uma máquina com Linux
   ●
       O Linux é desenvolvido usando Linux :)
   ●
       Para mexer no kernel, é necessário uma 
       máquina bem configurada e funcionando
         –   Se der problema, pelo menos tu sabes que foi 
             numa mexida no kernel
         –   Mexer no kernel tem o poder de estragar todo o 
             resto
1° Workshop de Desenvolvimento TcheLinux   http://www.tchelinux.org
31/03/2007 – FTEC – Porto Alegre
Ferramentas para começar
             Um bom editor de CÓDIGO
   ●
       Terminal:
         –   Bom e velho vi (vim!)
         –   EMACS
   ●
       Gráficos
         –   Gnome: gedit
         –   KDE: kate, kwrite
   ●
       CSCOPE!
1° Workshop de Desenvolvimento TcheLinux   http://www.tchelinux.org
31/03/2007 – FTEC – Porto Alegre
Ferramentas para começar
                   Compilador C
   ●
       O kernel é feito em C e um pouco de 
       Assembly
   ●
       Basta instalar os pacotes de 
       desenvolvimento da sua distro
         –   Talvez já estejam instalados
   ●
       GCCismos

1° Workshop de Desenvolvimento TcheLinux   http://www.tchelinux.org
31/03/2007 – FTEC – Porto Alegre
Ferramentas para começar
             git para baixar código fonte
   ●
       O git foi desenvolvido especificamente para 
       versionar o código do kernel, de acordo com 
       as suas necessidades específicas
   ●
       “stupid content tracker”
   ●
       Cada repositório é completo
   ●
       Suporta vários modelos de desenvolvimento

1° Workshop de Desenvolvimento TcheLinux   http://www.tchelinux.org
31/03/2007 – FTEC – Porto Alegre
Ferramentas para começar
             cscope para não se perder
   ●
       O cscope gera uma base de dados que 
       descreve todos os símbolos presentes em 
       um programa em C
   ●
       Esta base pode ser usada pelos editores de 
       código para navegar entre arquivos e através 
       das funções facilmente


1° Workshop de Desenvolvimento TcheLinux   http://www.tchelinux.org
31/03/2007 – FTEC – Porto Alegre
Ferramentas para começar
                    diff e patch
   ●
       diff e patch são os “vovôs” do versionamento 
       de código
   ●
       Ainda são usados diariamente
   ●
       diff calcula a diferença entre dois arquivos de 
       texto (código fonte é texto)
   ●
       patch aplica as modificações contidas num 
       arquivo gerado pelo diff
1° Workshop de Desenvolvimento TcheLinux   http://www.tchelinux.org
31/03/2007 – FTEC – Porto Alegre
Ferramentas para começar
              Programa de email bom
   ●
       Deve­se ter certos cuidados ao enviar 
       patches (diffs) por email
   ●
       A forma padrão de envio de patches é por 
       email, auxiliado pelo git
   ●
       Principais pontos a cuidar
         –   Tabs e espaços
         –   Quebras de linha
1° Workshop de Desenvolvimento TcheLinux   http://www.tchelinux.org
31/03/2007 – FTEC – Porto Alegre
O negócio é começar!

                          Ninguém nasceu sabendo.

            Algumas pessoas resolveram começar.

                  Ever tried. Ever failed. No matter.
                  Try again. Fail again. Fail better.
                           (Samuel Beckett)

1° Workshop de Desenvolvimento TcheLinux   http://www.tchelinux.org
31/03/2007 – FTEC – Porto Alegre
Demonstração / Perguntas




       A única pergunta boba é a não perguntada.




1° Workshop de Desenvolvimento TcheLinux   http://www.tchelinux.org
31/03/2007 – FTEC – Porto Alegre

Como Colaborar no Desenvolvimento do Kernel Linux - Fábio Olivé Leite

  • 1.
    Como Colaborar no Desenvolvimento do Kernel Linux Fábio Olivé Leite fabio.olive@gmail.com 1° Workshop de Desenvolvimento TcheLinux http://www.tchelinux.org 31/03/2007 – FTEC – Porto Alegre
  • 2.
    Tópicos ● O que é o kernel Linux? ● Como ele é desenvolvido? ● Sua hierarquia social ● Sua estrutura ● Seu comportamento ● A mítica figura do kernel hacker ● Ferramentas para começar 1° Workshop de Desenvolvimento TcheLinux http://www.tchelinux.org 31/03/2007 – FTEC – Porto Alegre
  • 3.
    O que é o kernel Linux? ● Núcleo do Sistema Operacional – Linux é só o caroço ● É carregado pelo boot loader, inicializa o  hardware, e inicia o primeiro processo ● Funciona geralmente em benefício dos  processos, por trás dos panos ● Gnome, KDE, X, login, vi, nada é kernel 1° Workshop de Desenvolvimento TcheLinux http://www.tchelinux.org 31/03/2007 – FTEC – Porto Alegre
  • 4.
    Como ele é desenvolvido? ● O processo de desenvolvimento é  massivamente distribuído ● Funciona 24h por dia ● Primariamente via emails em listas de  discussão e patches ● Peer review intenso 1° Workshop de Desenvolvimento TcheLinux http://www.tchelinux.org 31/03/2007 – FTEC – Porto Alegre
  • 5.
    Sua hierarquia social ● O time de desenvolvimento é uma  MERITOCRACIA ● A confiança é conquistada aos poucos,  baseada em quesitos TÉCNICOS ● As diversas áreas do kernel possuem  pessoas responsáveis ● Todos são “casca grossa” 1° Workshop de Desenvolvimento TcheLinux http://www.tchelinux.org 31/03/2007 – FTEC – Porto Alegre
  • 6.
    Sua estrutura ● Projeto estruturado muito limpo ● Interfaces bem definidas entre blocos Proc 1 Proc 2 Proc 1 Chamadas de Sistema Protocolos de Rede Sistemas de arquivos Processos Seriais Rede Bloco Memória Hardware 1° Workshop de Desenvolvimento TcheLinux http://www.tchelinux.org 31/03/2007 – FTEC – Porto Alegre
  • 7.
    Sua estrutura fleite@sleipnir:~/git/linux-2.6 $ ls arch cscope.out ipc net block cscope.po.out Kbuild README COPYING Documentation kernel REPORTING-BUGS CREDITS drivers lib scripts crypto fs MAINTAINERS security cscope.files include Makefile sound cscope.in.out init mm usr $ ls net 802 dccp Kconfig nonet.c tipc ... bluetooth ipv4 netfilter sctp xfrm bridge ipv6 netlabel socket.c compat.c ipx netlink sunrpc core irda netrom sysctl_net.c 1° Workshop de Desenvolvimento TcheLinux http://www.tchelinux.org 31/03/2007 – FTEC – Porto Alegre
  • 8.
    Seu comportamento ● Depois do boot, o kernel está sempre: – Atendendo pedidos dos processos – Atendendo pedidos do hardware ● Nunca fica esperando ● Redes e disco influenciam memória, que  influencia rede e disco; tudo é interligado 1° Workshop de Desenvolvimento TcheLinux http://www.tchelinux.org 31/03/2007 – FTEC – Porto Alegre
  • 9.
    A mítica figura do kernel hacker ● “Mamãe, eu quero ser um kernel hacker!” ● É complexo, mas nem tanto – Pode­se começar pequeno, e isto também tem um  valor inestimável (kernel janitors) ● Antes de mais nada, entender de arquitetura de  computadores, pois o kernel gerencia o  hardware 1° Workshop de Desenvolvimento TcheLinux http://www.tchelinux.org 31/03/2007 – FTEC – Porto Alegre
  • 10.
    Ferramentas para começar ● Uma máquina com Linux ● Um bom editor de textos PARA CÓDIGO ● Compilador C ● git para baixar o código fonte ● cscope para não se perder ● diff e patch ● Programa de e­mail bom 1° Workshop de Desenvolvimento TcheLinux http://www.tchelinux.org 31/03/2007 – FTEC – Porto Alegre
  • 11.
    Ferramentas para começar Uma máquina com Linux ● O Linux é desenvolvido usando Linux :) ● Para mexer no kernel, é necessário uma  máquina bem configurada e funcionando – Se der problema, pelo menos tu sabes que foi  numa mexida no kernel – Mexer no kernel tem o poder de estragar todo o  resto 1° Workshop de Desenvolvimento TcheLinux http://www.tchelinux.org 31/03/2007 – FTEC – Porto Alegre
  • 12.
    Ferramentas para começar Um bom editor de CÓDIGO ● Terminal: – Bom e velho vi (vim!) – EMACS ● Gráficos – Gnome: gedit – KDE: kate, kwrite ● CSCOPE! 1° Workshop de Desenvolvimento TcheLinux http://www.tchelinux.org 31/03/2007 – FTEC – Porto Alegre
  • 13.
    Ferramentas para começar Compilador C ● O kernel é feito em C e um pouco de  Assembly ● Basta instalar os pacotes de  desenvolvimento da sua distro – Talvez já estejam instalados ● GCCismos 1° Workshop de Desenvolvimento TcheLinux http://www.tchelinux.org 31/03/2007 – FTEC – Porto Alegre
  • 14.
    Ferramentas para começar git para baixar código fonte ● O git foi desenvolvido especificamente para  versionar o código do kernel, de acordo com  as suas necessidades específicas ● “stupid content tracker” ● Cada repositório é completo ● Suporta vários modelos de desenvolvimento 1° Workshop de Desenvolvimento TcheLinux http://www.tchelinux.org 31/03/2007 – FTEC – Porto Alegre
  • 15.
    Ferramentas para começar cscope para não se perder ● O cscope gera uma base de dados que  descreve todos os símbolos presentes em  um programa em C ● Esta base pode ser usada pelos editores de  código para navegar entre arquivos e através  das funções facilmente 1° Workshop de Desenvolvimento TcheLinux http://www.tchelinux.org 31/03/2007 – FTEC – Porto Alegre
  • 16.
    Ferramentas para começar diff e patch ● diff e patch são os “vovôs” do versionamento  de código ● Ainda são usados diariamente ● diff calcula a diferença entre dois arquivos de  texto (código fonte é texto) ● patch aplica as modificações contidas num  arquivo gerado pelo diff 1° Workshop de Desenvolvimento TcheLinux http://www.tchelinux.org 31/03/2007 – FTEC – Porto Alegre
  • 17.
    Ferramentas para começar Programa de email bom ● Deve­se ter certos cuidados ao enviar  patches (diffs) por email ● A forma padrão de envio de patches é por  email, auxiliado pelo git ● Principais pontos a cuidar – Tabs e espaços – Quebras de linha 1° Workshop de Desenvolvimento TcheLinux http://www.tchelinux.org 31/03/2007 – FTEC – Porto Alegre
  • 18.
    O negócio é começar! Ninguém nasceu sabendo. Algumas pessoas resolveram começar. Ever tried. Ever failed. No matter. Try again. Fail again. Fail better. (Samuel Beckett) 1° Workshop de Desenvolvimento TcheLinux http://www.tchelinux.org 31/03/2007 – FTEC – Porto Alegre
  • 19.
    Demonstração / Perguntas A única pergunta boba é a não perguntada. 1° Workshop de Desenvolvimento TcheLinux http://www.tchelinux.org 31/03/2007 – FTEC – Porto Alegre