Núcleo do Linux (Kernel Linux)

luiz_arthur 7,785 views 81 slides Jan 18, 2012
Slide 1
Slide 1 of 81
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58
Slide 59
59
Slide 60
60
Slide 61
61
Slide 62
62
Slide 63
63
Slide 64
64
Slide 65
65
Slide 66
66
Slide 67
67
Slide 68
68
Slide 69
69
Slide 70
70
Slide 71
71
Slide 72
72
Slide 73
73
Slide 74
74
Slide 75
75
Slide 76
76
Slide 77
77
Slide 78
78
Slide 79
79
Slide 80
80
Slide 81
81

About This Presentation

No description available for this slideshow.


Slide Content

Software Livre e o
Núcleo do Linux

Frank Helbert
Luiz Arthur
Rodrigo Campiolo
1
O trabalho “Software Livre e o Núcleo do Linux” de Frank Helbert, Luiz Arthur F. dos Santos e Rodrigo Campiolo foi licenciado com uma
Licença Creative Commons - Atribuição - NãoComercial 3.0 Não Adaptada.

Vamos falar sobre Linux!
Mas, o que é Linux?
Linux é um SISTEMA OPERACIONAL:
Segundo Andrew Tanenbaum,
Sistema Operacional gerência software e hardware
dos computadores.
2

Vamos falar sobre Linux!
Mas, o que é Linux?
Linux é um SISTEMA OPERACIONAL!
Segundo Andrew Tanenbaum,
Sistema Operacional gerencia hardware e
software dos computadores.
3

O que é Núcleo do Linux?
O Núcleo do Linux, em inglês Linux Kernel, é a base do Sistema
Operacional!!!
4

O que é Núcleo do Linux?
O Núcleo do Linux, em inglês Linux Kernel, é a base do Sistema
Operacional!!!
5
Usuário
Shell
Kernel

Um breve histórico/introdução sobre o Linux:
Março/1991 – Linus Torvalds com 21 anos, inicia o
desenvolvimento do núcleo, inspirado pelo Minix;
Agosto/1991 – Linus posta uma mensagem a um grupo de
notícias (comp.os.minix) dizendo:
●Estou fazendo um Sistema Operacional baseado
no x386 (provavelmente não vai ser portável);
●Não é uma cópia do Minix, mas livre deste;
●Já possui o bash e o gcc;
●Está escrito na linguagem de programação C.
6

7
1991
1992
1993
1994
..
1995
1996
..
2000
..
..
2005
..
..
2010
2011
2012
Setembro/1991
Lançada a versão 0.01 do Linux
~10.239 linhas de código;
Dezembro/1991:
Linux 0.11,
Hospedado em site próprio;
Março/1994
Linux 1.0.0
~176.250 linhas de código;
ANOS / Versão do Núcleo Linux
Linha de tempo das versões Linux:
0.01
1.3

8
1991
1992
1993
1994
..
1995
1996
..
2000
..
..
2005
..
..
2010
2011
2012
Junho/1996:
Linux versão 2,
~1.800.847 linhas de código;
ANOS / Versão do Núcleo Linux
Linha de tempo das versões Linux:
0.01
1.3 2.0
2.0.40
2.2
2.2.27
2.4
2.6
2.4.37.11
2.6.39.4
Outubro/2010
Linux 2.6.36,
~13.499.457 linhas de código;

9
1991
1992
1993
1994
..
1995
1996
..
2000
..
..
2005
..
..
2010
2011
2012
Julho/2011:
Comemoração aos 20 anos,
Lançada a versão 3,
~13.872.245 linhas de código;
Janeiro/2012:
Linux 3.2,
~14.304.901 linhas de código.
ANOS / Versão do Núcleo Linux
Linha de tempo das versões Linux:
0.01
1.3 2.0
2.0.40
2.2
2.2.27
2.4
2.6
3.0
2.4.37.11
2.6.39.4 3.2

Impacto do Linux no mundo dos computadores:
Sistemas Operacionais antes do Linux:
- Microsoft Windows 3.0;
- System 7 (Mac OS);
- AIX 3.0;
- 4.3BSD;
- MINIX 1.5;
- GNU Hurd (em desenvolvimento).
Quando o Linux foi idealizado em 1991 o GNU Hurd estava
incompleto e o BSD estava com problemas legais.
10

