Вы находитесь на странице: 1из 12

Linux System Administration 456 Compilao do Kernel

www.4linux.com.br

-2

Sumrio
Compilao do Kernel................................................................................................................ 3 1.1. Objetivos :....................................................................................................................... 3 1.2. Como recompilar o kernel no Linux................................................................................ 4 1.3. GRUB 2......................................................................................................................... 11 REFERNCIAS BIBLIOGRFICAS.................................................................................................................... 13 ANEXOS................................................................................................................................... 15 Primeiro anexo..................................................................................................................... 16
Tpico do Anexo ............................................................................................................................ 16

ndice de tabelas ndice de Figuras

Compilao do Kernel - 3

Compilao do Kernel

1.1. Objetivos :
Entender como recompilar o kernel.

Compilao do Kernel - 4

1.2. Como recompilar o kernel no Linux


Distribuio foco: Debian 6.0 (Squeeze)

Obs: A nica coisa que difere a compilao do kernel no Debian de outras distribuies Linux a forma como os pacotes necessrios para a compilao como compilador, biblioteca ncurses etc so instalados. No Debian, use o gerenciador de instalao de programas chamado aptitude. O centro pelo qual todas as distribuies so construdas o kernel do Linux. Ele fica entre os programas de usurios e o hardware do sistema. o kernel que fornece suporte aos hardwares, protocolos e alguns softwares. O kernel genrico baseia-se na utilizao de mdulos, ou seja, o desenvolvedor compila um kernel bsico e compila todo o resto em forma de mdulo, de modo que todos os suportes adicionais so includos de forma modular. Voc vem usando seu Linux alegremente, cuidando da prpria vida e ento um belo dia voc tenta fazer funcionar um pacote de software que simplesmente no quer cooperar. Ou usar um dispositivo que no tem o mdulo desejado. E voc obtm uma mensagem de erro! Da voc resolve procurar um entendido em Linux, e ele diz: Ah, s recompilar o kernel Da voc pensa: An ran, por que eu simplesmente no desmonto e monto meu carro enquanto estou dirigindo?. Relaxe , esse processo no to doloroso quanto parece ser. Depois que voc instala o Linux, o sistema vai rodar um kernel pr-compilado pelo fornecedor da distribuio (Debian, Red Hat, Slackware etc) . A sua distribuio no conhece o seu computador, ento o kernel instalado o mais genrico o possvel. Ele pode vir pesado, pois nele vo ter coisas que talvez no vai ser usadas.

Compilao do Kernel - 5 E com isso, o kernel que a distro oferece acaba tendo uma performance menor do que deveria. Ou por no ter o recurso que voc precise, ou ainda, por ter a mais. Ento, necessrio compilar um kernel para ter uma melhora no desempenho; Compile um kernel para adicionar suporte a novos dispositivos; Para aplicar patchs de correo; Ou ainda como diria Linus Torvalds: s por prazer mesmo! Um kernel bem compilado conter apenas um conjunto estritamente necessrio ao funcionamento do servidor e no ter mdulos externos e sim built-in. Deve-se conhecer muito bem o hardware quando comear a configurar o kernel manualmente. Quando falamos que um mdulo built-in, significa que o mesmo j est incorporado no kernel do sistema; ou seja, assim que o kernel for iniciado, o dispositivo tambm ser, caso a mquina o tenha. Agora os mdulos que no so built-in, ou seja, que no so carregados quando o sistema inicia, significa que o kernel suporta, mas o mesmo precisa ser levantado manualmente. Ento, mdulo como lego, pode estar ali, mas para funcionar, voc precisa montar, ou melhor carregar. Para descobrir a verso atual do seu kernel: # uname -r

Use o dvd do Debian e execute os seguintes comandos:

# apt-cdrom add # aptitude update

Compilao do Kernel - 6 Para conhecer mais sobre o seu hardware: # aptitude install pciutils usbutils # lspci # lsusb # cat /proc/cpuinfo # cat /proc/meminfo

Voc pode usar o comando lshw, mas para isso precisa instal-lo: # aptitude install lshw # lshw

Pacotes que preciso para compilar o kernel na distribuio Debian: # aptitude install build-essential # aptitude install libncurses5-dev

Veja a sequncia da compilao. E necessrio que tenha o mais importante, que o cdigo fonte do kernel, no http://www.kernel.org, sempre tem a verso mais nova do kernel l. E quando voc baixar o fonte do kernel, deve descompact-lo em um diretrio especfico, o /usr/src. # tar -xjvf linux-2.6.38.3.tar.bz2 -C /usr/src/

No qual o -C, para descompactar o pacote em um diretrio diferente do lugar onde se encontra. Depois que descompactar, entre no diretrio onde est o kernel para comear a compilao. # cd /usr/src/linux-2.6.38.3 # ln -s /usr/src/linux-2.6.38.3 /usr/src/linux

