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

  • 1,013 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,013
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
11
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Como ajudar no desenvolvimento do kernel Linux? Fábio Olivé Leite fabio.olive@gmail.com
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Obrigado! A única pergunta boba é a não perguntada.