Impacto do Linux no mundo dos computadores:
Números de usuários Linux nos últimos 20 anos, fonte
linuxcounter.net.
11

Impacto do Linux no mundo dos computadores:
Número de usuários Linux obtidos em linuxcounter.net nos
últimos 12 meses.
12

Uso do Linux em relação a outros Sistemas Operacionais, no
ano de 2011. Fonte w3schools.com.
13
2011 Win7 VistaWin2003WinXPLinux Mac Móvel
Dezembro 46.1% 5.0% 0.7% 38.5%4.9% 8.5% 1.2%
Novembro 45.5% 5.2% 0.7% 32.8%5.1% 8.8% 1.0%
Outubro 44.7% 5.5% 0.7% 33.4%5.0% 8.9% 1.0%
Setembro 42.2% 5.6% 0.8% 36.2%5.1% 8.6% 0.9%
Agosto 40.4% 5.9% 0.8% 38.0%5.2% 8.2% 0.9%
Julho 39.1% 6.3% 0.9% 39.1%5.3% 7.8% 1.0%
Junho 37.8% 6.7% 0.9% 39.7%5.2% 8.1% 0.9%
Maio 36.5% 7.1% 0.9% 40.7% 5.1% 8.3% 0.8%
Abril 35.9% 7.6% 0.9% 40.9% 5.1% 8.3% 0.8%
Março 34.1% 7.9% 0.9% 42.9% 5.1% 8.0% 0.7%
Fevereiro32.2% 8.3% 1.0% 44.2% 5.1% 8.1% 0.7%
Janeiro 31.1% 8.6% 1.0% 45.3% 5.0% 7.8% 0.7%

2003 2004 2005 2006 2007 2008 2009 2010 2011
0
1
2
3
4
5
6
2,3
2,9
3,3
3,4 3,4
3,8
4,2
4,7
5,1
Média do uso do Linux no período de 2003 a 2011.
Fonte w3schools.com.
14

Uso do Linux em relação a outros Sistemas
Operacionais:
15

Impacto do Linux no mundo dos computadores:
Computadores pessoais – O uso de Sistemas Operacionais
dentre os computadores pessoais está da seguinte forma (fonte
Marketshare ):
O uso de Linux por clientes Web não chega a 3% na melhor
das hipóteses, por exemplo:
●AT Internet marca 1%;
●Webmasterpro apresenta 1.4% . 16

Então quer dizer que as pessoas não usam
Linux?
NÃO É BEM ASSIM...
Os números anteriores já nos deram algumas pistas mas vamos
ver outros fatos!
17

Então quer dizer que as pessoas não usam
Linux?
NÃO É BEM ASSIM...
Os números anteriores já nos deram algumas pistas, mas vamos
ver outros fatos!
18

O impacto do Linux no mundo dos computadores:
Netbooks - O Linux é o segundo Sistema Operacional mais
instalado em Netbooks. 30% segundo a ComputerWorld.com;
Tablets – 20% são Android (que possui um núcleo Linux);
Dispositivos móveis – Celulares e smartphones, tem os
seguintes números:
19
Fonte:
Garner e Wiki

Servidores:
- Segundo Security Space:
●O Linux está em mais de 60% dos servidores no mundo;
●Windows 36%.
- Conforme o w3techs.com:
●O Windows possui apenas 36,5% do mercado de servidores;
●Enquanto sistemas UNIX levam 63,5%.
20

MainFrames – A IBM tem entre 90 a 95% do mercado e segundo
ela:
●No ano de 2000, a IBM lança o projeto chamado Linux S/390;
●Em 2001 a IBM, investiu 1 Bilhão de dólares no Linux;
●Em 2003 a empresa de software SAP porta seus softwares
para o Linux em Mainframes.
●Hoje temos mais de 3.150 aplicações homologadas;
●Cerca de 16% dos Mainframes MIPS executam Linux;
●70% dos Top Clients executam Linux.
Em dezembro de 2008 28% dos Mainframes utilizavam Linux e
em uma projeção para 5 anos, cerca de 50% irá utilizar Linux.
Fonte Gartner. 21