Compilao do Kernel - 7 Um passo extremamente importante antes de configurar o kernel sempre adicionar uma EXTRAVERSION a fim de organizar uma eventual estrutura de mdulos no /lib. Utilize o comando date para gerar uma string de extraversion: # date +-%Y%m%dc1

Adicione essa string varivel EXTRAVERSION na Makefile do kernel: # vi Makefile EXTRAVERSION = <string_gerada> Se essa no for a primeira compilao desse kernel, sempre recomendado realizar uma limpeza no diretrio do fonte do kernel: # make mrproper

A, digite o comando para configurar as opes que o kernel oferece: # make menuconfig

Esse comando acima vai chamar a interface para a compilao com menus e opes para compilar. Ou seja, vai ser a que vo escolher as opes lembre que, na dvida de no saber para que serve uma determinada opo, deixe o padro. O contedo gerado por ele guardado em um arquivo oculto chamado config. Voc pode aproveitar o .config do kernel anterior e copiar para o diretrio do kernel novo e executar o make menuconfig fazendo as alteraes necessrias. Para ter boas orientaes nessa etapa baixe a vdeo-aula do kernel no Netclass. Depois que escolher as opes do que vai manter ou no. O prximo comando : # cat .config | more

Compilao do Kernel - 8 Onde esse comando vai permitir visualizar o arquivo de configurao gerado pelo comando make menuconfig que foi digitado anteriormente. Apenas curiosidade! A, o prximo comando que vamos usar : # make clean

Esse comando serve para limpar a casa. Ele remove os restos das compilaes anteriores e mdulos desnecessrios. No kernel 2.4 era necessrio esse passo: # make dep

Esse comando vai gerar as dependncias do novo kernel, ou seja, vai checar o que ele vai precisar para compilar e gerar a nova imagem do kernel. Copie o .config gerado para esta verso de kernel para o /boot: cp /usr/src/linux/.config /boot/config-2.6.38.3

Digite o comando abaixo para compilar o kernel: # make bzImage (ou somente make, no kernel 2.6 basta)

Esse comando gera a imagem do kernel. # make modules

Onde esse comando vai compilar os mdulos que vo ser usados pelo novo kernel. Pode demorar at mais que o passo anterior se voc tiver escolhido muitos mdulos.

Compilao do Kernel - 9 Ento, depois desse comando , o prximo comando que ira executar : # make modules_install

Esse comando para copiar os mdulos compilados para seus respectivos diretrios em /lib/modules. Depois desses passos, o kernel est compilado, e vai ser gerado um arquivo da imagem (o bzImage) no diretrio /usr/src/linux-2.6.38.3/arch/i386/boot/. Ento, necessrio copiar essa imagem para dentro do /boot para que possa escolher qual kernel ser inicializado. Vamos cham-la de kernel-2.6.38.3. # cp /usr/src/linux-2.6.38.3/arch/i386/boot/bzImage /boot/vmlinuz-2.6.38.3

Feitos os passos de compilao, voc deve agora associar o arquivo de initrd (que para inicializar os mdulos) para o novo kernel. Esse arquivo necessrio porque ele vai ser inicializado pelo gerenciador de boot na memria antes do kernel iniciar. Para isso, preciso que instalar o pacote initramfs-tools. # aptitude install initramfs-tools

E a, s construir o arquivo com o comando abaixo: # mkinitramfs -o /boot/initrd-2.6.38.3 /lib/modules/2.6.38.3

Onde: O -o para indicar o arquivo de sada e o /lib/modules/2.6.38.3 indica o kernel que foi compilado.

Compilao do Kernel - 10 Com isso, j esta quase na reta final para testar o kernel. Ento, adicione a nossa nova imagem no GRUB, que o gerenciador de boot sem mexer na configurao atual. Pois assim, se der alguma pane ser possvel voltar o kernel anterior para testar tudo de novo.

Compilao do Kernel - 11

1.3. GRUB 2
Descubra qual o UUID da sua partio que est /boot: # blkid /dev/sda1: TYPE="ext4" UUID="6ba27eb3-c4ac-48b5-ade8-1ab06f1a1c93"

# vim /etc/grub.d/40_custom

Acrescentar no arquivo:

menuentry Debian Kernel Novo { insmod ext2 set root=(hd0,1) # Partio que contm a imagem do kernel e initrd linux /boot/vmlinuz-2.6.38.3 root=UUID=6ba27eb3-c4ac-48b5-ade81ab06f1a1c93 initrd /boot/initrd.img-2.6.38.3 }

# chmod +x /etc/grub.d/40_custom # update-grub

Outra opo mais simples:

# update-grub2

Reinicie a mquina.

Compilao do Kernel - 12

Veja se aparece a verso do kernel que voc acabou de compilar:


# uname -r 2.6.38.3