• Nenhum resultado encontrado

Linux Kernel. Iniciando no desenvolvimento do Linux Kernel

N/A
N/A
Protected

Academic year: 2021

Share "Linux Kernel. Iniciando no desenvolvimento do Linux Kernel"

Copied!
27
0
0

Texto

(1)

Linux Kernel

Iniciando no desenvolvimento do Linux Kernel

Francisco Alecrim

(2)

Tópicos

O que é o Linux? Quem criou? Quem faz?

Código Fonte do kernel Linux

Compilando/Compilando/Instalando seu kernel

Meus primeiros códigos do kernel

hello kernel world, procfs, built-in

Quero ser um kernel developer!

kernel newbies , kernel janitors, kernel mentors

Qual o tamanho do problema?

Facilitando navegação: ctags e cscope

(3)

O que é o Linux?

(4)

Quem criou?

Linus Torvalds

1991

Universidade na Finlandia

GPLv2

(5)

Quem faz?

Mais de 3000 pessoas

Mais de 250 empresas

(6)
(7)
(8)

Código Fonte do Linux

Site :

http://www.kernel.org

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

$ git branch

(9)

Santa trindade?

(10)

Configure

$ make defconfig #configure

$ make menuconfig #configure

(11)

Make

$ make

(12)

Make Install

$ ls arch/x86/boot/bzImage # este é o seu kernel

(13)

QEMU ajuda a testar seu kernel

Um pouco de QEMU antes de colocar seu kernel :

$ qemu-img create debian.raw 2G

$ sudo losetup -f

$ sudo losetup /dev/loop0 debian.raw

$ sudo mkdir -p mnt

$ sudo mount /dev/loop0 mnt

$ sudo qemu -net tap -net nic -boot d -cdrom debian-testing-i386-CD-1.iso -hda

debian.img #INSTALL

(14)

QEMU ajuda a testar seu kernel

Testando seu kernel :

KERNEL=linux-2.6/arch/x86/boot/bzImage

ROOTFS=debian.img

CDROM=debian-testing-i386-CD-1.iso

sudo qemu cdrom $CDROM hda $ROOTFS kernel $KERNEL net tap net nic

-append "root=/dev/sda1 console=ttyS0" -nographic

(15)

Meus primeiros códigos de kernel

Demonstrações e dúvidas

hello-1.c

hello-4.c

procfs1.c

Built-in procfs1.c

(16)
(17)
(18)
(19)
(20)

Quero ser um kernel developer!

Site:

http://kernelnewbies.org/

* Kernel Newbie

* Kernel Janitors

(21)

Quero meu código na árvore do Linus!

(22)

Coding style: checkpatch.pl

1 - Indentação de 8 characteres

2 - Linhas podem possuir apenas 80 colunas

3 - Localização de Chaves - Localizacao das chaves deve ser na ultima coluna do primeira linha e na primeira coluna da ultima linha

4 - Nomes de variaveis - LOCAIS devem ser curtas e simples GLOBAIS devem ser bem descritas, evitando contrações

5 - Evita typedefs - Evite utilizar typedefs para ponteiros e estruturas, tornando o código mais complicado.

6 - Funtions devem ser curtas e claras.

6.1 - Dimensões (80x24) 6.2 - Não mais do que 5-10 variáveis. 6.3 - Sem isto, você provavelmente está fazendo algo errado.

7 - Centralizar saída de funções.

(23)

Coding style: checkpatch.pl

11 - Estruturas de dados – no garbage colector

12 – Macros - Macros devem ser escritas em letras MAIUSCULAS. 13 - Printing messages - Cuidados com erros de escrita nas mensagens.

14 - Alocando memoria - O kernel possui diversas formas de alocação de memória. A forma mais recomendada de passar o tamanho memória que deve ser alocado é: p = kmalloc(sizeof(*p), …);

15 - Funções inline - Neste tópico ele desistimula a utilização de funções inline. 16 - Funções retornam valores ou nomes - 0 = sucesso -Exxx = falhou :P

17 - Não re-invente macros

(24)

Submetendo patches

1 - Criando e enviando suas mudanças git format-patch -1

2 - Descreva o suas alterações

Seja simples e objetivo, descrevendo os detalhes tecnicos. 3 - Separe as alterações

Se você deseja fazer uma correção em um driver A e depois

uma outra alterção em um driver B. Separe em 2 patches para ficar mais organizado. 4 - Verifique o estilo

(25)

Submetendo patches

6 - Copie a lista- CC a mailing list.

7 - No MIME, no links, no compression, no attachments. Just plain text.

8 - Limite de tamanho - Se o seu patch é maior que 40kb, é melhor deixar ele na web e mandar a URL. 9 - Kernel version - Mandar a versao do kernel, caso não seja a current.

10 - Não perca a coragem, re-envie. 11 - Inclua PATCH no subject. 12 - Assine seus patches.

13 - Acked-by para o revisor. 14 - O formato canonical

(26)

Links

* http://kernelnewbies.org * http://kernel.org * http://www.linuxfoundation.org/publications/linuxkerneldevelopment.php * http://lwn.net/Articles/334721/ * http://www.qemu.org/qemu-doc.html#SEC10 * http://tldp.org/LDP/lkmpg/2.6/html/

(27)

Obrigado

http://franciscoalecrim.com

alecrim at gmail.com

alecrim @ irc.freenode.net

Referências

Documentos relacionados

leva ao entendimento de que tanto nos relacionamentos comerciais ou de mercado como nas parcerias de longo prazo os elementos formadores de valor associados ao produto em si (valor

Os pacientes foram submetidos ao teste de equilíbrio peritoneal (PET), a avaliação da perda de proteínas para a solução de diálise (PSD) e a absorção de glicose.

(2) Essas medidas incluem o congelamento de fundos e de recursos económicos das pessoas singulares ou colectivas, entidades e organismos enumerados na lista constante do

Como resultado, Agostinho utiliza tais discussões para mostrar que tudo está na ordem, mas não o próprio Deus; que tudo o que está ‘junto a Deus’, portanto, está fora da

Antônia mora em uma pequena cidade, no interior de Minas Gerais. Lá, ter sonhos grandiosos não é muito comum. Por isso, Dona Corinha, uma vizinha antiga, sempre avisava a menina:

O BPGV conserva actualmente 322 acessos de germoplasma de Cucurbitáceas dos géneros Citrullus e Cucurbita, que se encontram adaptados às diferentes condições

Foi verificado recentemente, em estudos com ratos diabéticos experimentais, que o treinamento físico aumenta a capacidade do músculo esquelético para oxidar substratos e

A vivência internacional de estudantes universitários nos programas de mobilidade acadêmica, certamente lhes proporcionam novas experiências, tanto de vida, como