segunda-feira, 15 de dezembro de 2008

Como compilar o Kernel versão 2.6

Segundo Carlos Morimoto, o kernel é o coração do sistema, pois é o kernel que faz a comunicação entre o hardware e o software. Os módulos são como drivers para os dispositivos, ele sobem junto com o sistema quando o mesmo está sendo inicializado. Kernel tem uma pasta com 50MB de módulos, isso pode chegar em torno a 1000 módulos, mas apenas entre 15 a 25 que ficam ativos.

A grande vantagem de possuir módulos é ter a liberdade para ativá-los e desativá-los a hora que for pertinente. Mesmo com toda essas vantagens vocês devem estar indagando:

"Mas porque eu devo compilar o kernel?", essa resposta é bem simples:

1. Personalizar o kernel de acordo com suas necessidades;

2. Atualização de kernel nos apresenta módulos novos. Ex.: Uma versão antiga que não tem suporte wireless, podemos encontrar em uma versão mais nova.

Muitos tem medo de compilar o kernel, eu mesmo tive durante algum tempo e pesquisei muito antes da minha primeira compilação na distro Debian Linux, achei muita coisa, porém "muita" dessas coisas não foram testadas, isso me fez perder tempo e uma contagem enorme de "kernel panic", mas vou passar para vocês um recorte de todas as coisas que encontrei que realmente deu certo.

Essa compilação é para todas as distros que usam a versão 2.6, não quis me prender a um estilo de compilação de uma distro, pois temos que conhecer Linux e não somente uma distro, a questão de distro vem por gosto.

Antes de começar o compilação do kernel vou pedir para todos estarem cientes dos hardwares da máquina que será compilada. Para ter certeza basta realizar os seguintes comandos:

$ lspci
$ cat /proc/pci
(com esse comando você estará ciente com o hardware em geral)
$ cat /proc/cpuinfo (comando para ver a arquitetura do processador)

$ cat /proc/meminfo
ou
$ free -m (para ver sua RAM)

Depois dessa pequena consulta vamos para a parte que realmente interessa:

Passo 1:

Primeiramente vocês terão que baixar o código-fonte do kernel desejado, pelo meu breve conhecimento o mais estável do momento é o 2.6.24, pois alguns amigos me disseram que o 2.6.27 estava dando pau nas placas de rede.

Para baixar entre no seguinte site:

http://www.kernel.org/pub/linux/kernel/v2.6/

ou você pode usar o comando "wget" no terminal, mas isso é pra pessoas com um pouco mais de experiência.

Passo 2:

Depois da conclusão do download vocês terão que descompactar o arquivo tar do código-fonte. Mas lembre-se que isso terá que ser feito em root.

$ sudo su
# tar xjvf linux-2,6,24.tar.bz2 /usr/src


Obs.: O arquivo tem que ser compacto na pasta da arquitetura do kernel antigo: /usr/src

Passo 3:

É necessário criar um link para o novo kernel:

# ls -sf /usr/src/linux-2,6,24 /usr/src/linux

Com esse comando você criará uma nova pasta chamada "linux".

Obs.: Caso você já tenha essa pasta, terá que deletar ela:

# rmdir /usr/src/linux

E repita o passo anterior.

No término entre na pasta:

# cd /usr/src/linux

Passo 4:

Para personalizar seu kernel, entre no arquivo Makefile e altere o Extra Version:

Version=2
PATCHLEVEL=6
SUBLEVEL=24
EXTRAVERSION= -i386-1

Salve o arquivo.

Passo 5:

Nesse passo vamos baixar alguns arquivos para que a compilação seja realizada com sucesso.

No terminal digite:

* comandos para Debian, para outras distro pesquise como baixar esses arquivos.

# aptitude install initrd-tools
# aptitude install linux-initrd-tool


Esses pacotes serão de suma importância para configurar a imagem no GRUB.

Baixe os pacotes abaixo para trabalhar o config em modo gráfico, pois em texto será um tédio.

Caso você queira se aventurar no texto basta executar o:

# make config

ou baixe as bibliotecas para modo gráfico:

Para menuconfig:

# apt-get install libncurses5-dev

# make menuconfig

Para xconfig:

# apt-get install libqt3-mt-dev

# make xconfig

Obs.: No Debian as dependências serão instaladas automaticamente.

Passo 6:

Agora iremos configurar o kernel:

# make menuconfig

Obs.: Para esse comando lembre que "*" são itens que serão incorporados no kernel e "m" serão modulares.

ou:

# make xconfig

Depois de configurar salve.

Passo 7:

Agora vem a compilação de verdade:

# make bzImage

Obs.: Tem que ser igual o "i", realmente é em maiúsculo, respeite as escritas do comando.

Pode ir tomar um café, pois dependendo da arquitetura do seu CPU isso vai demorar um pouco.

Passo 8:

Vamos ativar os módulos:

# make modules

Passo 9:

Agora vamos instalar os módulos:

# make modules_install


Demora um pouco também.

Passo 10:

Vamos copiar a imagem do novo kernel no /boot.

# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.6.24-i386-1

# cp /usr/src/linux/System.map /boot/System.map-2.6.24-i386-1

Vamos criar um link para o System.map:

# ln -sf /boot/System.map-2.6.24-386-1 /boot/System.map

Para finalizar o vamos copiar o config para o boot:

# cp /usr/src/linux/.config boot/config-2.6.24-i386-1

Passo 11:

Vamos criar um initrd para execução do boot:

# mkinitrd -o /boot/initrd-2.6.24-i386-1.img 2.6.24-i386-1

Vamos configurar o GRUB.

Ainda logado como root digite:

# cd /boot/grub

# vim menu.lst
ou
# vi menu.lst

Coloque:

title Debian GNU/Linux, kernel 2.6.24-6-686
root (hd0,0)
kernel /boot/vmlinuz-2.6.24-i386-1 root=/dev/hda1 ro
initrd /boot/initrd-2.6.24-i386-1.img
savedefault

Salve o arquivo, reinicie a máquina e escolha o modo com o novo kernel...

Para confirmar sua façanha digite no terminal:

# uname -a

Você está na lista dos nerds attack by linuxman ^^ HuHiHiuHuihIUhiuuhi

Qualquer coisa lembre-se do guia do mochileiro das galáxias:

DON'T PANIC

Quem usa o LILO pode me contactar depois...

Nenhum comentário: