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:
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.
