Compilando Kernel 2.6.32.21

De Fórum Debian Wiki


Índice de conteúdo

Introdução

Cada nova versão do Kernel oferece suporte a mais drivers, possui maior estabilidade e contém mais funções personalizáveis. A atualização para uma versão mais recente, portanto, é recomendável nos casos em que se precisa de suporte a hardwares mais recentes e/ou quando se busca maior estabilidade no sistema. Esse artigo tem como objetivo ensinar a compilar o Kernel 2.6.32.21 no Debian Lenny, mas os procedimentos podem ser utilizados, de maneira geral, para a compilação de outras versões também.


Dependências

Resolva as dependências gerais para compilação:

# aptitude install kernel-package bzip2 module-init-tools initramfs-tools procps fakeroot zlib1g-dev


Além disso, para editar os parâmetros de configuração para compilação é preciso usar menuconfig, gconf ou xconfig.


Para utilizar o menuconfig, é preciso baixar o pacote:

# aptitude install libncurses5-dev

Para utilizar gconfig:

# aptitude install libgtk2.0-dev libglib2.0-dev libglade2-dev

E para utilizar xconfig (recomendável):

# aptitude install libqt3-mt-dev


Download do Kernel 2.6.32.21

Acesse o diretório /usr/src:

$ cd /usr/src

Baixe o kernel 2.6.32.21:

# wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.21.tar.bz2

Descompacte e crie um link simbólico para a pasta /usr/src/linux

# tar xvjf linux-2.6.32.21.tar.bz2 -C /usr/src
# ln -sf linux-2.6.32.21 linux


Aquisição de um arquivo .config

Um arquivo .config contém configurações pré-estabelecidas para a compilação do Kernel. Se você quiser manter o .config utilizado atualmente pelo seu sistema, execute o comando abaixo.

# cp /boot/config-2[pressione TAB] /usr/src/linux/.config


O site Debian Official Kernel Configurations oferece arquivos .config específicos para cada versão disponível do Kernel, personalizados para as diferentes arquiteturas. Caso você não queira manter seu .config atual, é possível fazer download de um novo, com configurações mais específicas para essa nova versão e para sua arquitetura de hardware. Para efeito de exemplo, nesse artigo será utilizado um arquivo .config para a arquitetura i686. Altere o link de download caso seu computador não seja um i686.

# wget -c http://merkel.debian.org/~jurij/2.6.32-21/i386/config-2.6.32-5-686.gz

Descompacte o arquivo, renomeie-o para .config e mova-o para a pasta /usr/src/linux

# gunzip config-2.6.32-5-686.gz
# mv config-2.6.32-5-686 /usr/src/linux/.config


Preparação para compilação

Entre no diretório /usr/src/linux

# cd /usr/src/linux

Limpe as construções de compilações anteriores do Kernel:

# make-kpkg clean

E abra uma ferramenta de configuração e seleção dos módulos a serem compilados. Nesse artigo, utilizaremos o xconfig:

# make xconfig


Dicas sobre configuração e seleção dos módulos

Para a maioria dos módulos, existem três valores que você pode colocar: Y/M/N (no modo gráfico do xconfig, respectivamente será um check, uma bolinha ou um espaço vazio). Os módulos especificados como Y serão carregados junto com o kernel. Os que forem especificados como M, não serão carregados automaticamente com o kernel, mas poderão ser carregados manualmente pelo usuário (usando modprobe, por exemplo). Já os módulos como N, não serão compilados e, por isso, não serão carregados com o kernel e também não poderão ser carregados pelo usuário.

Uma dica aqui pra ver quais módulos seu sistema precisa é verificar quais módulos estão atualmente carregados, usando o comando lsmod num terminal. Procure esses módulos com a ferramenta de busca do xconfig e verifique se todos estão especificados ao menos como M (bolinha). De maneira geral, vá fuçando, lendo o help e usando o google. Não precisa ter medo de fazer besteira, o máximo que vai acontecer é ter que compilar de novo, com outra configuração.

Recomendo que se especifique um nome para a imagem que você está compilando, para ficar mais organizado. Coloque a data de compilação ou alguma palavra para você saber do que se trata. Para isso, vá em General setup >> Local version e preencha com a data ou qualquer outra coisa.

Se você quiser um Boot Colorido e/ou a imagem de um pinguim (exemplo de boot colorido), é preciso habilitar algumas coisas. Vá em Device Drivers >> Graphics support >> Support for frame buffer devices e habilite VGA 16-color graphics support como M (bolinha) e VESA VGA graphics support como Y (check). Em seguida, vá em Device Drivers >> Graphics support >> Bootup logo e habilite as três opções.

Feitas todas configurações e seleções de módulos, salve seu trabalho e feche o xconfig.


Evitando erro com lguest

Em teoria, está tudo pronto pra compilar, mas se você tentar compilar agora, muito provavelmente vai receber o seguinte erro:

lguest.c:21:25: error: sys/eventfd.h: No such file or directory
lguest.c: In function ‘create_thread’:
lguest.c:1027: warning: implicit declaration of function ‘eventfd’
make[1]: *** [lguest] Error 1


Para que isso não aconteça (ou para corrigir o erro, caso você já tenha tentado compilar), edite o arquivo:

# gedit /usr/src/linux/Documentation/lguest/Makefile


Altere a entrada all: lguest para apenas all: (ou seja, remova a palavra lguest dessa linha).


Compilação

Dentro da pasta /usr/src/linux execute o comando abaixo para gerar a imagem com o novo Kernel em um pacote .deb. O procedimento irá demorar alguns minutos.

# make-kpkg --initrd kernel_image


Opcionalmente, é possível gerar outros pacotes .deb, bastando acrescentar outros parâmetros ao comando acima:

  • kernel_headers gera pacote contendo os headers do kernel
  • kernel_manual gera pacote contendo o manual e a documentação
  • kernel_doc gera pacote contendo apenas a documentação


obs: para mais opções, verifique o manual do make-kpkg


Instalação

A imagem gerada estará na pasta /usr/src e terá a extensão .deb. Sendo assim, para instalar o novo Kernel, basta utilizar o dpkg como se você estivesse instalando um pacote qualquer:

# cd /usr/src
# dpkg -i linux-image-2.6.32.21_2.6.32.21-10.00.Custom_i386.deb

obs: a imagem gerada poderá ter um nome levemente diferente, dependendo do que você especificou em General setup >> Local version.


Se futuramente você quiser desinstalar esse Kernel, remova-o utilizando o dpkg, como se fosse um pacote qualquer:

# aptitude purge linux-image-2.6.32.21_2.6.32.21-10.00.Custom_i386


Configuração do gerenciador de boot

Se você usa lilo, adicione a entrada para o novo kernel manualmente. Se você usa grub, não precisa fazer absolutamente nada, na próxima vez que você ligar o computador vai haver uma nova entrada para o Kernel que você acabou de instalar. Caso você tenha habilitado a opção Boot logo, pro pinguim aparecer é preciso especificar um modo vga nos parâmetros de inicialização do Kernel, em seu boot loader. Veja maiores detalhes aqui.

Ferramentas pessoais