Upload
tchelinux-slides
View
875
Download
0
Embed Size (px)
Citation preview
1° Workshop de Desenvolvimento TcheLinux31/03/2007 – FTEC – Porto Alegre
http://www.tchelinux.org
Como Colaborar noDesenvolvimento do Kernel Linux
Fábio Olivé [email protected]
1° Workshop de Desenvolvimento TcheLinux31/03/2007 – FTEC – Porto Alegre
http://www.tchelinux.org
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 TcheLinux31/03/2007 – FTEC – Porto Alegre
http://www.tchelinux.org
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 TcheLinux31/03/2007 – FTEC – Porto Alegre
http://www.tchelinux.org
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 TcheLinux31/03/2007 – FTEC – Porto Alegre
http://www.tchelinux.org
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 TcheLinux31/03/2007 – FTEC – Porto Alegre
http://www.tchelinux.org
Sua estrutura● Projeto estruturado muito limpo● Interfaces bem definidas entre blocos
HardwareRedeSeriais Bloco
Protocolos de Rede Sistemas de arquivosMemóriaProcessos
Chamadas de SistemaProc 1 Proc 2 Proc 1
1° Workshop de Desenvolvimento TcheLinux31/03/2007 – FTEC – Porto Alegre
http://www.tchelinux.org
Sua estruturafleite@sleipnir:~/git/linux-2.6$ lsarch cscope.out ipc netblock cscope.po.out Kbuild READMECOPYING Documentation kernel REPORTING-BUGSCREDITS drivers lib scriptscrypto fs MAINTAINERS securitycscope.files include Makefile soundcscope.in.out init mm usr
$ ls net802 dccp Kconfig nonet.c tipc...bluetooth ipv4 netfilter sctp xfrmbridge ipv6 netlabel socket.ccompat.c ipx netlink sunrpccore irda netrom sysctl_net.c
1° Workshop de Desenvolvimento TcheLinux31/03/2007 – FTEC – Porto Alegre
http://www.tchelinux.org
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 TcheLinux31/03/2007 – FTEC – Porto Alegre
http://www.tchelinux.org
A mítica figura do kernel hacker● “Mamãe, eu quero ser um kernel hacker!”● É complexo, mas nem tanto
– Podese 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 TcheLinux31/03/2007 – FTEC – Porto Alegre
http://www.tchelinux.org
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 email bom
1° Workshop de Desenvolvimento TcheLinux31/03/2007 – FTEC – Porto Alegre
http://www.tchelinux.org
Ferramentas para começarUma 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 TcheLinux31/03/2007 – FTEC – Porto Alegre
http://www.tchelinux.org
Ferramentas para começarUm bom editor de CÓDIGO
● Terminal:– Bom e velho vi (vim!)– EMACS
● Gráficos– Gnome: gedit– KDE: kate, kwrite
● CSCOPE!
1° Workshop de Desenvolvimento TcheLinux31/03/2007 – FTEC – Porto Alegre
http://www.tchelinux.org
Ferramentas para começarCompilador 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 TcheLinux31/03/2007 – FTEC – Porto Alegre
http://www.tchelinux.org
Ferramentas para começargit 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 TcheLinux31/03/2007 – FTEC – Porto Alegre
http://www.tchelinux.org
Ferramentas para começarcscope 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 TcheLinux31/03/2007 – FTEC – Porto Alegre
http://www.tchelinux.org
Ferramentas para começardiff 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 TcheLinux31/03/2007 – FTEC – Porto Alegre
http://www.tchelinux.org
Ferramentas para começarPrograma de email bom
● Devese 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 TcheLinux31/03/2007 – FTEC – Porto Alegre
http://www.tchelinux.org
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 TcheLinux31/03/2007 – FTEC – Porto Alegre
http://www.tchelinux.org
Demonstração / Perguntas
A única pergunta boba é a não perguntada.