Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Como ajudar no desenvolvimento
       do kernel Linux?



           Fábio Olivé Leite
        fabio.olive@gmail.com
Tópicos
●
    O que é o kernel Linux?
●
    Como ele é desenvolvido?
●
    Sua hierarquia social
●
    Sua estrutura
●
   ...
O que é o kernel Linux?
●
    Núcleo do Sistema Operacional
    –   Linux é só o caroço
●
    É carregado pelo boot loader...
Como ele é desenvolvido?
●
    O processo de desenvolvimento é
    massivamente distribuído
●
    Funciona 24h por dia
●
 ...
Sua hierarquia social
●
    O time de desenvolvimento é uma
    MERITOCRACIA
●
    A confiança é conquistada aos poucos,
 ...
Sua estrutura
●
    Projeto estruturado muito limpo
●
    Interfaces bem definidas entre blocos


     Proc 1      Proc 2 ...
Sua estrutura
fleite@sleipnir:~/git/linux-2.6
$ ls
arch           cscope.out     ipc           net
block          cscope.p...
Seu comportamento
●
    Depois do boot, o kernel está sempre:
    –   Atendendo pedidos dos processos
    –   Atendendo pe...
A mítica figura do kernel hacker
●
    “ Mamãe, eu quero ser um kernel hacker!”
●
    É complexo, mas nem tanto
    –   Po...
Ferramentas para começar
●
    Uma máquina com Linux
●
    Um bom editor de textos PARA CÓDIGO
●
    Compilador C
●
    gi...
Ferramentas para começar
         Uma máquina com Linux
●
    O Linux é desenvolvido usando Linux :)
●
    Para mexer no k...
Ferramentas para começar
     Um bom editor de CÓDIGO
●
    Terminal:
    –   Bom e velho vi (vim!)
    –   EMACS
●
    Gr...
Ferramentas para começar
              Compilador C
●
    O kernel é feito em C e um pouco de
    Assembly
●
    Basta ins...
Ferramentas para começar
     git para baixar código fonte
●
    O git foi desenvolvido especificamente para
    versionar...
Ferramentas para começar
     cscope para não se perder
●
    O cscope gera uma base de dados que
    descreve todos os sí...
Ferramentas para começar
            diff e patch
●
    diff e patch são os “ vovôs” d o versionamento
    de código
●
   ...
Ferramentas para começar
         Programa de email bom
●
    Deve-se ter certos cuidados ao enviar
    patches (diffs) po...
O negócio é começar!


     Ninguém nasceu sabendo.

Algumas pessoas resolveram começar.

  Ever tried. Ever failed. No ma...
Obrigado!




A única pergunta boba é a não perguntada.
Upcoming SlideShare
Loading in …5
×

Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé Leite

1,321 views

Published on

Published in: Technology, News & Politics
  • Be the first to comment

  • Be the first to like this

Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé Leite

  1. 1. Como ajudar no desenvolvimento do kernel Linux? Fábio Olivé Leite fabio.olive@gmail.com
  2. 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
  3. 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
  4. 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
  5. 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”
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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!
  13. 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
  14. 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
  15. 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
  16. 16. Ferramentas para começar diff e patch ● diff e patch são os “ vovôs” d o 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
  17. 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
  18. 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)
  19. 19. Obrigado! A única pergunta boba é a não perguntada.

×