Thursday, April 06, 2006

Compilando um kernel novo na unha

Depois de pesquisar e ler algumas documentações sobre o Kernel, juntei as informações e coloquei nesse tutorial. Esse processo serve também para recompilar, e foi testado em um sistema Debian Etch.

Primeiramente devemos baixar o kernel mais atual em http://www.kernel.org , depois de baixá-lo é só descompactar no diretório /usr/src . Caso você tenha baixado o .bz2 utilize o comando abaixo para descompactar:
#tar -jxvf linux-2.x.xx.bz2

Caso tenha baixado o .tar.gz use:
#tar -zxvf linux-2.x.xx.bz2

Depois do diretório criado em /usr/src vamos criar um link simbólico para o novo kernel:
#ln -s /usr/src/linux-2.x.xx/ /usr/src/linux

Agora vamos abrir um menu de configuração do kernel (e então escolher o que deverá existir nele) em modo texto, que na minha opnião é o melhor modo, você precisará do pacote 'libncurses5-dev' e utilizar comando:
#make menuconfig

Para limpar alguns objetos criados, use o comando:
#make clean

Agora iremos criar a imagem do kernel propriamente dita:
#make bzImage

Caso você tenha mandado o kernel utilizar-se de módulos para algumas funcionalidades, temos que compilá-los também.
#make modules

Depois de compilados, ele precisam ser instalados, esse comando instala os módulos em /lib/modules/ :
#make modules_install

Vamos copiar a nova imagem do kernel para o diretório /boot
#cp arch/i386/boot/bzImage /boot/bzImage-

Copiar o System.map para o mesmo diretório, esse arquivo é importante, pois contém os nomes dos símbolos e os endereços dos binários do kernel do linux, depois disso criar um link simbólico do System.map novo em /boot :
#cp System.map /boot/System.map-
#ln -s /boot/System.map-KERNEL_VERSION /boot/System.map

Para gerar a imagem do Initial RamDisk, é nela que contém alguns módulos que têm de ser carregados, para montar a partição do root, caso ela seja 'reiserfs' por exemplo. Você deverá incluir o módulo 'reiserfs' no arquivo '/etc/mkinitrd/modules' e criar a imagem. O motivo disso é que quando o kernel vai montar a partição root, ele tenta carregar o módulo 'reiserfs' neste exemplo, mas esse módulo está na partição root, ou seja, o kernel não tem como montar essa partição, pois não consegue acessar o driver para a mesma.

#mkinitrd -o /root/initrd.img 2.6.16-dutche

0 Comments:

Post a Comment

<< Home