GNU/Linux - Compilar kernel 2.6


O Linux é um kernel de sistema operativo compatível com Unix, criado por Linus Torvalds em 1991 e subseqüentemente desenvolvido com a ajuda de programadores de todo o mundo.

É no kernel em que ficam os drivers das controladores de disco, interfaces de rede, etc.

Vamos dar um exemplo através de uma situação muito comum. Você possui um kernel instalado/compilado em seu PC e necessita instalar o driver de vídeo oficial da NVidia, porém o mesmo retorna uma mensagem de erro falando que você possui o nvidia framebuffer habilitado, Será preciso recompilar o kernel para desabilitar este suporte!

Ou mesmo você precisa utilizar o usb storage mas seu kernel não tem suporte, etc. São inúmeros casos.

Para a recompilação do kernel você precisa ter no mínimo o make e o gcc instalados em sua máquina. Recomendo também o ncurses, pois sem ele é impossível a utilização do utilitário console-based para configuração do núcleo do Linux.

É possível encontrar a última versão em http://www.kernel.org, que possui em média 40 MB no formato .tar.bz2.

Para fins ilustrativos usarei a última versão estável disponível na data em que este artigo foi escrito linux-2.6.19.2.tar.bz2.

Descompacte na pasta /usr/src:

# tar xvjf linux-2.6.19.2.tar.bz2 -C /usr/src/

Crieremos agora o link simbólico para referenciar /usr/src/linux a pasta que foi descompactada, pois alguns aplicativos a usam como padrão:

# cd /usr/src
# ln -s linux-2.6.19.2 linux

Vamos agora para a configuração do kernel, esta é a pior parte, mais chata e mais demorada. Toda a atenção agora!

Antes de continuar vamos a uma consideração importante. Você podera optar quase sempre por (M) ou (*) na configuração. M significa que o suporta a tal item será compilado como módulo, ou seja, você precisará carregá-lo individualmente para usá-lo. (*) Significa que será compilado built-in, será compilado junto com a imagem do kernel gerada.

Vamos lá:

# cd /usr/src/linux
# make menuconfig

Eu só irei referenciar as partes mais importantes, tenha atenção a toda opção, caso tenha dúvida não modifique e verifique em “Help” sobre o mesmo!

Na parte Loadable module support selecione todos os items.

Selecione seu processador em Processor type and features, na parte de Subarchitecture Type.

Na área de Device Drivers você encontrará os drivers para todos os seus dispositivos.

Se você possui um disco IDE (hd*) selecione o chipset da tua placa mãe em ATA/ATAPI/MFM/RLL support.

Se você possui um disco SATA (sd*),selecione o chipset da placa mãe em Serial ATA (prod) and Parallel ATA (experimental) drivers (para kernel anterior ao 2.6.19 os drivers SATA ficam em SCSI support >> SCSI low-level drivers).

Caso não saiba esse tipo de informação de teu hardware você encontrar através dos comandos “lspci” e “lshw”.

Em Network device support selecione PPP e Point-to-point over Ethernet dentro de PPP caso você use ADSL. Na mesma sessão marque como (*) a sua placa de rede em Ethernet (10 or 100Mbit) ou Ethernet 1000Mbit…

Input device support maque “Provide legacy /dev/psaux..” e seu tipo de mouse em Mouse.

Graphics support selecione como (*) o suporte para frame buffer devices e VESA VGA graphics support. Se você possui nvidia não marque a opção que encontra nesta área.

Em Sound selecione como (*) o suporte a placa de som e modulo o ALSA (Advanced Linux Sound Architecture), subseqüentemente sua placa de som, provavelmente em PCI Devices.

O próximo cuidado a se tomar é selecionar o sistemas de arquivos que você usa como buil-in (*) em File systems que você encontra na tela pricipal da configuração. Se você não sabe qual é, selecione ext3 e reiserfs por precaução.

Reveja todas as configurações! Lembre-se, previnir é melhor que remediar!

Após isso vá em sair (Exit) e salve.

Agora com tudo configurado (ou assim espero) vamos compilá-lo. Este processo pode demorar muito dependendo da quantidade de items que você selecionou e da sua máquina, por isso não irei dar meu palpite de tempo:

# make clean
# make
# make modules_install

Depois de tudo compilado só precisamos copiar a imagem criada e configurar o boot manager.

Se você usa amd64 troque i386 por x86_64:

# cp /usr/src/linux/arch/i386/boot/bzImage /boot/kernel-2.6.19.2

Não tire a entrada no boot manager do kernel antigo para o caso de falha do atual.

Se você usa o LILO adicione as linhas (atento para a linha “root=”:

image=/boot/kernel-2.6.19.2
root=/dev/hda1
label=LinuxNOVO
read-only

Se você usa GRUB use as linhas (hd0,0 se referencia ao primeiro HD partição 1, hd1,1 ao segundo HD e segunda partição, etc):

title Linux2.6.19.2
root (hd0,0)
kernel /boot/kernel-2.6.19.2 root=/dev/sda1

Feito isso é reiniciar o computador e “cruzar os dedos”!

Autor/fonte: Linuxar.com.br