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.
Deixe seu comentário