Supercomputadores – A TOP500 apresenta:
●Linux é usado em 91,4%;
●O segundo colocado é o IBM AIX, com 5,6%;
●Microsoft HPCS 2008 fica com apenas 0,2%.
22

Distribuições Linux:
É muito comum confundir o Núcleo Linux com Distribuição Linux!
Mas, qual é a diferença entre Linux e Distribuição Linux?
O Linux ou Núcleo Linux é a base do Sistema Operacional!
Distribuição Linux é um conjunto de programas que são agrupados
a um Núcleo Linux para dar alguma funcionalidade ao Sistema.
23

Distribuições Linux:
É muito comum confundir o Núcleo Linux com Distribuição Linux!
Mas, qual é a diferença entre Linux e Distribuição Linux?
O Linux ou Núcleo Linux é a base do Sistema Operacional!
Distribuição Linux é um conjunto de programas que são agrupados
a um Núcleo Linux para dar alguma funcionalidade ao Sistema.
24

Exemplos de Distribuições Linux:
25

Alguns Linux são pagos?
O Núcleo do Linux não é pago, por isto o Linux não é pago!!!
Mas algumas Distribuições Linux cobram por serviços e/ou
ferramentas.
Exemplos de distribuições pagas:
RedHat:
●Computadores Pessoais 49 U$;
●Estações de trabalho 179 U$;
●Servidores entre 349 U$ e 6.498 U$.
SUSE:
●Computadores Pessoais 50 U$;
●Servidores entre 349 a 1.499 U$.
26

Obtendo o núcleo Linux:
27

Qual é a licença de uso do Linux?
O arquivo COPYING contém a licença do Linux, que informa que o
Núcleo Linux utiliza a licença GPL versão 2, o Linux está de
acordo com as primitivas do projeto GNU.
NOTE! This copyright does *not* cover user programs that use kernel
services by normal system calls - this is merely considered normal use
of the kernel, and does *not* fall under the heading of "derived work".
Also note that the GPL below is copyrighted by the Free Software
Foundation, but the instance of code that it refers to (the Linux
kernel) is copyrighted by me and others who actually wrote it.
Also note that the only valid version of the GPL as far as the kernel
is concerned is _this_ particular version of the license (ie v2, not
v2.2 or v3.x or whatever), unless explicitly otherwise stated.
Linus Torvalds
----------------------------------------
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed. ...
28

29
Principais Aspectos
do Núcleo do Linux

30
Funções do Núcleo do Linux
Gerencia e intermedeia o acesso aos recursos
(memória, processos, hardware);
Gerencia e coordena os processos do usuário e do
sistema;
Garante a segurança no acesso aos recursos;
Viabiliza a interação das aplicações com os
dispositivos físicos.

31
Classificação do Núcleo do Linux
O núcleo do Linux é fundamentalmente monolítico,
mas suporta gerenciamento de módulos
dinamicamente;
Todos os principais componentes e serviços estão
agrupados dentro do núcleo, obtendo alto
desempenho;
Possui a capacidade de ativar/desativar serviços em
tempo de execução na forma de módulos do núcleo.

32
Arquitetura GNU/Linux e o Núcleo Linux (Jones, 2007)
Plataforma de Hardware
Código dependente da arquitetura
Núcleo
Interface das Chamadas de Sistema
Biblioteca GNU C (glibc)
Aplicações do Usuário
Nível de
Aplicação
Nível de
Sistema
GNU/Linux
Núcleo do Linux e o
Sistema Operacional GNU/Linux

33
A arquitetura conceitual do Núcleo do Linux é
constituída por 5 principais subsistemas.
Arquitetura conceitual do Núcleo do Linux (Bowman, 1998)
Gerenciador
de Processos
Gerenciador
de Memória
Sistema de Arquivos
Virtual
Rede
Comunicação
entre Processos (IPC)
Arquitetura do Núcleo do Linux

34
Gerenciador de Processos
Foco principal na execução do processo;
Mantém estruturas de dados do processo;
Principal componente é o escalonador de processos,
responsável por gerenciar o uso da CPU por
processos concorrentes;
Principais arquivos:
sched.c: código do escalonador;
fork.c: criação de processos;
sched.h: estrutura task_struct.

