8.6. Compilando um Novo Kernel

Porque é que alguém irá querer compilar um novo kernel? Na grande maioria das vezes não é necessário uma vez que o kernel que vem por omissão com Debian funciona com a maioria das configurações. Além disso, normalmente Debian oferece vários kernels alternativos. Por isso poderá querer verificar se existe um pacote com uma imagem de kernel alternativa que melhor corresponda ao seu hardware. No entanto, poderá ser útil compilar um novo kernel, para:

8.6.1. Gestão das Imagens dos Kernel

Não tenha medo de tentar compilar o kernel. É divertido e lucrativo.

Para compilar um kernel à maneira Debian, necessita de alguns pacotes: fakeroot, kernel-package, kernel-source-2.6 e mais alguns que provavelmente já estarão instalados (veja /usr/share/doc/kernel-package/README.gz para a lista completa).

Este método irá fazer um .deb da fonte do seu kernel, e, se tiver módulos não-standard, fazer igualmente um .deb dependente sincronizado. É a melhor maneira de gerir as imagens dos kernel; /boot irá guardar o kernel, o System.map e um log do ficheiro de configuração activo para a build.

Note que você não tem de compilar o seu kernel à maneira Debian; mas nós achamos que usar o sistema de pacotes para gerir o seu kernel é na verdade mais seguro e fácil. De facto, pode obter a fonte do kernel directamente do Linus, em vez de linux-source-2.6, ainda assim utilize o método de compilação kernel-package.

Note que irá encontrar documentação completa utilizando kernel-package sob /usr/share/doc/kernel-package. Esta secção apenas contém um breve tutorial.

A partir daqui, iremos assumir que tem as rédeas da sua máquina, e irá extrair o seu código-fonte do kernel para algum local dentro do seu directório home[18]. Iremos também assumir que a sua versão do kernel é 3.16. Assegure-se que está no directório para onde deseja descompactar as fontes do kernel, extraia-as com tar xf /usr/src/linux-source-3.16.tar.xz e mude-se para o directório kernel-source-3.16 que terá sido criado.

Agora, pode configurar o seu kernel. Corra make xconfig se o seu X11 está instalado, configurado e a correr; corra make menuconfig caso contrário (irá necessitar da libncurses5-dev instalada). Dispense tempo para ler a ajuda online e escolher cuidadosamente as opções. Quando em dúvida, a melhor opção será incluir o gestor de periféricos (o software responsável por gerir os periféricos de hardware, tais como placas de rede - Ethernet -, controladores SCSI e mais) sobre o que está em dúvida. Tenha cuidado: outras opções, não relacionadas com hardware específico, devem ser deixadas com os valores pré-definidos se não compreender o que significam. Não se esqueça de seleccionar o Kernel module loader em Loadable module support (não está seleccionado de origem). Se não for incluído, a sua instalação Debian poderá vir a ter problemas.

Limpe a árvore da origem (source tree) e faça reset aos parâmetros do kernel-package . Para fazer isso, faça make-kpkg clean.

Agora, compile o kernel: fakeroot make-kpkg --initrd --revision=1.0.custom kernel_image. O número da versão 1.0 pode ser alterado à vontade; isto é apenas um número de versão que irá usar para manter o registo das suas compilações. Da mesma forma, pode colocar qualquer palavra que deseje no lugar de custom (e.g., um host name). A compilação do kernel poderá demorar um pouco, dependendo da capacidade da sua máquina.

Quando a compilação estiver completa, poderá instalar o seu kernel personalizado como qualquer outro pacote. Como root, faça dpkg -i ../linux-image-3.16-subarchitecture_1.0.custom_armhf.deb. A parte subarchitecture é uma sub-arquitectura opcional, dependendo das opções com que configurou o kernel. dpkg -i irá instalar o kernel, juntamente com alguns outros ficheiros de suporte. Por exemplo, o System.map irá ser correctamente instalado (ajuda a fazer debug de problemas no kernel), e /boot/config-3.16 irá ser instalado, contendo a sua configuração actual. O seu novo pacote de kernel é também suficiente esperto para actualizar automaticamente o seu gestor de arranque para utilizar o novo kernel. Se criou um pacote de módulos, necessita instalar também esse pacote.

É altura de re-iniciar o sistema; leia cuidadosamente qualquer aviso que o passo acima possa ter produzido, e de seguida faça shutdown -r now.

Para mais informação acerca de kernels Debian e a compilação do kernel, veja a Debian Linux Kernel Handbook. Para mais informação acerca de kernel-package, leia a boa documentação em /usr/share/doc/kernel-package.



[18] Existem outras localizações para onde pode extrair o código-fonte dos kernel e construir o seu kernel personalizado, mas esta é a mais simples, uma vez que não requer permissões especiais.