38
Introdução ao Desenvolvimento Introdução ao Desenvolvimento do Kernel Linux do Kernel Linux Versões 2.6.X Versões 2.6.X http://www.tchelinux.org http://www.tchelinux.org   Palestrante: Douglas Schilling Landgraf Email: [email protected]

Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

Embed Size (px)

Citation preview

Page 1: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

Introdução ao Desenvolvimento  Introdução ao Desenvolvimento  do Kernel Linuxdo Kernel Linux

Versões 2.6.XVersões 2.6.X

http://www.tchelinux.orghttp://www.tchelinux.org  

Palestrante: Douglas Schilling LandgrafEmail: [email protected]

Page 2: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

● Sobre o palestranteSobre o palestrante● Sobre a palestraSobre a palestra● Dicas iniciaisDicas iniciais

Kernel LinuxKernel Linux

Page 3: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Kernel Linux Kernel Linux 

Onde começar ?  TODO List ?Onde começar ?  TODO List ?

http://www.http://www.kernelkernel.org.org

http://kernelhttp://kerneljanitorsjanitors.org.orghttp://kernelnewbies.org/KernelJanitors/http://kernelnewbies.org/KernelJanitors/TodoTodohttp://kernelnewbies.org/http://kernelnewbies.org/KernelMentorsKernelMentors

http://www.kernelhttp://www.kernelnewbiesnewbies.org.orghttp://http://br.br.kernelnewbies.org/kernelnewbies.org/

Page 4: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Onde obter o código fonte ? Onde obter o código fonte ? 

httphttp://www.kernel.org://www.kernel.orgftpftp://ftp.kernel.org/pub://ftp.kernel.org/pubrsyncrsync://rsync.kernel.org/pub/://rsync.kernel.org/pub/

Kernel Linux Kernel Linux 

Page 5: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Licença: Licença: ● GPL ( versão 2 ) GPL ( versão 2 )     

http://www.gnu.org/copyleft/gpl.htmlhttp://www.gnu.org/copyleft/gpl.html

Como funciona?Como funciona?● Podemos Podemos baixarbaixar o software e  o software e alteraralterar, desde que publiquemos este , desde que publiquemos este 

software com assoftware com as  licenças originais, incluindo licenças originais, incluindo a disponibilização do a disponibilização do código fontecódigo fonte..

Kernel LinuxKernel Linux

Page 6: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Definição:Definição:

● É no kernel que estão É no kernel que estão definidas funções para operação comdefinidas funções para operação com  periféricosperiféricos (mouse, discos, impressoras, interface serial/interface  (mouse, discos, impressoras, interface serial/interface paralela, usb etc.), gerenciamento de memória, entre outros. paralela, usb etc.), gerenciamento de memória, entre outros. 

● Conjunto de programas que fornece, para os programas de usuário Conjunto de programas que fornece, para os programas de usuário (aplicativos), uma(aplicativos), uma  interface para utilizar os recursos do sistemainterface para utilizar os recursos do sistema..

KernelKernel

Page 7: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

KernelKernel

Aplicativo 1Aplicativo 1 Aplicativo 2Aplicativo 2

System Call Interface (open, close, brk (malloc), etc.)System Call Interface (open, close, brk (malloc), etc.)

Kernel SubsystemsKernel Subsystems

Device DriversDevice Drivers

User-Space User-Space

Kernel-SpaceKernel-Space

HardwareHardware

Page 8: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Design: Monolítico versus MicroKernelDesign: Monolítico versus MicroKernel● Monolítico:Monolítico:

● Criado em meados de 1980Criado em meados de 1980● Um grande e único processo (imenso)Um grande e único processo (imenso)● Comunicação trivial (todos rodam em um único processo)Comunicação trivial (todos rodam em um único processo)

● MicroKernel:MicroKernel:● Separado em dois processos (“servers” / user­space)Separado em dois processos (“servers” / user­space)● Comunicação via IPC (interprocess communication)Comunicação via IPC (interprocess communication)● ModularidadeModularidade

KernelKernel

Page 9: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Exemplo:Exemplo:

KernelKernel  

Kernel

Softwares

Kernel

Monolítico MicroKernel

IPC

SoftwaresServers

IPC = Interprocess Communication

Page 10: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Design:Design:  ● Executa em um Executa em um único processoúnico processo● Kernel Linux é Kernel Linux é monolítico monolítico ● ImplementaImplementa  recursos do microkernelrecursos do microkernel design design

