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,247 views
1,155 views

Published on

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,247
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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.

×