Compilando o kernel no Ubuntu -- Parte 1

June 13th, 2008 | by Gustavo Lichti |


Na maioria da vezes a compilação de um novo kernel, não é necessária, Um mistério para quem esta entrando no mundo linux é a (re)compilação do kernel, muitas vezes este ato de compilar um kernel é mais uma realização pessoal do que uma necessidade, nas distribuições baseadas no debian, sempre há duas formas e se fazer a compilação, uma delas é da forma tradicional, fazendo tudo na mão, e a outra é gerando um package(.deb) e instalar o novo kernel.

A forma que irei demostrar neste post é a forma tradicional, deixarei para um proximo post a segunda forma de se fazer a compilação.

Ates de começar é necessário instalar alguns pacotes.

apt-get install libncurses-dev

O Primeiro passo é fazer o download do código fonte e descompactar em /usr/src

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.6.tar.bz2
sudo tar -xjvf linux-2.6.25.6.tar.bz2 -C /usr/src/

O segundo passo é entrar dentro do diretório /usr/src e criar um link do diretório que contém o código fonte da versão que acabamos de descompactar para um diretório linux.

cd /usr/src/
sudo ln -s linux-2.6.25.6/ linux

Agora temos que entrar no diretório /usr/src/linux, editar o arquivo Makefile e alterar a variavel extraversion.

cd /usr/src/linux
sudo nano Makefile

Caso seja a primeira vez que esta compilando este código fonte que acabamos de baixar este passo não é necessário, mas se executado, não trará problemas, este comando só limpa a sujeira de compilações anteriores

sudo make mrproper

Quando vamos compilar um kernel, temos que ter um ponto de partida, este ponto, é um arquivo de configuração, temos duas opções, uma delas é um arquivo de configuração padrão, que exige de quem esta compilando o kernel um bom conhecimento do sistema e do hardware, a segunda opção, é o arquivo de configuração do kernel que estamos utilizando no momento, essa é a melhor opção para a gente neste momento.

sudo cp /boot/`uname -r` /usr/src/linux/.config

Agora é a hora que iremos carregar o arquivo de configuração e se necessario, fazer alterações. No nosso caso, só iremos carregar o arquivo sem fazer alterações.

sudo make menuconfig

Feito isso, va até a penultima opção 'Load an Alternate Configuration File' e carrege o arquivo .config enseguida saia ('exit') salvando.

Agora vamos ao passo mais importante, a compilação, este passo pode demorar de varios minutos a varias horas, depende sempre do hardware da maquina.

sudo make
sudo make modules_install

Agora só falta copiar o kernel e os seus arquivos de configuração para o diretório /boot

sudo cp .config /boot/config-2.6.25.6-lichti
sudp cp System.map /boot/System.map-2.6.25.6-lichti
sudo cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.25.6-lichti

Agora temos que criar o initrd, o responsável por carregar nossos módulos na inicialização do sistema. Aqui tem uma curiosidade, no debian ainda usamos o utilitario mkinitrd, no ubuntu esse utilitario não é mais utilizado por estar defasado, o utilitario usado agora é o mkinitramfs

mkinitramfs -o /boot/initrd.img-2.6.25.6-lichti 2.6.25.6-lichti

Agora só falta editar o arquivo menu.lst do grub e adicionar algumas linhas ao final dele

sudo nano /boot/grub/menu.lst

Agora adicione essas linhas ao final

title        Ubuntu 8.04, kernel 2.6.25.6-lichti
root        (hd0,1)
kernel        /boot/vmlinuz-2.6.25.6-lichti root=UUID=46f5f474-a4b6-48c7-ba4c-1f7ad207361e ro quiet splash locale=pt_PT
initrd        /boot/initrd.img-2.6.25.6-lichti
quiet

title        Ubuntu 8.04, kernel 2.6.25.6-lichti (recovery mode)
root        (hd0,1)
kernel        /boot/vmlinuz-2.6.25.6-lichti root=UUID=46f5f474-a4b6-48c7-ba4c-1f7ad207361e ro single
initrd        /boot/initrd.img-2.6.25.6-lichti

Pronto, agora é só reiniciar, e lá no gerenciador de boot, selecionar o seu novo kernel.

Tags: , , , ,

Post a Comment