● Capacidade de Capacidade de carregar dinamicamente móduloscarregar dinamicamente módulos● Suporte a Suporte a processadores SMPprocessadores SMP (symmetrical multiprocessor) (symmetrical multiprocessor)● Sistema de acesso ao dispositivos (Sistema de acesso ao dispositivos (sysfssysfs))

Kernel LinuxKernel Linux

Page 11: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Versões: Versões: 

Kernel Linux Kernel Linux 

Estáveis:Estáveis:● Correções de bugsCorreções de bugs● Novos driversNovos drivers

Desenvolvimento:Desenvolvimento:● Alterações frequentes e drásticasAlterações frequentes e drásticas● Desenvolvedores testam novas soluçõesDesenvolvedores testam novas soluções

Page 12: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Versões: Versões: 

Kernel Linux Kernel Linux 

    2.6.02.6.0Versão principal éVersão principal é 2 2

Versão secundária é Versão secundária é 66  (estável)(estável)

Release éRelease é 0 0

Números pares = versões estáveis  Números pares = versões estáveis  Ex.: (Ex.: (2.0, 2.4, 2.62.0, 2.4, 2.6))

Números ímpares = versões de desenvolvimento  Números ímpares = versões de desenvolvimento  Ex.: (Ex.: (1.3, 2.3, 2.51.3, 2.3, 2.5))

Ex.: linux­2.6.20.3.tar.bz2Ex.: linux­2.6.20.3.tar.bz2

Page 13: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Versões, e hoje como funciona? Versões, e hoje como funciona? 

● Hoje Hoje só temossó temos a versão 2.6.X a versão 2.6.X● Decisão tomada no Linux Kernel Developers Summit ( Decisão tomada no Linux Kernel Developers Summit ( 20042004 ) )● Todas novas implementações são enviadas para o Todas novas implementações são enviadas para o Andrew Morton Andrew Morton 

(Árvore  ­mm)(Árvore  ­mm)● Após Após tornar­se estável tornar­se estável o patch entra na versão principal.o patch entra na versão principal.● Versão 2.7Versão 2.7 ~= ~=  Árvore  Árvore ­mm ­mm

Kernel LinuxKernel Linux

Page 14: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Diretórios: Diretórios: arch/arch/ Código específico de arquiteturaCódigo específico de arquiteturacrypto/crypto/ API de criptografiaAPI de criptografiaDocumentation/Documentation/ DocumentaçãoDocumentaçãodrivers/drivers/ Device DriversDevice Driversfs/fs/ File systemsFile systemsinclude/include/ HeadersHeadersinit/init/ Kernel bootKernel bootipc/ipc/ Interprocess communicationInterprocess communicationkernel/kernel/ Core do KernelCore do Kernel

Kernel Linux Kernel Linux 

Page 15: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Diretórios: Diretórios: 

lib/lib/ Bibliotecas  Bibliotecas  mm/mm/ Gerenciamento de MemóriaGerenciamento de Memórianet/net/ Sistema de Rede Sistema de Rede scripts/scripts/ Scripts em geralScripts em geralsecurity/security/ Subsistema de segurançaSubsistema de segurançasound/sound/ Susbsistema de somSusbsistema de somusr/usr/ initramfsinitramfs

Kernel LinuxKernel Linux

Page 16: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Kernel Linux Kernel Linux 

CodingStyle:  CodingStyle:  

IdentaçãoIdentação 1 TAB = 8 caracteres (!= 8 espaços)1 TAB = 8 caracteres (!= 8 espaços)ColunasColunas 80 80 

ifif(teste)(teste) { {blah();blah();

} else {} else {                bleh();bleh();}}if(foo)if(foo)

bar();bar();$ linux/Documentation/CodingStyle $ linux/Documentation/CodingStyle 

Page 17: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Kernel Linux Kernel Linux 

CodingStyle:  CodingStyle:  

Funções:Funções:1, 2 páginas?1, 2 páginas?< 10 variáveis locais ?< 10 variáveis locais ?

Comentários:Comentários:/*/*

            *  Olá, Eu sou um comentário!*  Olá, Eu sou um comentário!            */ */ 

Outros:Outros: typedef, structs, etc.  typedef, structs, etc. 

Page 18: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Kernel Linux Kernel Linux 

CodingStyle:  CodingStyle:  

Ferramenta indentFerramenta indent::

$$ indent indent ­kr ­i8 ­ts8 ­sob ­180 ­ss ­bs ­ps1 <arquivo> ­kr ­i8 ­ts8 ­sob ­180 ­ss ­bs ­ps1 <arquivo>

ou ou 

$$ scripts/Lindent scripts/Lindent

Page 19: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Kernel Linux Kernel Linux 

Compilando/Carregando/Listando/Descarregando:  Compilando/Carregando/Listando/Descarregando:  

