Você está na página 1de 7

UNIVERSIDADE FEDERAL DO CEAR CAMPUS QUIXAD CURSO DE REDES DE COMPUTADORES

EDIGLEISON DA SILVA BARBOSA FRANCISCO DE ASSIS DA SILVA MATHEUS MEDEIROS DA CRUZ OTVIO SILVA PIRES PAULO TARSO JUNIOR

TUTORIAL DE COMPILAO DO KERNEL LINUX

QUIXAD 2012

Compilao do Kernel Linux


A compilao do Kernel um passo um tanto quanto complexo e srio, que exige um bom conhecimento do hardware onde o Kernel ser construdo. Esta compilao traz uma srie de benefcios, pois o Kernel que acompanha as distribuies compilado para hardwares gerais e possivelmente trar suporte a dispositivos que voc no possui. Sero necessrios aproximadamente 300MB de espao em disco disponveis para copiar e descompactar o cdigo fonte do Kernel e alguns pacotes de desenvolvimento como o gcc, cpp, binutils, gcc-i386-gnu, bin86, make, dpkg-dev, perl, kernel-package (os trs ltimos somente para a distribuio Debian).

1 Primeiros passos
sero necessrio privilgios de super usurio: $ su # apt-get install wget tar bzip2 build-essential libncurses5-dev kernel-package Primeiramente voc deve conseguir a verso do kernel que mais se encaixe as suas necessidades, para descobrir qual verso voc est usando use um dos comandos: # uname -r # cat proc/version # dmesg | grep Linux version Normalmente recomendado baixar a verso estvel mais atual, que no nosso caso a 3.4.2. Voc pode encontra-l no site http://kernel.org/, que organizado pela Linux Kernel Organization, baix-lo diretamento no browser por HTTP, FTP ou atrves do comando: # wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.4.2.tar.bz2 Dica: Caso no queira manter o arquivo do kernel compactado aps a compilao, mude para a pasta /tmp antes de baixar o arquivo. Com o arquivo no disco o prximo passo descompact-lo # tar -xjvf linux-3.4.2.tar.bz2 -C /usr/src

O arquivo deve ser descompactado no diretrio /usr/src pois este armazena o cdigo-fonte do kernel com seus arquivos de cabealho. A descompactao cria automaticamente um diretrio homnimo ao arquivo, o recomendvel renome-lo para linux-suaverso no nosso caso: linux-3.4.2 Entre no diretrio do seu novo kernel. # cd /usr/src e logo em seguida criar um link simblico para esse diretrio # ln -s linux-3.4.2/ linux

2 Configurao
Agora entra a parte mais complexa desse processo: a configurao. Aqui voc dever escolher quais mdulos estaro presentes no seu kernel e como eles sero "acoplados". Existem trs formas de se acoplar um mdulo ao kernel: atravs da opo Y, ele estar acoplado diretamento, inflando o seu tamanho; com a opo M, ele ser acoplado como um mdulo do kernel (bom para drivers de som, vdeo e etc); ou N, onde o mdulo no estar presente no kernel. Para que seja feita esta escolha, existem trs interfaces disponveis: config - Sero feitas perguntas e voc ir respondendo qual ao tomar (como Y, M, N ou ? para uma ajuda); menuconfig - Seleo dos mdulos via menu baseado em texto, radiolists e dilogo; xconfig - Seleo dos mdulos via menu no modo grfico. indicado que as compilaes sejam feitas totalmente em modo texto para se economizar memria e evitar problemas, por isso sugiro que voc use a opo menuconfig. Para acessar qualquer uma das opes, estando dentro do diretrio do kernel, digite: # make <opo> ex.: # make menuconfig Voc tem que selecionar as opes de acordo com seu hardware, seguem um explicao sobre cada um dos menus General Setup: Trata de caractersticas especficas de configurao do kernel Enable loadable module support: Habilita o uso de mdulos pelo kernel. Processor type and features:- configuraes relativas a processadores, como: o tipo do processador, a famlia, etc.

Power management and ACPI options: Trata de recursos de gerenciamentos de energia; Bus options (PCI, PCMCIA, EISA, MCA, ISA): Opes de suporte aos barramentos; Executable file formats / Emulations: Formatos de arquivo executveis e emuladores, como por exemplo o binrio MISC, no caso que voc tenha programas que precisam de interpretador como Java, Python, .Net ou emuladores DOS. Netwoking support: Habilita ferramenta de Rede, mesmo que sua mquina no esteja conectada a uma rede algumas aplicaes podem exigir suporte rede. Firmware Drivers: Possibilita a comunicao entre o sistema e firmwares de uma determinada empresa. File systems: As opes aqui dizem respeito ao sistema de arquivos que voc usar e ao qual o seu kernel ter suporte. Device drivers: Aqui onde sero habilitados os controladores de dispositivos dependendo da caracterstica do hardware.

