Criar kernel personalizado no Ubuntu

Existem várias razões para criar um kernel personalizado: suporte a um dado hardware, uma necessidade específica de kernel para rodar um script especial de firewall, etc.

Normalmente é um procedimento demorado, embora fácil, desde que alguns passos sejam executados na ordem correta.

Eu sugiro alterar (habilitar) a senha do root para que os comando ganhem um pouquinho de simplicidade:

sudo passwd root

Altere e confirme a senha do root e efetue logon como tal.

O próximo passo consiste em atualizar a base de dados de pacotes instaláveis, usando o sistema apt

apt-get update

Logo em seguida devem ser instalados os pacotes que darão suporte à construção do novo kernel:

apt-get install kernel-package libncurses5-dev fakeroot wget bzip2

Agora é o momento em que você deve definir qual versão do kernel deseja usar. Alguns administradores usam a versão mais nova. Outros usam a mais estável. Outros ainda usam uma específica para suas necessidades. Avalie seu cenário e escolhe a versão adequada.

Considero a utilização do kernel mais recente, que pode ser encontrado em http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.tar.bz2

Faça o seguinte para baixar o kernel no local correto do disco:

cd /usr/src

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.5.tar.bz2

O download pode demorar, pois o arquivo compactado com o kernel possui 43MB… Após o download, descompacte o arquivo e crie um link simbólico para facilitar a compilação:

tar xjvf linux-2.6.22.tar.bz2

ln -s linux-2.6.22 linux

cd /usr/src/linux

Caso seja necessário, você pode aplicar um patch ao ser kernel. Neste cenário, um patch pode ser considerado como um “ajuste de código” a fim de rodar melhor um dado item de software. Se não for o seu caso, ignore o próximo passo.

bzip2 -dc /usr/src/patch.bz2 | patch -p1

O comando acima considera um arquivo com o patch chamado “patch.bz2″, o qual será descompactado com o comando bzip2 -dc e então inserido ao código-fonte do kernel. Se funcionará ou não, depende mais do código do patch do que de você mesmo.

Agora você tem a seguinte situação: kernel atualizado, descompactado e com os “ajustes de código” corretos. Mesmo assim, vale a pena configurar o kernel para deixá-lo o mais ajustado possível à sua máquina. o que, certamente, a deixará mais rápida.

Vale a pena tentar usar a configuração atual do kernel como base para os ajustes do kernel personalizado. Faça o seguinte:

cp /boot/config-`uname -r` ./.config

Podemos agora executar o comando que abrirá a interface em modo texto de configuração do kernel. Entendeu agora porque você instalou a libncurses5-dev?

make menuconfig

Voceê verá uma tela semelhante à mostrada abaixo:

Configuração do kernel - Imagem 1

Você deve carregar a configuração salve um pouco acima nesta página.

Faça todos os ajustes necessários e salve o arquivo de configuração.

Se você tem algum compromisso ou está morrendo de sono, inicie a montagem do novo kernel e vá ao compromisso ou durma. O processo pode demorar horas, dependendo do hardware.

make kpkg-clean

fakeroot make-kpkg –initrd –append_to_version=-custom kernel_image kernel_headers

Tempos depois, se nada deu errado, vamos instalar o novo kernel!

cd /usr/src

ls -l

Você deve encontrar dois arquivos: linux-image-2.6.22-custom_2.6.22-custom-10.00.Custom_i386.deb e linux-headers-2.6.22-custom_2.6.22-custom-10.00.Custom_i386.deb. Temos que instalar os dois. O primeiro contém o kernel em si e o outro contém os cabeçalhos usados nos processos de compilação de software.

dpkg -i linux-image-2.6.22-custom_2.6.22-custom-10.00.Custom_i386.deb

dpkg -i linux-headers-2.6.22-custom_2.6.22-custom-10.00.Custom_i386.deb

Feito. Basta ajustar seu gerenciador de boot. No caso do Ubuntu, a nova entrada no arquivo /boot/grub/menu.lst deve ser algo como:

title           Ubuntu, kernel 2.6.22-custom
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.22-custom root=/dev/sda1 ro quiet splash
initrd          /boot/initrd.img-2.6.22-custom
savedefault
boot 

O grub deve ser atualizado com o comando

update-grub

Reinicie seu computador e aproveite o novo kernel.