$ linux/drivers/net>$ linux/drivers/net> vi hello.c     vi hello.c    $ linux/drivers/net>$ linux/drivers/net> vi Makefile vi Makefile                                                                obj­m += hello.o obj­m += hello.o $ linux/drivers/net>$ linux/drivers/net> make ­C /usr/src/linux SUBDIRS=$PWD modules make ­C /usr/src/linux SUBDIRS=$PWD modules

 Atenção aos WARNINGSAtenção aos WARNINGS

$$ insmod insmod ./modulo.ko        ./modulo.ko       $$ lsmod lsmod$ $ modprobemodprobe modulo.ko  (procura por dependências) modulo.ko  (procura por dependências)$ $ rmmodrmmod modulo.ko modulo.ko

Page 20: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Kernel Linux Kernel Linux 

hello.chello.c    

#include <linux/init.h>#include <linux/init.h>#include <linux/module.h>#include <linux/module.h>MODULE_LICENSE("Dual BSD/GPL");MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)static int hello_init(void){{        printk(KERN_ALERT "hello!\n");printk(KERN_ALERT "hello!\n");        return 0;return 0;}}

Page 21: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Kernel Linux Kernel Linux 

hello.c hello.c   

static void hello_exit(void)static void hello_exit(void){{          printk(KERN_ALERT "Goodbye\n");printk(KERN_ALERT "Goodbye\n");}}

module_init(hello_init);module_init(hello_init);module_exit(hello_exit);module_exit(hello_exit);

Page 22: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Kernel Linux Kernel Linux 

Depuração com printfk():  Depuração com printfk():  

printk() ~= printf()printk() ~= printf()

printk(KERN_WARNING “mensagem de warning!\n”);printk(KERN_WARNING “mensagem de warning!\n”);printk(KERN_DEBUG “mensagem de debug!\n”);printk(KERN_DEBUG “mensagem de debug!\n”);printk(<1> “mensagem de alerta!!\n”);printk(<1> “mensagem de alerta!!\n”);  <linux/kernel.h>  valores das MACROS {0,1,2,3, ... 7}<linux/kernel.h>  valores das MACROS {0,1,2,3, ... 7}

Prioridade:  0 ­> 7Prioridade:  0 ­> 7

Page 23: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Kernel Linux Kernel Linux 

Ferramentas:  Ferramentas:  

diff diff                            Ferramenta para comparar arquivos                         Ferramenta para comparar arquivospatchpatch                       Ferramenta para aplicar patchs                        Ferramenta para aplicar patchs quiltquilt Scripts para manutenção de patchs  Scripts para manutenção de patchs  vimdiffvimdiff Feramenta para comparar arquivosFeramenta para comparar arquivosqemuqemu EmuladorEmuladorgitgit Controle de fontes/versõesControle de fontes/versõesctagsctags Tags no código fonteTags no código fontecscopecscope Navega no código fonteNavega no código fonteketchupketchup                                      Ferramenta para atualização do kernelFerramenta para atualização do kernel

Page 24: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Kernel Linux Kernel Linux 

Ctags:  Ctags:  

$ $ make tagsmake tags

$ vi $ vi .vimrc.vimrcset tags=/usr/src/linux/tagsset tags=/usr/src/linux/tags

:ta:ta printk printk$ vim ­t printk$ vim ­t printkCTRL + ]CTRL + ]CTRL + tCTRL + t

http://ctags.sourceforge.net.http://ctags.sourceforge.net.

Page 25: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Kernel Linux Kernel Linux 

Ferramentas Diff e Patch:  Ferramentas Diff e Patch:  

$$ diff ­ruN linux­x.y.z/ linux/ > meu­patch.diff diff ­ruN linux­x.y.z/ linux/ > meu­patch.diff

­r ­r  RecursivoRecursivo­u­u Formato compreensivoFormato compreensivo­N­N Incluir arquivos novosIncluir arquivos novos

$ patch ­p1 < ../meu­patch.diff$ patch ­p1 < ../meu­patch.diff (diretório abaixo) (diretório abaixo)

­p1­p1   Indica qual ponto da árvore ele vai aplicar o patchIndica qual ponto da árvore ele vai aplicar o patchlinux/drivers/net/arquivo.clinux/drivers/net/arquivo.c

Page 26: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Kernel Linux Kernel Linux 

Ferramentas Diff e Patch (exemplo):  Ferramentas Diff e Patch (exemplo):  