35
Gerenciador de Memória
Gerencia o acesso à memória primária do sistema;
Possui estruturas de dados para realizar o mapeamento de
endereço físico para endereço virtual;
Principais arquivos:
memory.c: paginação;
filemap.c: mapeamento de memória e cache de página;
buffer.c: cache do buffer;
swap_state.c e swapfile.c: cache do swap.

36
Sistema de Arquivos Virtual (Jones, 2007)
Sistema de Arquivos Virtual (VFS)
Cache Buffer
Dispositivos Físicos
ext3 reiser/proc
Drivers de Dispositivos
...
Sistema de Arquivos Virtual
Provê uma camada de acesso comum para as
implementações de sistemas de arquivos;
Abstrai os detalhes dos dispositivos físicos e dos
sistemas de arquivos lógicos;
Principais arquivos:
fs.h
buffer.c
fs/*

37
Rede
Provê acesso e controle para os diferentes dispositivos de rede;
Implementa uma API para acesso aos recursos de rede;
Possui um módulo de protocolos de rede que implementa vários
tipos de protocolo;
Possui uma interface independente de protocolo para acesso às
implementações da pilha de rede;
Principais arquivos:
socket.c
net/core/*
net/ipv4/*

38
Comunicação entre Processos
Provê os mecanismos para comunicação entre processos no
sistema;
Os mecanismos implementados são:
Memória compartilhada;
Filas de mensagens;
Semáforos.
Os arquivos de código fonte encontram-se no diretório ipc/.

39
Estrutura do Núcleo do Linux

40
Estrutura do Núcleo do Linux
arch: código dependente de arquitetura de processadores (ex:
arch/i386, arch/arm/arm64);
init: código de inicialização do núcleo do Linux (após a
inicialização de hardware). Inicialização dos endereços de página,
escalonador, chamadas de sistema, interrupção (irq) e assim por
diante;
crypto: implementação de algoritmos de criptografia. São
implementados como módulos do núcleo do Linux;
Documentation: contém a documentação do código fonte;

41
Estrutura do Núcleo do Linux
drivers: código de implementação de drivers de dispositivos. São
implementados como módulos do núcleo do Linux. Dividido em
subdiretórios segundo o tipo do driver (ex: drivers/ide). A parte
dependente de dispositivo reside no diretório arch/;
kernel: código dos principais subsistemas do núcleo do Linux. Por
exemplo, chamada de sistemas, escalonadores, DMA, interrupção.
O código específico de arquitetura é mantido sobre
arch/*/kernel;
include: cabeçalhos genéricos do núcleo do Linux;

42
Estrutura do Núcleo do Linux
ipc: código para os três sistemas de IPC (semáforos,
memória compartilhada e filas de mensagens);
lib: bibliotecas do núcleo do Linux. Bibliotecas
específicas de arquitetura são mantidas em arch/*/lib;
mm: código comum para gerenciamento de memória e do
subsistema de memória virtual. Código específico de
arquitetura arch/*/mm;

43
Estrutura do Núcleo do Linux
net: código para o subsistema de rede. Por exemplo,
implementação de protocolos e soquetes de rede;
scripts: scripts e código para configurar e compilar o núcleo
do Linux;
security: funções de segurança. São implementadas como
módulos do núcleo do Linux;
virt: código para suporte a virtualização (kvm).

44
BIOS
Boot
Loader
Bootstrap Kernel Init
POST (Power On Self Test)
Inicialização da CPU
Verificação da memória RAM
Inicialização dos dispositivos básicos
Criação do mapa de memória
Carregamento MBR (setor 0)
Processo de Inicialização do Núcleo do Linux

45
BIOS
Boot
Loader
Bootstrap Kernel Init
BIOS pode ler apenas o setor 0
Carrega o Boot Loader - LILO ou GRUB
Carrega a imagem do núcleo do
Linux para a memória
Processo de Inicialização do Núcleo do Linux

46
BIOS
Boot
Loader
Bootstrap Kernel Init
Força a CPU para o modo protegido
Ativa a MMU
Descompacta a imagem
("Decompressing Linux ...")
Chama a função "start_kernel"
Inicializa todos os dispositivos, escalonadores,
console, etc.
Processo de Inicialização do Núcleo do Linux

