SlideShare ist ein Scribd-Unternehmen logo
1 von 81
Downloaden Sie, um offline zu lesen
Software Livre e o
                Núcleo do Linux
                                         Frank Helbert
                                          Luiz Arthur
                                       Rodrigo Campiolo



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.
                                                                                                                                        1
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?

                            Usuário
                              Shell


                             Kernel




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

                                                            5
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
Linha de tempo das versões Linux:
2012
2011           Março/1994
2010           Linux 1.0.0
..             ~176.250 linhas de código;
..
2005
..
..
2000                     Dezembro/1991:
..                       Linux 0.11,
1996
       1.3               Hospedado em site próprio;
1995
..
1994
1993                             Setembro/1991
1992 0.01                        Lançada a versão 0.01 do Linux
1991
                                 ~10.239 linhas de código;
ANOS / Versão do Núcleo Linux                                     7
Linha de tempo das versões Linux:
2012                                          2.6.39.4
2011                             2.4.37.11
2010
..
..
2005                    2.2.27
              2.0.40                            2.6
..
..
                                   2.4
2000
                         2.2
..                                           Outubro/2010
       1.3     2.0                           Linux 2.6.36,
1996
1995                                         ~13.499.457 linhas de código;
..
1994
1993
                          Junho/1996:
                          Linux versão 2,
1992 0.01
                          ~1.800.847 linhas de código;
1991
ANOS / Versão do Núcleo Linux                                            8
Linha de tempo das versões Linux:
2012                                         2.6.39.4   3.2
2011                             2.4.37.11              3.0
2010
..
..
2005                    2.2.27
              2.0.40                           2.6
..
..
                                   2.4
2000
                         2.2
..
       1.3     2.0               Julho/2011:
1996
                                 Comemoração aos 20 anos,
1995                             Lançada a versão 3,
..                               ~13.872.245 linhas de código;
1994
1993                             Janeiro/2012:
1992 0.01                        Linux 3.2,
1991
                                 ~14.304.901 linhas de código.
ANOS / Versão do Núcleo Linux                                    9
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.

   2011     Win7    Vista   Win2003 WinXP   Linux   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%
Fevereiro   32.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%

                                                             13
Média do uso do Linux no período de 2003 a 2011.
Fonte w3schools.com.

 6
                                                                 5,1
 5                                                   4,7
                                              4,2
                                       3,8
 4
                  3,3    3,4    3,4
           2,9
 3
     2,3

 2


 1


 0
 2003      2004   2005   2006   2007   2008   2009   2010    2011


                                                            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
                                                          17
                       ver outros fatos!
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
                                                           18
                       ver outros fatos!
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:




                                                      Fonte:
                                                   Garner e Wiki




                                                                   19
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
Principais Aspectos
do Núcleo do Linux




                      29
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.




                                                       30
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.
                                                          31
Núcleo do Linux e o
            Sistema Operacional GNU/Linux

                          Aplicações do Usuário
                                                                      Nível de
                                                                     Aplicação
                                    Biblioteca GNU C (glibc)



GNU/Linux
                  Interface das Chamadas de Sistema

                                                                     Nível de
                                   Núcleo                            Sistema

                   Código dependente da arquitetura
                         Plataforma de Hardware

              Arquitetura GNU/Linux e o Núcleo Linux (Jones, 2007)
                                                                                 32
Arquitetura do Núcleo do Linux