­­­ linux­2.6.20.3.orig/­­­ linux­2.6.20.3.orig/drivers/net/ni65.cdrivers/net/ni65.c+++ linux­2.6.20.3/+++ linux­2.6.20.3/drivers/net/ni65.cdrivers/net/ni65.c@@ ­295,7 +295,7 @@ static void ni65_set_performance(struct@@ ­295,7 +295,7 @@ static void ni65_set_performance(struct  */*/  static int ni65_open(struct net_device *dev)static int ni65_open(struct net_device *dev)  {{­       struct priv *p = (struct priv *) dev­>priv;­       struct priv *p = (struct priv *) dev­>priv;+       struct priv *p = dev­>priv;+       struct priv *p = dev­>priv;

Page 27: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Kernel Linux Kernel Linux 

Ferramenta Quilt:  Ferramenta Quilt:  

$ $ mkdir patchesmkdir patches$ $ quilt quilt newnew nome­do­patch.diff nome­do­patch.diff$ $ quilt quilt addadd nome_do_arquivo nome_do_arquivo$ $ quilt quilt refreshrefresh$ $ quilt quilt toptop$ $ quilt quilt diffdiff$ $ quilt quilt pop [­f] [­a]pop [­f] [­a]$ $ quilt quilt push [­f] [­a]push [­f] [­a]$ $ quilt quilt removeremove

http://savannah.nongnu.org/projects/quilt/

Page 28: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Kernel Linux Kernel Linux 

Enviando um patch:  Enviando um patch:  

Você testouVocê testou ? ?Escolheu a Escolheu a lista certalista certa? ? 

Assunto:Assunto: [PATCH] arquivo.c  O que ele faz  [PATCH] arquivo.c  O que ele faz Mensagem: Mensagem:  O que o patch faz com detalhes O que o patch faz com detalhesO patch esta conforme o O patch esta conforme o CodingStyleCodingStyle??

Assinatura:Assinatura: Signed­off­by: Autor <email> Signed­off­by: Autor <email>

Mensagem em Mensagem em TEXTO PUROTEXTO PURO  ( SEM HTML )( SEM HTML ) SEM anexosSEM anexos, patchs , patchs INLINEINLINE

No No máximo um patch por emailmáximo um patch por email ( Depende de outro patch?) ( Depende de outro patch?)

Page 29: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Kernel Linux Kernel Linux 

Enviando um patch (exemplo):  Enviando um patch (exemplo):  

To:To: kerneljanitors@.... [email protected]:Subject: [PATCH] ni65.c: cleanup not needed casts [PATCH] ni65.c: cleanup not needed castsMensagem: Mensagem: Removed all unnecessary casts.Removed all unnecessary casts.Signed­off­by:Signed­off­by: Douglas Schilling Landgraf <[email protected]> Douglas Schilling Landgraf <[email protected]>­­­ linux­2.6.20.3.orig/drivers/net/ni65.c­­­ linux­2.6.20.3.orig/drivers/net/ni65.c+++ linux­2.6.20.3/drivers/net/ni65.c+++ linux­2.6.20.3/drivers/net/ni65.c@@ ­295,7 +295,7 @@ static void ni65_set_performance(struct@@ ­295,7 +295,7 @@ static void ni65_set_performance(struct  */*/  static int ni65_open(struct net_device *dev)static int ni65_open(struct net_device *dev)

Page 30: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Instalando o código fonte: Instalando o código fonte: Diretório padrão:Diretório padrão:

/usr/src/linux/usr/src/linux  (Devemos usar esse path ?)  (Devemos usar esse path ?)

Descompactando:Descompactando:

$$  tar xvjf linux­x­y­z.tar.bz2tar xvjf linux­x­y­z.tar.bz2linux­x.y.z/Documentation/device­mapper/linear.txtlinux­x.y.z/Documentation/device­mapper/linear.txtlinux­x.y.z/Documentation/device­mapper/snapshot.txtlinux­x.y.z/Documentation/device­mapper/snapshot.txtlinux­x.y.z/Documentation/device­mapper/striped.txtlinux­x.y.z/Documentation/device­mapper/striped.txt

Kernel Linux Kernel Linux 

Page 31: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Compilando: Compilando: 

$$ make help make help ajudaajuda

$$ make mrproper make mrproper Remover todos os arquivos + .config + backup Remover todos os arquivos + .config + backup 

$$ make config  make config  modo texto modo texto 

$$ make menuconfig  make menuconfig   modo texto (ncurses)  modo texto (ncurses)

$ $ make xconfigmake xconfig modo gráfico (Xwindows)modo gráfico (Xwindows)

$ $ make gconfigmake gconfig modo gráfico (GTK+)modo gráfico (GTK+)

Kernel LinuxKernel Linux

Page 32: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Compilando: Compilando: 

Opções:Opções:[ *   ][ *   ]  ­ Habilitado (built­in) ­ Habilitado (built­in)     [     ]   ­ Não[     ]   ­ Não esta habilitado esta habilitado[ M ][ M ]    ­ Habilitado (Módulo)  ­ Habilitado (Módulo)

$ $ makemake Compilando o Kernel Compilando o Kernel 

$ $ make modules_installmake modules_install    Instalando os módulos  Instalando os módulos

Kernel LinuxKernel Linux

Page 33: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Compilando: Compilando: 

# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz­2.6.X# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz­2.6.X

vmlinuz = Kernel Linux Compactadovmlinuz = Kernel Linux Compactado# cp /usr/src/linux/System.map /boot/System.map­2.6.X# cp /usr/src/linux/System.map /boot/System.map­2.6.X

System.map = Tabela de SímbolosSystem.map = Tabela de Símbolos# cp /usr/src/linux/.config /boot/config­2.6.X# cp /usr/src/linux/.config /boot/config­2.6.X

Copiar o .config para /boot (backup)Copiar o .config para /boot (backup)

Kernel LinuxKernel Linux

Page 34: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Compilando: Compilando: 

    Será necessário criar uma imagem inicial para que o kernel carregue Será necessário criar uma imagem inicial para que o kernel carregue alguns módulos  básicos (IDE, SCSI, RAID) antes de acessar o alguns módulos  básicos (IDE, SCSI, RAID) antes de acessar o filesystem.filesystem.

            ##  mkinitrd ­k /boot/vmlinuz­2.6.X ­i /boot/initrd­2.6.Xmkinitrd ­k /boot/vmlinuz­2.6.X ­i /boot/initrd­2.6.X

ouou#  #  mkinitrd /boot/initrd­2.6.X.img 2.6.Xmkinitrd /boot/initrd­2.6.X.img 2.6.X

                                

Kernel LinuxKernel Linux

Page 35: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

$$ vi /boot/grub/menu.list vi /boot/grub/menu.list

title Kernel­2.6.X­defaulttitle Kernel­2.6.X­default         root (hd0,5)root (hd0,5)

         kernel /boot/vmlinuz­2.6.X­default root=/dev/hda6 kernel /boot/vmlinuz­2.6.X­default root=/dev/hda6 vga=0x314 resume=/dev/hda5 splash=silent showoptsvga=0x314 resume=/dev/hda5 splash=silent showopts

         initrd /boot/initrd­2.6.X­defaultinitrd /boot/initrd­2.6.X­default

Kernel Linux Kernel Linux 

Compilando (Grub boot loader): Compilando (Grub boot loader): 

Page 36: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

$$  vi /etc/lilo/lilo.confvi /etc/lilo/lilo.conf

image=/boot/vmlinuz­2.6.X­defaultimage=/boot/vmlinuz­2.6.X­defaultlabel=2.6.Xlabel=2.6.Xroot=/dev/hda3root=/dev/hda3read­onlyread­only

$$  /sbin/lilo/sbin/lilo Grava as configuraçõesGrava as configurações$ $ rebootreboot Reiniciando o sistemaReiniciando o sistema$ $ uname ­auname ­a Exibe o kernel atualExibe o kernel atual

Kernel Linux Kernel Linux 

Compilando (LILO boot loader): Compilando (LILO boot loader): 

Page 37: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Kernel Linux Kernel Linux 

Documentação:  Documentação:  linux­2.6.X/Documentationlinux­2.6.X/Documentation

Linux Kernel Development 2Linux Kernel Development 2rd rd Edition Edition (Robert Love)  (Robert Love)  ISBN: 0­672327201ISBN: 0­672327201Linux Device Drivers 3Linux Device Drivers 3rdrd Edition Edition  (Cobert, Rubini, Kroah­Hartman)  (Cobert, Rubini, Kroah­Hartman)ISBN: 0­596­00590­3ISBN: 0­596­00590­3Versão Online (free)Versão Online (free): : http://kroah.com/lkn/http://kroah.com/lkn/Linux Weekly NewsLinux Weekly Newshttp://www.lwn.nethttp://www.lwn.netGoogleGooglehttp://www.google.comhttp://www.google.com

Page 38: Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X - Douglas Schilling Landgraf

2007­03­24

Dúvidas ?Dúvidas ?Sugestões?Sugestões?

http://tchelinux.orghttp://tchelinux.orghttp://dougsland.livejournal.comhttp://dougsland.livejournal.com

Palestrante: Douglas Schilling LandgrafEmail: [email protected]