Compilando o kernel no Debian

Depois de gerada a configuração, fica faltando o mais importante, que é a compilação e instalação do novo kernel. O Debian oferece uma ferramenta chamada kernel-package que facilita bastante o processo, executando a maioria dos passos automaticamente.

Ele cuida de todo o processo de compilação e no final gera um arquivo .deb com o novo kernel, que pode ser rapidamente instalado usando o comando “dpkg -i” e, inclusive, instalado em outros micros.

Para gerar o pacote, acesse a pasta com o código-fonte e, depois de gerar a configuração usando o “make xconfig”, use os comandos:

# make-kpkg clean
# make-kpkg --revision=meu.0.1 kernel_image

O “meu.0.1” indica o número de versão que será atribuído ao pacote. A numeração permite que você gere vários pacotes a partir do mesmo código-fonte (com configurações diferentes), atribuindo versões para cada um (0.1, 0.2, etc.).

Mesmo em uma máquina atual, é normal que a compilação demore 30 minutos ou mais, de acordo com o número de componentes e módulos a gerar. No final do processo será gerado um arquivo “kernel-image” dentro da pasta “/usr/src” com o novo kernel, como em “/usr/src/linux-image-2.6.26_custom.0.1_i386.deb”.

Este pacote contém a imagem completa, incluindo o arquivo vmlinuz que vai na pasta “/boot”, módulos e um script de instalação (executado ao instalar o pacote) que automatiza a instalação.

Você pode instalar o pacote gerado rodando o dpkg -i, como em:

# dpkg -i /usr/src/linux-image-2.6.26_custom.0.1_i386.deb

Ele exibirá as mensagens de praxe, avisando sobre a execução do depmod, do script de pós-instalação e da atualização do menu de grub, com a adição do novo kernel:

Configurando linux-image-2.6.26 (meu.0.1) ...
Running depmod.
Examining /etc/kernel/postinst.d.
Running postinst hook script update-grub.

Se você estiver tentando instalar um kernel de mesma versão que o já instalado, o script de pós-instalação exibe uma mensagem confirmando a atualização, o que é uma precaução de segurança devido à pasta com os módulos, que passará a ser compartilhada entre os dois. A pegadinha é que, quando o instalador pergunta “Stop install since the kernel-image is already installed?”, o “Sim” fica marcado por default, fazendo com que a instalação seja abortada caso você simplesmente pressione Enter sem ler.

Outra dica é que o make-kpkg não gera o arquivo initrd automaticamente. Caso queira usá-lo, é necessário instalar o initramfs-tools, gerar o arquivo e em seguida atualizar o grub, usando os comandos que vimos no tópico anterior:

# apt-get install initramfs-tools
# mkinitramfs -o /boot/initrd.img-2.6.26 2.6.26
# update-grub

No final do processo, abra o arquivo “/boot/grub/menu.lst” e veja se a linha com o arquivo foi incluída corretamente na entrada referente ao kernel. Caso necessário, você pode corrigí-la manualmente.

Se você quer que sejam gerados também pacotes com o fonte e os headers do kernel, use o comando:

 # make-kpkg --revision=meu.0.1 kernel_image kernel_source kernel_headers

Neste caso, serão gerados três pacotes no total, contendo o “kit completo” do kernel, incluindo os headers e também o código-fonte completo. Como comentei em outros tópicos, os headers são necessários para instalar drivers e módulos adicionais, por isso são sempre importantes. Ele é especialmente importante se você pretende distribuir o kernel ou instalá-lo em várias máquinas.

O pacote com o fonte permite que outras pessoas recompilem o seu kernel, aplicando patches adicionais ou alterando a configuração.

Em alguns casos, a compilação pode ser abortada em algum ponto, com o compilador exibindo um erro como:

drivers/message/fusion/mptsas.c: In function mptsas_setup_wide_ports:
drivers/message/fusion/mptsas.c:391: internal compiler error: Falha de segmentação
Please submit a full bug report, with preprocessed source if appropriate.

Na grande maioria dos casos, esses erros são causados por bugs ou problemas diversos dentro de módulos experimentais. A maneira mais simples de lidar com eles é executar novamente o “make xconfig” e usar a função de busca para localizar o módulo problemático, para então desativá-lo:

Depois de salvar a configuração, basta executar novamente o make-kpkg para que ele conclua a compilação. Nesse caso, você ganha tempo deixando de executar o “make-kpkg clean”, já que ele pode aproveitar os módulos que já foram gerados na tentativa anterior, em vez de precisar recomeçar do início.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X