Se quiser manter sua configurao atual guardada caso tenha algum problemas execute o comando abaixo: $ sudo make oldconfig

3 Compilao
A partir de agora teremos duas opes: usar o kernel-package para criar um pacote que pode ser executado em qualquer outra distribuio baseada em Debian ou fazer o passo a passo manualmente.

3.1 Modo Manual (Qualquer distribuio)


Iniciar a compilao do kernel atravs de um simples: # make e ento compilar os mdulos: # make modules por ultimo instalar os modulos compilados: # make modules_install Voc deve estar se perguntando: Mas o qu realmente so esse modulos? O kernel do Linux tem um design modular. No momento da inicializao, somente um kernel residente mnimo carregado na memria. Depois disso, sempre que um usurio requisitar uma funcionalidade que no est presente no kernel residente, um mdulo do kernel, por vezes referido como um driver, dinamicamente carregado na memria.

Pronto! agora que j compilamos e instalamos os mdulos podemos finalmente instalar a nova verso do kernel # make install Isso ir instalar trs arquivos no diretrio /boot assim como modificar seu arquivo de configurao do grub. System.map-3.4.2 config-3.4.2 vmlinuz-3.4.2 initrd.img-3.4.2

# ls /boot Imagens initrd contm controladores de dispositivos que so necessrios para carregar o resto do sistema operacional mais tarde. caso o instalao do kernel no tenho criado o diretrio initrd.img-3.4.2 diretamente seguro cri-lo: # mkinitrd -o initrd.img-3.4.2 3.4.2 ou # sudo update-initramfs -u -k 3.4.2 para atualizar. Caso na d certo: # sudo update-initramfs -c -k 3.4.2 para cri-lo. Por precauo crie o arquivo: # vim /boot/grub/menu.lst Cole o texto: title root kernel initrd savedefault boot Debian GNU/Linux, kernel Default (hd0,0) root=/dev/sda ro /boot/initrd.img-3.4.2 2.6.25

/boot/vmlinuz

Agora basta atualizar o grub e reiniciar o sistema.

# update-grub # reboot

3.2 Modo Debian (easier)


make-kpkg comando usado para criar pacotes Debian, a opo clean limpa o diretrio /usr/src de todas as compilaes anteriores que usaram o construtor kpkg. # make-kpkg clean A opo --initrd usando quando estamos criando uma pacote com uma imagem do kernel linux, para qu durante a instalao a imagem initrd seja criada. kernel_image cria uma imagem do kernel linux. --revision muda o nmero de verso do pacote que est sendo produzido o padro 10.00.custom. # make-kpkg --initrd --revision=teste.1.0 kernel_image dpkg o o gerenciador de pacotes Debian, a opo -i instala determinado pacote. # sudo dpkg -i ../linux-3.4.2_custom.1.0_amd64.deb

4 Bibliografia
Vivet Gite. (2005). How to: Compile Linux kernel 2.6. Available: http://www.cyberciti.biz/tips/compiling-linux-kernel-26.html. Last accessed 14th Jun 2012. Jos Lopes de Oliveira Jnior. (2005). Compilao comentada do kernel. Available: http://www.vivaolinux.com.br/artigo/Compilacao-comentada-do-kernel?pagina=1. Last accessed 14th Jun 2012. Gleydson Mazioli da Silva . (2010). Guia Foca GNU/Linux - Intermedirio+Iniciante. Available: http://www.guiafoca.org/?page_id=326. Last accessed 14th Jun 2012. Wiki. (2012). Kernel/Compile. Available: https://help.ubuntu.com/community/Kernel/Compile. Last accessed 14th Jun 2012. KernelTeam/GitKernelBuild. (2011). GitKernelBuild. Available: https://wiki.ubuntu.com/KernelTeam/GitKernelBuild. Last accessed 14th Jun 2012. Adrian Marius. (2012). Compiling Linux Kernel 3.4.x Vanilla Final - Ubuntu/Debian way . Available: http://mapopa.blogspot.com.br/2009/01/compiling-2.html. Last accessed 10th jun 2012.

Ferreira, Rubem E. (2008). Linux: guia do administrador do sistema. 2nd ed. So Paulo: Novatec Editora. p314-330.