A arquitetura conceitual do Núcleo do Linux é
   constituída por 5 principais subsistemas.

        Gerenciador                            Gerenciador
        de Processos                           de Memória


     Sistema de Arquivos
                                                  Rede
           Virtual


        Comunicação
    entre Processos (IPC)


      Arquitetura conceitual do Núcleo do Linux (Bowman, 1998)

                                                                 33
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.
                                                         34
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.



                                                               35
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:    Sistema de Arquivos Virtual (VFS)
       fs.h
                                       ext3    ... reiser      /proc
       buffer.c
                                        Cache Buffer
       fs/*
                                  Drivers de Dispositivos

                                  Dispositivos Físicos

                            Sistema de Arquivos Virtual (Jones, 2007)
                                                                        36
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/*



                                                                       37
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/.


                                                                  38
Estrutura do Núcleo do Linux




                               39
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;

                                                                    40
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;


                                                                   41
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;


                                                           42
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).

                                                                43
Processo de Inicialização do Núcleo do Linux


                 Boot
    BIOS                   Bootstrap    Kernel   Init
                Loader




   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)


                                                        44
Processo de Inicialização do Núcleo do Linux


               Boot
    BIOS                Bootstrap   Kernel   Init
              Loader




   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



                                                    45
Processo de Inicialização do Núcleo do Linux


                 Boot
    BIOS                   Bootstrap    Kernel         Init
                Loader



   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.


                                                              46
Processo de Inicialização do Núcleo do Linux


                Boot
    BIOS                  Bootstrap    Kernel   Init
               Loader


   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

                                                       47
Processo de Inicialização do Núcleo do Linux


                Boot
    BIOS                  Bootstrap    Kernel    Init
               Loader




   Inicialização das configurações e serviços
    do sistema operacional.




                                                        48
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.

                                                         49
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;



                                                     50
Como o Núcleo do Linux
     é mantido?




                         51
●   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.
                                                             52
●   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)
                                                        53
●   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




                                                          54
●   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.
                                                             55
●   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.


                                                       56
●   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




                                                       57
●   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”
                                                                         58
●   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

                                                        59
●   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.


                                                     60
●   [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 <ran...@developer.org>”
    …
    “Developer's Certificate of Origin 1.0”
    ...
                                                                               61
Como o Núcleo do Linux foi mantido até a
              versão 2.5

         Somente duas árvores



                                           62
● 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




                                               63
●   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




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




                                        65
●   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.
                                                             66
●   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




                                                        67
Quilt
(gerenciamento de patchs)




                            68
●   Patchwork quilt (“colcha de retalhos”)

●   gerenciamento de patches

●   scripts de Andrew Morton




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




                                          70
●   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.




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




                              72
●   “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.




                                                             73
●   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  -
          linux-kernel@vger.kernel.org;

●   Escolha seu destinatário de CO:
     ● Para patches pequenos (erros de compilação,

       erros de escrita) enviar como CO o “Trivial Patch
       Monkey” (trivial@kernel.org);

●   Somente texto puro.
                                                    74
●   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.



                                                   75
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.                                                    Sem isto - viola “UK's
                                                                 Data Protection Act”
    (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.             76
●   Assine seu trabalho:
Signed-off-by: Random J Developer
<random@developer.example.org>
          ●   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”.


                                                        77
Referências
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



                                                                              78
Referências
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




                                                                         79
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




                                                                            80
?
   Frank Helbert – frank@ime.usp.br
    Luiz Arthur – luizsan@ime.usp.br
Rodrigo Campiolo – campiolo@ime.usp.br




                                         81

Weitere ähnliche Inhalte

Was ist angesagt?

Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas OperativosPmpc10
 
Sistema de arquivos - HPFS e ReiserFS/4
Sistema de arquivos - HPFS e ReiserFS/4Sistema de arquivos - HPFS e ReiserFS/4
Sistema de arquivos - HPFS e ReiserFS/4Anderson Rodrigues
 
Aula 5a - Sistemas Operacionais
Aula 5a - Sistemas OperacionaisAula 5a - Sistemas Operacionais
Aula 5a - Sistemas OperacionaisJocelma Rios
 
Trabalho de sistema operativo servidor
Trabalho de sistema operativo servidorTrabalho de sistema operativo servidor
Trabalho de sistema operativo servidordtml2k
 
Seminário Computação em Nuvem
Seminário Computação em NuvemSeminário Computação em Nuvem
Seminário Computação em NuvemLeandro Nunes
 
História do linux ppt
História do linux pptHistória do linux ppt
História do linux pptshade09
 
Sistema operativo servidor
Sistema operativo servidorSistema operativo servidor
Sistema operativo servidorSandu Postolachi
 
Sistemas Operativos Servidores
Sistemas Operativos ServidoresSistemas Operativos Servidores
Sistemas Operativos ServidoresAlexandre Maia
 
Arquitetura cliente servidor
Arquitetura cliente servidorArquitetura cliente servidor
Arquitetura cliente servidorMarcia Abrahim
 
Arquitetura de um computador
Arquitetura de um computadorArquitetura de um computador
Arquitetura de um computadorFilipe Duarte
 
Processadores - CPU
Processadores - CPUProcessadores - CPU
Processadores - CPURoney Sousa
 
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...Leinylson Fontinele
 
Sistemas Operacionais - Aula 01 (Conceitos básicos de so)
Sistemas Operacionais - Aula 01 (Conceitos básicos de so)Sistemas Operacionais - Aula 01 (Conceitos básicos de so)
Sistemas Operacionais - Aula 01 (Conceitos básicos de so)Leinylson Fontinele
 
Sistemas Operacionais Windows e Linux
Sistemas Operacionais Windows e LinuxSistemas Operacionais Windows e Linux
Sistemas Operacionais Windows e LinuxFelipe Cesar Costa
 

Was ist angesagt? (20)

Computação em Nuvem
Computação em NuvemComputação em Nuvem
Computação em Nuvem
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
Sistema de arquivos - HPFS e ReiserFS/4
Sistema de arquivos - HPFS e ReiserFS/4Sistema de arquivos - HPFS e ReiserFS/4
Sistema de arquivos - HPFS e ReiserFS/4
 
Historia Sistema Operacional Linux
Historia Sistema Operacional LinuxHistoria Sistema Operacional Linux
Historia Sistema Operacional Linux
 
Aula 5a - Sistemas Operacionais
Aula 5a - Sistemas OperacionaisAula 5a - Sistemas Operacionais
Aula 5a - Sistemas Operacionais
 
Linux para leigos
Linux para leigos Linux para leigos
Linux para leigos
 
Trabalho de sistema operativo servidor
Trabalho de sistema operativo servidorTrabalho de sistema operativo servidor
Trabalho de sistema operativo servidor
 
Seminário Computação em Nuvem
Seminário Computação em NuvemSeminário Computação em Nuvem
Seminário Computação em Nuvem
 
Linux
LinuxLinux
Linux
 
História do linux ppt
História do linux pptHistória do linux ppt
História do linux ppt
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Sistema operativo servidor
Sistema operativo servidorSistema operativo servidor
Sistema operativo servidor
 
Sistemas Operativos Servidores
Sistemas Operativos ServidoresSistemas Operativos Servidores
Sistemas Operativos Servidores
 
Arquitetura cliente servidor
Arquitetura cliente servidorArquitetura cliente servidor
Arquitetura cliente servidor
 
Arquitetura de um computador
Arquitetura de um computadorArquitetura de um computador
Arquitetura de um computador
 
Processadores - CPU
Processadores - CPUProcessadores - CPU
Processadores - CPU
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...
 
Sistemas Operacionais - Aula 01 (Conceitos básicos de so)
Sistemas Operacionais - Aula 01 (Conceitos básicos de so)Sistemas Operacionais - Aula 01 (Conceitos básicos de so)
Sistemas Operacionais - Aula 01 (Conceitos básicos de so)
 
Sistemas Operacionais Windows e Linux
Sistemas Operacionais Windows e LinuxSistemas Operacionais Windows e Linux
Sistemas Operacionais Windows e Linux
 

Andere mochten auch

Sistema Operativo Linux
Sistema Operativo LinuxSistema Operativo Linux
Sistema Operativo Linuxfilipereira
 
Mineração de dados no Gmail e Facebook
Mineração de dados no Gmail e FacebookMineração de dados no Gmail e Facebook
Mineração de dados no Gmail e FacebookLuiz Arthur
 
Administração de servidores Linux
Administração de servidores LinuxAdministração de servidores Linux
Administração de servidores LinuxJoão Sá
 
Detecção de alertas de segurança em redes de computadores usando redes sociai...
Detecção de alertas de segurança em redes de computadores usando redes sociai...Detecção de alertas de segurança em redes de computadores usando redes sociai...
Detecção de alertas de segurança em redes de computadores usando redes sociai...Luiz Arthur
 
Bibliografia recomendada-seguranca
Bibliografia recomendada-segurancaBibliografia recomendada-seguranca
Bibliografia recomendada-segurancaLuiz Arthur
 
Apresentação Primeiro Dia
Apresentação Primeiro DiaApresentação Primeiro Dia
Apresentação Primeiro DiaLuiz Arthur
 
Análise de Mensagens de Segurança Postadas no Twitter
Análise de Mensagens de Segurança Postadas no TwitterAnálise de Mensagens de Segurança Postadas no Twitter
Análise de Mensagens de Segurança Postadas no TwitterLuiz Arthur
 
Evaluating the Utilization of Twitter Messages as a Source of Security Alerts
Evaluating the Utilization of Twitter Messages as a Source of Security AlertsEvaluating the Utilization of Twitter Messages as a Source of Security Alerts
Evaluating the Utilization of Twitter Messages as a Source of Security AlertsLuiz Arthur
 
match making e propaganda na web
match making e propaganda na webmatch making e propaganda na web
match making e propaganda na webLuiz Arthur
 
Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...
Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...
Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...Luiz Arthur
 
Palestra - Fitem 2009 - Ferramentas de segurança OpenSource
Palestra - Fitem 2009 - Ferramentas de segurança OpenSourcePalestra - Fitem 2009 - Ferramentas de segurança OpenSource
Palestra - Fitem 2009 - Ferramentas de segurança OpenSourceLuiz Arthur
 
Invasao kernel.org
Invasao kernel.orgInvasao kernel.org
Invasao kernel.orgLuiz Arthur
 
Palestra Ferramentas de Segurança Open Source v.2
Palestra Ferramentas de Segurança Open Source v.2Palestra Ferramentas de Segurança Open Source v.2
Palestra Ferramentas de Segurança Open Source v.2Luiz Arthur
 
Bibliografia recomendada-programacao-python
Bibliografia recomendada-programacao-pythonBibliografia recomendada-programacao-python
Bibliografia recomendada-programacao-pythonLuiz Arthur
 
Bibliografia recomendada-redes
Bibliografia recomendada-redesBibliografia recomendada-redes
Bibliografia recomendada-redesLuiz Arthur
 
Palestra mau uso da tecnologia
Palestra mau uso da tecnologiaPalestra mau uso da tecnologia
Palestra mau uso da tecnologiaLuiz Arthur
 
UTFPR-inventario-patrimonio-laboratorio-e105
UTFPR-inventario-patrimonio-laboratorio-e105UTFPR-inventario-patrimonio-laboratorio-e105
UTFPR-inventario-patrimonio-laboratorio-e105Luiz Arthur
 
Bibliografia recomendada - programação C
Bibliografia recomendada - programação CBibliografia recomendada - programação C
Bibliografia recomendada - programação CLuiz Arthur
 
Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...
Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...
Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...Luiz Arthur
 

Andere mochten auch (20)

Sistema Operativo Linux
Sistema Operativo LinuxSistema Operativo Linux
Sistema Operativo Linux
 
Mineração de dados no Gmail e Facebook
Mineração de dados no Gmail e FacebookMineração de dados no Gmail e Facebook
Mineração de dados no Gmail e Facebook
 
Kernel do Linux
Kernel do LinuxKernel do Linux
Kernel do Linux
 
Administração de servidores Linux
Administração de servidores LinuxAdministração de servidores Linux
Administração de servidores Linux
 
Detecção de alertas de segurança em redes de computadores usando redes sociai...
Detecção de alertas de segurança em redes de computadores usando redes sociai...Detecção de alertas de segurança em redes de computadores usando redes sociai...
Detecção de alertas de segurança em redes de computadores usando redes sociai...
 
Bibliografia recomendada-seguranca
Bibliografia recomendada-segurancaBibliografia recomendada-seguranca
Bibliografia recomendada-seguranca
 
Apresentação Primeiro Dia
Apresentação Primeiro DiaApresentação Primeiro Dia
Apresentação Primeiro Dia
 
Análise de Mensagens de Segurança Postadas no Twitter
Análise de Mensagens de Segurança Postadas no TwitterAnálise de Mensagens de Segurança Postadas no Twitter
Análise de Mensagens de Segurança Postadas no Twitter
 
Evaluating the Utilization of Twitter Messages as a Source of Security Alerts
Evaluating the Utilization of Twitter Messages as a Source of Security AlertsEvaluating the Utilization of Twitter Messages as a Source of Security Alerts
Evaluating the Utilization of Twitter Messages as a Source of Security Alerts
 
match making e propaganda na web
match making e propaganda na webmatch making e propaganda na web
match making e propaganda na web
 
Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...
Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...
Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...
 
Palestra - Fitem 2009 - Ferramentas de segurança OpenSource
Palestra - Fitem 2009 - Ferramentas de segurança OpenSourcePalestra - Fitem 2009 - Ferramentas de segurança OpenSource
Palestra - Fitem 2009 - Ferramentas de segurança OpenSource
 
Invasao kernel.org
Invasao kernel.orgInvasao kernel.org
Invasao kernel.org
 
Palestra Ferramentas de Segurança Open Source v.2
Palestra Ferramentas de Segurança Open Source v.2Palestra Ferramentas de Segurança Open Source v.2
Palestra Ferramentas de Segurança Open Source v.2
 
Bibliografia recomendada-programacao-python
Bibliografia recomendada-programacao-pythonBibliografia recomendada-programacao-python
Bibliografia recomendada-programacao-python
 
Bibliografia recomendada-redes
Bibliografia recomendada-redesBibliografia recomendada-redes
Bibliografia recomendada-redes
 
Palestra mau uso da tecnologia
Palestra mau uso da tecnologiaPalestra mau uso da tecnologia
Palestra mau uso da tecnologia
 
UTFPR-inventario-patrimonio-laboratorio-e105
UTFPR-inventario-patrimonio-laboratorio-e105UTFPR-inventario-patrimonio-laboratorio-e105
UTFPR-inventario-patrimonio-laboratorio-e105
 
Bibliografia recomendada - programação C
Bibliografia recomendada - programação CBibliografia recomendada - programação C
Bibliografia recomendada - programação C
 
Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...
Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...
Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...
 

Ähnlich wie Núcleo do Linux (Kernel Linux)

Unidade 3.1 Introdução ao Sistema Operacional Linux
Unidade 3.1   Introdução ao Sistema Operacional LinuxUnidade 3.1   Introdução ao Sistema Operacional Linux
Unidade 3.1 Introdução ao Sistema Operacional LinuxJuan Carlos Lamarão
 
GNU/Linux - uma alternativa (nova versão)
GNU/Linux - uma alternativa (nova versão)GNU/Linux - uma alternativa (nova versão)
GNU/Linux - uma alternativa (nova versão)Fábio Emilio Costa
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionaisCc SaCa
 
03 Sistemas Operacionais Linux
03   Sistemas Operacionais Linux03   Sistemas Operacionais Linux
03 Sistemas Operacionais LinuxMauro Duarte
 
Windows vs Linux
Windows vs LinuxWindows vs Linux
Windows vs LinuxPepe Rocker
 
Sistema operacional linux
Sistema operacional linuxSistema operacional linux
Sistema operacional linuxgabiel-felipe
 
linux: um pouco sobre ele e como aprender .pdf
linux: um pouco sobre ele e como aprender .pdflinux: um pouco sobre ele e como aprender .pdf
linux: um pouco sobre ele e como aprender .pdfVitriaNorazDeusmeure
 
Aula 1 Mini Curso de Linux
Aula 1 Mini Curso de LinuxAula 1 Mini Curso de Linux
Aula 1 Mini Curso de LinuxRogério Cardoso
 
Palestra Trisquel GNU/Linux: Uma Distribuição 100% Livre (FLISOL 2016)
Palestra Trisquel GNU/Linux: Uma Distribuição 100% Livre (FLISOL 2016)Palestra Trisquel GNU/Linux: Uma Distribuição 100% Livre (FLISOL 2016)
Palestra Trisquel GNU/Linux: Uma Distribuição 100% Livre (FLISOL 2016)Clayton Dausacker
 

Ähnlich wie Núcleo do Linux (Kernel Linux) (20)

Linux mint apostila
Linux mint apostilaLinux mint apostila
Linux mint apostila
 
Unidade 3.1 Introdução ao Sistema Operacional Linux
Unidade 3.1   Introdução ao Sistema Operacional LinuxUnidade 3.1   Introdução ao Sistema Operacional Linux
Unidade 3.1 Introdução ao Sistema Operacional Linux
 
Atividade2
Atividade2Atividade2
Atividade2
 
GNU/Linux - uma alternativa
GNU/Linux - uma alternativaGNU/Linux - uma alternativa
GNU/Linux - uma alternativa
 
GNU/Linux - uma alternativa (nova versão)
GNU/Linux - uma alternativa (nova versão)GNU/Linux - uma alternativa (nova versão)
GNU/Linux - uma alternativa (nova versão)
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Evolução_dos_sistemas_operativos_open_source
Evolução_dos_sistemas_operativos_open_sourceEvolução_dos_sistemas_operativos_open_source
Evolução_dos_sistemas_operativos_open_source
 
Apresentação Final
Apresentação FinalApresentação Final
Apresentação Final
 
Sistemas operacionais 5
Sistemas operacionais   5Sistemas operacionais   5
Sistemas operacionais 5
 
Resumolinux
ResumolinuxResumolinux
Resumolinux
 
Linux
LinuxLinux
Linux
 
2545 2122 linux
2545 2122 linux2545 2122 linux
2545 2122 linux
 
03 Sistemas Operacionais Linux
03   Sistemas Operacionais Linux03   Sistemas Operacionais Linux
03 Sistemas Operacionais Linux
 
Windows vs Linux
Windows vs LinuxWindows vs Linux
Windows vs Linux
 
Sistema operacional linux
Sistema operacional linuxSistema operacional linux
Sistema operacional linux
 
linux: um pouco sobre ele e como aprender .pdf
linux: um pouco sobre ele e como aprender .pdflinux: um pouco sobre ele e como aprender .pdf
linux: um pouco sobre ele e como aprender .pdf
 
Linux Distros
Linux DistrosLinux Distros
Linux Distros
 
Aula 1 Mini Curso de Linux
Aula 1 Mini Curso de LinuxAula 1 Mini Curso de Linux
Aula 1 Mini Curso de Linux
 
Palestra Trisquel GNU/Linux: Uma Distribuição 100% Livre (FLISOL 2016)
Palestra Trisquel GNU/Linux: Uma Distribuição 100% Livre (FLISOL 2016)Palestra Trisquel GNU/Linux: Uma Distribuição 100% Livre (FLISOL 2016)
Palestra Trisquel GNU/Linux: Uma Distribuição 100% Livre (FLISOL 2016)
 
Módulo 6 - Gnu/Linux
Módulo 6 - Gnu/LinuxMódulo 6 - Gnu/Linux
Módulo 6 - Gnu/Linux
 

Mehr von Luiz Arthur

Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?
Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?
Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?Luiz Arthur
 
Desafios da cibersegurança - ontem, hoje e amanhã
Desafios da cibersegurança - ontem, hoje e amanhãDesafios da cibersegurança - ontem, hoje e amanhã
Desafios da cibersegurança - ontem, hoje e amanhãLuiz Arthur
 
01 programação - introdução computação
01 programação - introdução computação01 programação - introdução computação
01 programação - introdução computaçãoLuiz Arthur
 
Dissertacao - Palestra - Algoritmos para simulador de arquiteturas paralelas
Dissertacao - Palestra - Algoritmos para simulador de arquiteturas paralelasDissertacao - Palestra - Algoritmos para simulador de arquiteturas paralelas
Dissertacao - Palestra - Algoritmos para simulador de arquiteturas paralelasLuiz Arthur
 
Dissertacao - Algoritmos para simulador de arquiteturas paralelas
Dissertacao - Algoritmos para simulador de arquiteturas paralelasDissertacao - Algoritmos para simulador de arquiteturas paralelas
Dissertacao - Algoritmos para simulador de arquiteturas paralelasLuiz Arthur
 
Palestra - Segurança da Informação - Softwarein Legal
Palestra - Segurança da Informação - Softwarein LegalPalestra - Segurança da Informação - Softwarein Legal
Palestra - Segurança da Informação - Softwarein LegalLuiz Arthur
 
Redes - Wireless Teoria
Redes - Wireless TeoriaRedes - Wireless Teoria
Redes - Wireless TeoriaLuiz Arthur
 
Redes - VoIP Teoria
Redes - VoIP TeoriaRedes - VoIP Teoria
Redes - VoIP TeoriaLuiz Arthur
 
Redes - VoIP H.323
Redes - VoIP H.323Redes - VoIP H.323
Redes - VoIP H.323Luiz Arthur
 
Redes - VoIP SIP
Redes - VoIP SIPRedes - VoIP SIP
Redes - VoIP SIPLuiz Arthur
 
Redes - VoIP Asterisk Dial Plan
Redes - VoIP Asterisk Dial PlanRedes - VoIP Asterisk Dial Plan
Redes - VoIP Asterisk Dial PlanLuiz Arthur
 
Tópicos - LVS Instalacao Slack11
Tópicos - LVS Instalacao Slack11Tópicos - LVS Instalacao Slack11
Tópicos - LVS Instalacao Slack11Luiz Arthur
 

Mehr von Luiz Arthur (13)

Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?
Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?
Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?
 
Desafios da cibersegurança - ontem, hoje e amanhã
Desafios da cibersegurança - ontem, hoje e amanhãDesafios da cibersegurança - ontem, hoje e amanhã
Desafios da cibersegurança - ontem, hoje e amanhã
 
NAPSOL
NAPSOLNAPSOL
NAPSOL
 
01 programação - introdução computação
01 programação - introdução computação01 programação - introdução computação
01 programação - introdução computação
 
Dissertacao - Palestra - Algoritmos para simulador de arquiteturas paralelas
Dissertacao - Palestra - Algoritmos para simulador de arquiteturas paralelasDissertacao - Palestra - Algoritmos para simulador de arquiteturas paralelas
Dissertacao - Palestra - Algoritmos para simulador de arquiteturas paralelas
 
Dissertacao - Algoritmos para simulador de arquiteturas paralelas
Dissertacao - Algoritmos para simulador de arquiteturas paralelasDissertacao - Algoritmos para simulador de arquiteturas paralelas
Dissertacao - Algoritmos para simulador de arquiteturas paralelas
 
Palestra - Segurança da Informação - Softwarein Legal
Palestra - Segurança da Informação - Softwarein LegalPalestra - Segurança da Informação - Softwarein Legal
Palestra - Segurança da Informação - Softwarein Legal
 
Redes - Wireless Teoria
Redes - Wireless TeoriaRedes - Wireless Teoria
Redes - Wireless Teoria
 
Redes - VoIP Teoria
Redes - VoIP TeoriaRedes - VoIP Teoria
Redes - VoIP Teoria
 
Redes - VoIP H.323
Redes - VoIP H.323Redes - VoIP H.323
Redes - VoIP H.323
 
Redes - VoIP SIP
Redes - VoIP SIPRedes - VoIP SIP
Redes - VoIP SIP
 
Redes - VoIP Asterisk Dial Plan
Redes - VoIP Asterisk Dial PlanRedes - VoIP Asterisk Dial Plan
Redes - VoIP Asterisk Dial Plan
 
Tópicos - LVS Instalacao Slack11
Tópicos - LVS Instalacao Slack11Tópicos - LVS Instalacao Slack11
Tópicos - LVS Instalacao Slack11
 

Núcleo do Linux (Kernel Linux)

  • 1. Software Livre e o Núcleo do Linux Frank Helbert Luiz Arthur Rodrigo Campiolo 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. 1
  • 2. 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
  • 3. Vamos falar sobre Linux! Mas, o que é Linux? Linux é um SISTEMA OPERACIONAL! Segundo Andrew Tanenbaum, Sistema Operacional gerencia hardware e software dos computadores. 3
  • 4. O que é Núcleo do Linux? O Núcleo do Linux, em inglês Linux Kernel, é a base do Sistema Operacional!!! 4
  • 5. O que é Núcleo do Linux? Usuário Shell Kernel O Núcleo do Linux, em inglês Linux Kernel, é a base do Sistema Operacional!!! 5
  • 6. 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. Linha de tempo das versões Linux: 2012 2011 Março/1994 2010 Linux 1.0.0 .. ~176.250 linhas de código; .. 2005 .. .. 2000 Dezembro/1991: .. Linux 0.11, 1996 1.3 Hospedado em site próprio; 1995 .. 1994 1993 Setembro/1991 1992 0.01 Lançada a versão 0.01 do Linux 1991 ~10.239 linhas de código; ANOS / Versão do Núcleo Linux 7
  • 8. Linha de tempo das versões Linux: 2012 2.6.39.4 2011 2.4.37.11 2010 .. .. 2005 2.2.27 2.0.40 2.6 .. .. 2.4 2000 2.2 .. Outubro/2010 1.3 2.0 Linux 2.6.36, 1996 1995 ~13.499.457 linhas de código; .. 1994 1993 Junho/1996: Linux versão 2, 1992 0.01 ~1.800.847 linhas de código; 1991 ANOS / Versão do Núcleo Linux 8
  • 9. Linha de tempo das versões Linux: 2012 2.6.39.4 3.2 2011 2.4.37.11 3.0 2010 .. .. 2005 2.2.27 2.0.40 2.6 .. .. 2.4 2000 2.2 .. 1.3 2.0 Julho/2011: 1996 Comemoração aos 20 anos, 1995 Lançada a versão 3, .. ~13.872.245 linhas de código; 1994 1993 Janeiro/2012: 1992 0.01 Linux 3.2, 1991 ~14.304.901 linhas de código. ANOS / Versão do Núcleo Linux 9
  • 10. 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
  • 11. Impacto do Linux no mundo dos computadores: Números de usuários Linux nos últimos 20 anos, fonte linuxcounter.net. 11
  • 12. Impacto do Linux no mundo dos computadores: Número de usuários Linux obtidos em linuxcounter.net nos últimos 12 meses. 12
  • 13. Uso do Linux em relação a outros Sistemas Operacionais, no ano de 2011. Fonte w3schools.com. 2011 Win7 Vista Win2003 WinXP Linux 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% Fevereiro 32.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% 13
  • 14. Média do uso do Linux no período de 2003 a 2011. Fonte w3schools.com. 6 5,1 5 4,7 4,2 3,8 4 3,3 3,4 3,4 2,9 3 2,3 2 1 0 2003 2004 2005 2006 2007 2008 2009 2010 2011 14
  • 15. Uso do Linux em relação a outros Sistemas Operacionais: 15
  • 16. 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
  • 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 17 ver outros fatos!
  • 18. 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 18 ver outros fatos!
  • 19. 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: Fonte: Garner e Wiki 19
  • 20. 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
  • 21. 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
  • 22. 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
  • 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. 23
  • 24. 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
  • 26. 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
  • 27. Obtendo o núcleo Linux: 27
  • 28. 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
  • 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. 30
  • 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. 31
  • 32. Núcleo do Linux e o Sistema Operacional GNU/Linux Aplicações do Usuário Nível de Aplicação Biblioteca GNU C (glibc) GNU/Linux Interface das Chamadas de Sistema Nível de Núcleo Sistema Código dependente da arquitetura Plataforma de Hardware Arquitetura GNU/Linux e o Núcleo Linux (Jones, 2007) 32
  • 33. Arquitetura do Núcleo do Linux A arquitetura conceitual do Núcleo do Linux é constituída por 5 principais subsistemas. Gerenciador Gerenciador de Processos de Memória Sistema de Arquivos Rede Virtual Comunicação entre Processos (IPC) Arquitetura conceitual do Núcleo do Linux (Bowman, 1998) 33
  • 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. 34
  • 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. 35
  • 36. 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: Sistema de Arquivos Virtual (VFS)  fs.h ext3 ... reiser /proc  buffer.c Cache Buffer  fs/* Drivers de Dispositivos Dispositivos Físicos Sistema de Arquivos Virtual (Jones, 2007) 36
  • 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/* 37
  • 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/. 38
  • 39. Estrutura do Núcleo do Linux 39
  • 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; 40
  • 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; 41
  • 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; 42
  • 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). 43
  • 44. Processo de Inicialização do Núcleo do Linux Boot BIOS Bootstrap Kernel Init Loader  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) 44
  • 45. Processo de Inicialização do Núcleo do Linux Boot BIOS Bootstrap Kernel Init Loader  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 45
  • 46. Processo de Inicialização do Núcleo do Linux Boot BIOS Bootstrap Kernel Init Loader  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. 46
  • 47. Processo de Inicialização do Núcleo do Linux Boot BIOS Bootstrap Kernel Init Loader  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 47
  • 48. Processo de Inicialização do Núcleo do Linux Boot BIOS Bootstrap Kernel Init Loader  Inicialização das configurações e serviços do sistema operacional. 48
  • 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. 49
  • 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; 50
  • 51. 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. 52
  • 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) 53
  • 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 54
  • 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. 55
  • 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. 56
  • 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 57
  • 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” 58
  • 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 59
  • 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. 60
  • 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 <ran...@developer.org>” … “Developer's Certificate of Origin 1.0” ... 61
  • 62. 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 63
  • 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 64
  • 65. 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. 66
  • 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 67
  • 69. Patchwork quilt (“colcha de retalhos”) ● gerenciamento de patches ● scripts de Andrew Morton 69
  • 70. 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. 71
  • 72. 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. 73
  • 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 - linux-kernel@vger.kernel.org; ● Escolha seu destinatário de CO: ● Para patches pequenos (erros de compilação, erros de escrita) enviar como CO o “Trivial Patch Monkey” (trivial@kernel.org); ● Somente texto puro. 74
  • 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. 75
  • 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. Sem isto - viola “UK's Data Protection Act” (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. 76
  • 77. Assine seu trabalho: Signed-off-by: Random J Developer <random@developer.example.org> ● 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”. 77
  • 78. Referências 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 78
  • 79. Referências 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 79
  • 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 80
  • 81. ? Frank Helbert – frank@ime.usp.br Luiz Arthur – luizsan@ime.usp.br Rodrigo Campiolo – campiolo@ime.usp.br 81