47
BIOS
Boot
Loader
Bootstrap Kernel Init
Inicializa a CPU
Reinicializa portas e controladores
Interrupções são ativadas
Sistema de arquivo é inicializado para
permitir leitura de disco
Inicializa o carregador (loader)
Loader carrega a thread do núcleo "init"
* se crash -> kernel panic
Processo de Inicialização do Núcleo do Linux

48
BIOS
Boot
Loader
Bootstrap Kernel Init
Inicialização das configurações e serviços
do sistema operacional.
Processo de Inicialização do Núcleo do Linux

49
Fatores de Sucesso da Arquitetura
do Núcleo do Linux
Organização dos desenvolvedores;
Mecanismos para prover extensibilidade ao sistema;
Suporte a várias arquiteturas de hardware;
Portabilidade;
Software livre.

50
Limitações do Núcleo do Linux
Não foi projetado para sistemas de tempo real;
Muitos fabricantes fornecem drivers de dispositivos
com restrições para o núcleo do Linux;
Muitos fabricantes ainda não fornecem os drivers de
dispositivos para seus produtos;

Como o Núcleo do Linux
é mantido?
51

52
●Versão 1.0 até antes da 2.6:
●Formato A.B.C
●Versões - A:
●1994 (versão 1.0);
●1996 (versão 2.0);
●2011 (versão 3.0) – comemoração de 20 anos
(29/05/2011).
●Revisão maior - B:
●Par: versão madura, estável;
●Ímpar: versão em desenvolvimento (implementação de
recursos novos).
●Revisão menor - C: patchs, correção de erros, etc.

53
●Linus Torvalds, 1991:
●Não baseado no Minix
●386
●Bash e GCC
●Momento histórico:
●GNU Hurd (o Núcleo do Projeto GNU apresentava
problemas)
● Mach microkernel (3 anos - licença)
●BSD com problemas legais (atraso na distribuição da
versão Net/2):
●AT&T USL versus BSDi
●Net/2
●386BSD (livre)
●BSD/386 (proprietário)

54
●09/1991, versão 0.01:
●(ftp.funet.fi) da Finnish University and Research
Network (FUNET)
●10.239 linhas de código
●10/1991, versão 0.02
●12/1991, versão 0.11
●o Núcleo Linux podia ser compilado nele mesmo
●02/1992, versão 0.12
●GPL
●Até 2002:
●sem ferramenta de controle de código

55
●Linus Torvalds
●Centraliza o código:
●Problema de escalabilidade;
●BitKeeper é adotado:
●Flames:
●Não era software livre;
●Richard Stallman (fundador do projeto GNU);
mostrou preocupação com o uso do software com
tal licença;
●Alan Cox (desenvolvedor) se recusou a usar.

56
●BitKeeper:
●Software proprietário da BitMover;
●Licença especial
●Usuários → ferramentas concorrentes (como o
CVS, GNU Arch, Subversion, ClearCase)
●Metainformações → servidor central
●Interoperabilidade (limitada) com CVS e
Subversion.

57
●04/2005
●Fim versão gratuita
●Andrew Tridgell (OSDL)
●Metadados (além da versão mais recente)
● BitMover
●Sem vendas de licenças → OSDL
●incluindo Linus Torvalds e Andrew Morton

