Compilando o Kernel 2.6.x


este artigo vou ensinar a compilar o kernel do linux da versão 2.6.x e mostrar as diferenças desta versão para a anterior, 2.4.x.

Compilar o kernel do linux é uma tarefa que se aprende com o tempo, depois de várias tentativas. Mas os problemas geralmente se resumem à configuração e nao à compilação. Vou tentar dar umas dicas referentes ? configuração, mas lembre-se que cada maquina usa uma configuração diferente por isso tenha em mãos toda a configuração do seu computador e não desista na primeira tentativa.

Para compilar você vai precisar do gcc (A documentação do kernel recomenda a versão 2.95 do gcc, mas eu tenho compilado com sucesso o kernel com as versões 3.2 e 3.3 e muitas distros fazem isso também, a dica é tentar compilar com a versão mais atual do gcc, se der algum problema compile com a 2.95), do Ncurses (geralmente um pacote chamado libncurses-dev ou Ncurses-devel), do make e do module-init-tools.

Qualquer dúvida sobre os pacotes necessários para compilar o kernel, leia o arquivo /usr/src/linux/Documentation/Changes.

Vou usar como referência o kernel da versão 2.6.4 baixado do kernel.org.

Baixe o source do kernel (clique no ‘F’ ao lado da versão do kernel que você deseja baixar. O ‘F’ significa ‘Full source’). Copie o arquivo baixado para /usr/src:

[root@host] # cp linux-2.6.4.tar.bz2 /usr/src

e decompacte-o:

[root@host] # cd /usr/src

[root@host] # tar jxvf linux-2.6.4.tar.bz2

Para facilitar, crie um link simbólico para o diretório que foi criado chamado ‘linux’. Se já existir, remova e crie novamente:

[root@host] # rm /usr/src/linux

[root@host] # ln -s /usr/src/linux-2.6.4 /usr/src/linux

Agora vamos ? configuração. Estando em /usr/src/linux, digite

[root@host] # make mrproper

para limpar as configurações e depois

[root@host] # make menuconfig

Existem outras maneiras de configurar o kernel, inclusive em modo gráfico, mas aqui vou me referir apenas ao menuconfig.

Como disse anteriormente, esta parte depende muito da máquina em questão. É necessário que você selecione todas as opções referentes ao seu hardware e os sistemas de arquivo que você usa. No menuconfig um ‘*’ significa que a opção será compilada dentro da imagem do kernel, um ‘M’ significa que será compilado como um módulo externo.

O sistema de arquivos que a sua partição linux usa deve ser marcado como ‘*’, bem como suporte a IDE (ou SCSI se for o caso). O restante das opções podem ser escolhidas como módulo, você escolhe.

Lembre-se que se você selecionar alguma opção como módulo, deve marcar a opção

Loadable Module Support -> Enable loadable module support,

Loadable Module Support -> Module unloading

e

Loadable Module Support -> Automatic kernel module unloading.

Depois publicarei um artigo mostrando com mais detalhes a configuração.

Salve a configuração. Agora vamos compilar.

A compilação dos kernels da versão 2.6 é um pouco diferente da 2.4. Não existe mais o comando make dep e tem alguns outros alvos (make help exibe as opções disponíveis).

Vamos por partes:

A primeira coisa a fazer é criar a imagem ‘bootável’ do kernel:

[root@host] # make bzImage

Este comando pode demorar bastante tempo dependendo da máquina usada. Se a sua máquina for antiga arrume algo pra fazer pois é tedioso ficar assistindo ? compilação.

Após terminado esse comando a imagem do kernel gerada é gravada em /usr/src/linux/arch/i386/boot/bzImage

O próximo passo é compilar os módulos (aquelas opções selecionadas como ‘M’ na configuração). Se você nao selecionou nada como ‘M’ (o que não é comum), pode pular essa parte.

[root@host] # make modules

E agora instale os módulos criados:

[root@host] # make modules_install

Se você não tiver instalado o pacote module-init-tools, vai receber uma mensagem de erro ao final do make modules_install. Se isso acontecer, instale o module-init-tools pois sem ele o kernel 2.6 nao vai funcionar.

Tudo certo até aqui? Parabéns, o seu kernel está compilado. Vamos agora configurar o nosso sistema para poder ‘bootar’ este novo kernel.

Copie os arquivos de imagem, configuração e o System.map para /boot

[root@host] # cp /usr/src/linux/arch/i386/boot/bzImage
/boot/vmlinuz-2.6.4

[root@host] # cp /usr/src/linux/.config /boot/config-2.6.4

[root@host] # cp /usr/src/linux/System.map /boot/System.map-2.6.4

Vamos configurar agora o gerenciador de boot para usar esse novo kernel. É importante que você mantenha a versão antiga do kernel intocada para poder inicializar o linux em caso de erros no kernel novo.

Se você usa o LILO, edite o arquivo /etc/lilo.conf com o seu editor de textos preferido.

Saiba qual a partição onde seu linux está instalado. É algo como /dev/hdax, onde x é um número. Olhe no lilo.conf na parte referente ao outro kernel e use a mesma partição na nova configuração. Vou usar /dev/hda2 como referência:

A configuração ficará assim:

image /boot/vmlinuz-2.6.4
    root=/dev/hda2
    label=Linux-2.6.4
    read-only

Salve o arquivo e execute o comando /sbin/lilo para gravar a nova configuração

[root@host] # /sbin/lilo

Se o seu gerenciador de boot é o GRUB, edite o arquivo /boot/grub/grub.conf ou /boot/grub/menu.lst. Veja qual a partição onde seu linux está instalado. O GRUB usa uma configuração um pouco diferente, do tipo (hdx,y), onde x é a interface IDE e o y é o numero da partição. Neste caso /dev/hda2 = (hd0,1). Vou usar /dev/hda2 como exemplo mas lembre-se de trocar para a partição que você usa.

A entrada no arquivo ficará assim:

title Linux-2.6.4

root (hd0,1)

kernel /boot/vmlinuz-2.6.4 root=/dev/hda2 ro

Salve o arquivo e pronto. O GRUB nao necessita que seja rodado nenhum comando apos a alteração.

Roney Médice

Analista de Sistemas e Bacharel em Direito

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s