19
1° Workshop de Desenvolvimento TcheLinux 31/03/2007 – FTEC – Porto Alegre http://www.tchelinux.org Como Colaborar no Desenvolvimento do Kernel Linux Fábio Olivé Leite [email protected]

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

Embed Size (px)

Citation preview

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

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]

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

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

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

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

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

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

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

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”

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

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

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

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

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

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

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

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

– 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

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

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 e­mail bom

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

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

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

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!

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

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

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

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

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

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

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

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

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

1° Workshop de Desenvolvimento TcheLinux31/03/2007 – FTEC – Porto Alegre

http://www.tchelinux.org

Ferramentas para começarPrograma 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

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

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)

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

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.