58
●Kernel SCM saga.. (Quarta, 6 de abril de 2005 08:42:08
GMT-07, por Linus Torvalds, na lista de e-mail do Núcleo
Linux:
“Ok,
as a number of people are already aware (and in some cases have been
aware over the last several weeks), we've been trying to work out a
conflict over BK usage over the last month or two (and it feels like
longer ;). That hasn't been working out, and as a result, the kernel team
is looking at alternatives.”

“It's not like my choice of BK has been entirely conflict-free ("No,
really? Do tell! Oh, you mean the gigabytes upon gigabytes of flames we
had?"), so...”

“So I just wanted to say that I'm personally very happy with BK, and with
Larry. It didn't work out, but it sure as hell made a big difference to
kernel development. And we'll work out the temporary problem of having to
figure out a set of tools to allow us to continue to do the things that BK
allowed us to do.
Let the flames begin.
Linus”

59
●Nasce o Git:
●Desenvolvido inicialmente por Linus:
●"git" é uma palavra britânica (de baixo calão) que
significa "pessoa estúpida, desagradável," segundo
Linus. "I'm an egotistical bastard, so I name all my
projects after myself. First Linux, now git.";
●CEO da BitMover, Larry McVoy
●Bitkeeper → melhor software de controle de código
●Impossível recriá-lo em código aberto;
●03/04/2005: projeto é iniciado
●06/04/2005: projeto é anunciado
●18/04/2005: primeira mesclagem de código (merge)
●16/06/2005: o Núcleo Linux 2.6.12 → Git

60
●Voltando a maio de 2003:
●IBM contribuiu com o Linux com código Unix;
●A empresa SCO Group entrou na justiça;
●SCO fez terrorismo com usuários do Linux;
●IBM prometeu defender os usuários;
●De 1 milhão de linhas de código → 326 linhas de
código;
●A SCO perdeu todas as ações.

61
●[RFD] Explicitly documenting patch submission (domingo,
23 de maio de 2004 08:50:07 GMT+02, por Linus Torvalds,
na lista de e-mail do Núcleo Linux:
“Hola!
This is a request for discussion..
Some of you may have heard of this crazy company called SCO (aka
"Smoking Crack Organization") who seem to have a hard time believing that
open source works better than their five engineers do. They've apparently made
a couple of outlandish claims about where our source code comes from,
including claiming to own code that was clearly written by me over a
decade ago.”

“The plan is to make this very light-weight, and to fit in with how we
already pass patches around - just add the sign-off to the end of the
explanation part of the patch. That sign-off would be just a single line
at the end (possibly after _other_ peoples sign-offs), saying:
Signed-off-by: Random J Developer <[email protected]>”

“Developer's Certificate of Origin 1.0”
...

Como o Núcleo do Linux foi mantido até a
versão 2.5
Somente duas árvores
62

63
●Stable branch (por exemplo 2.4):
●Alterações menores e seguras;
●Unstable branch (por exemplo 2.5):
●Grandes alterações no código;
●Mantidos pelas mesmas pessoas, lideradas por
Torvalds:
●Implicações:
●Versão estável muito boa
●Porém desatualizada

64
●Na série 2.5.x do Núcleo
●Portar (backport) as alterações para a versão
estável
●inserção de erros na série 2.4.x do Núcleo Linux

Como o Núcleo do Linux é mantido a partir
da versão 2.6
65

66
●Somente uma árvore principal;
●2 a 3 meses entre uma release e outra (2.6.x para
2.6.x+1)
●adicionar funcionalidades e garantir a sua
estabilidade:
●"-stable" kernel branch: correção de erros e patchs
de segurança para versões anteriores, antes da
próxima versão menor;
●Por exemplo, a equipe lançou a versão 2.6.17 como
estável. Então os desenvolvedores implementam
funcionalidades e começam a lançar versões “-rc”.
Depois que se torna estável, é lançada como 2.6.18.

67
●Depois da mudança
●desenvolvedores continuam buscando uma árvore
que não fosse a estável
●Com mudanças mais rápidas
●02/2008, Stephen Rothwell
●árvore linux-next
●patchs candidatos ao próximo ciclo de
desenvolvimento

Quilt
(gerenciamento de patchs)
68

69
●Patchwork quilt (“colcha de retalhos”)
●gerenciamento de patches
●scripts de Andrew Morton

Git
(sistema de controle de versão/revisão)
70

71
●Cada diretório de trabalho Git é um repositório com
todos os históricos que possibilita o controle total das
revisões, não dependente de acesso a uma rede ou a
um servidor central;
●Controle de versão distribuído:
●clone funcional;
●controle “offline”;
●cópia de segurança é trivial;
●super rápido;
●superescalável.

Ajudando no desenvolvimento
do Núcleo do Linux
(enviando patchs)
72

73
●“SubmittingPatches”
●Bem humorado
●Passo a passo
“How to Get Your Change Into the Linux Kernel
or Care And Operation Of Your Linus Torvalds”.
●Passos:
●Criando e enviando seu patch;
●Usar "diff -up" ou "diff -uprN" para criar os patchs;
●Descrever suas mudanças;
●Separar as mudanças de maneira lógica;
●Verificar o estilo do código.

74
●Selecionar o e-mail de destino:
●Arquivo MAINTAINERS
●Código fonte
●Mantenedor → Subsistema do Núcleo do Linux
●Enviar para a lista primária de
desenvolvimento do Núcleo Linux -
[email protected];
●Escolha seu destinatário de CO:
●Para patches pequenos (erros de compilação,
erros de escrita) enviar como CO o “Trivial Patch
Monkey” ([email protected]);
●Somente texto puro.

75
●Tamanho do e-mail – jamais ultrapasse 300KB;
●Diga a que versão do Núcleo do Linux seu patch se
aplica;
●Não se desencoraje, se a sua alteração não
aparecer, resubmeta;
●Inclua [PATCH] no começo do assunto de sua
mensagem;
●Assine seu trabalho - episódio SCO Group:
●A assinatura é uma linha de texto
●As regras são simples.

76
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
Sem isto - viola “UK's
Data Protection Act”

77
●Assine seu trabalho:
Signed-off-by: Random J Developer
<[email protected]>
●Deve ser usado o nome real.
●A linha de assunto do e-mail com o patch deve
seguir o formato:
Subject: [PATCH 001/123] subsystem: summary phrase
●O corpo da mensagem deve ser no formato:
Uma linha "from" especificando o autor;
Uma linha em branco;
O corpo da explicação (registro de mudanças);
A linha "Signed-off-by:" (registro de mudanças);
O patch (saída do diff).
●Faça o “Linux Kernel patch submission checklist”.

78
WIKI. Linux Kernel. Disponível em http://en.wikipedia.org/wiki/Linux_kernel
Stephen Rothwell, LKML: Stephen Rothwell: Announce: Linux-next. Disponível em
https://lkml.org/lkml/2008/2/11/512
Jonathan Corbet. linux-next and patch management process [LWN.net]. Disponível
em http://lwn.net/Articles/269120/
Jeremy Andrews. Linux: 2.6.16.y Lives On. http://kerneltrap.org/node/6930
Jeremy Andrews. Linux: New Kernel Development Model.
http://kerneltrap.org/node/3513
James E.J. Bottomley. Git, Quilt and Other Kernel Maintenance Tools.
http://www.linuxconf.eu/2007/papers/Bottomley.pdf
Linus Torvalds. LKML: Linus Torvalds: Kernel SCM saga..
https://lkml.org/lkml/2005/4/6/121
Referências

79
Kernel. How to Get Your Change Into the Linux Kernel.
http://www.kernel.org/doc/Documentation/SubmittingPatches
Linus Torvalds. [RFD] Explicitly documenting patch submission.
http://groups.google.com/group/linux.kernel/msg/4d02da62a287828a?hl=en
WIKI. Quilt (software). http://en.wikipedia.org/wiki/Quilt_(software)
WIKI. Git (software). http://en.wikipedia.org/wiki/Git_(software)
Git Reference. Git Reference. http://gitref.org/index.html
Referências

80
Referências
Jones, M. Tim. Anatomia do Kernel Linux. Disponível em:
http://www.ibm.com/developerworks/br/library/l-linux-kernel/
Bowman, Ivan. Conceptual Architecture of the Linux Kernel. Disponível em:
http://plg1.cs.uwaterloo.ca/~itbowman/CS746G/a1/
Linux Kernel Tutorial. Disponível em: http://www.learninglinuxkernel.com/
Rusling, David A. The Linux Kernel. Disponível em:
http://en.tldp.org/LDP/tlk/tlk.html
Saad, Motaz K. Browsing Linux Kernel. Disponível em:
http://www.slideshare.net/mksaad/linux-kernel-presentation
Rubini, Alessandro, Corbet, Jonathan. Linux Device Drivers - Chapter 16:
Physical Layout of the Kernel Source. Disponível em:
http://www.xml.com/ldd/chapter/book/ch16.html

Frank Helbert – [email protected]
Luiz Arthur – [email protected]
Rodrigo Campiolo – [email protected]
81
?