Compilação do kernel passo-a-passo

O kernel 2.6.4 vem trazendo muitas novidades, incluindo melhor desempenho, maior escalabilidade, sistema de I/O (entrada e saída) renovado, novos sistemas de arquivos e suporte a diversos novos dispositivos e plataformas. Este tutorial serve para nos incentivar a migrar para esta versão do kernel de forma simples e descomplicada.

[ Hits: 37.145 ]

Por: Fernando Nunes em 19/03/2004


Introdução



Os passos seguidos pelo tutorial foram realizados na distribuição Conectiva Linux 9.0, mas servem como base para todas as outras distribuições.

Nos exemplos abaixo usarei o diretório /root para guardar meus downloads.

Não esqueça de instalar os pacotes task-kernel-compiling e task-c++-devel.

Faça o download do kernel no site www.kernel.org (na data deste artigo o kernel já está em sua versão 2.6.4).
Faça também o download do pacote module-init-tools, ele é necessário para fazer seu kernel novo funcionar:

Compilando o module-init-tools


Descompacte o arquivo module-init-tools no diretório de sua preferência, entre no diretório criado e execute o script de configuração do mesmo:

# ./configure --prefix=/

Em seguida:

# make moveold

Isto irá renomear os comandos para trabalhar com módulos para *.old, por exemplo, lsmod passa para lsmod.old.

Execute:

# apt-get install glibc-devel-static

Isso irá instalar o pacote glibc-devel-static, necessário para compilar o module-init-tools.

E então:

# make install

Para converter seu /etc/modules.conf no novo arquivo /etc/modprobe.conf, execute:

# ./generate-modprobe.conf /etc/modprobe.conf

Para maiores informações sobre a instalação do module-init-tools, acesse a documentação presente no diretório em que você está, como a FAQ, README, etc.

Compilando e instalando o kernel 2.6.4


Descompacte o arquivo do kernel 2.6.4 para dentro do diretório /usr/src:

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

Vá para o diretório /usr/src e verifique se existe um link chamado "linux" apontando para uma versão antiga de kernel e apague, então crie outro link apontando para o novo kernel:

# ln -sf linux-2.6.4 linux

Entre no diretório linux (link que acabou de criar) e execute:

# make menuconfig

Serão exibidos os menus com as opções de configuração do seu kernel. Lembre-se que a maioria das coisas no Conectiva Linux funcionam através de módulos.

Execute:

# make # make modules_install

Copie o arquivo /usr/src/linux/System.map para o /boot:

# cp /usr/src/linux/System.map /boot

Copie o arquivo /usr/src/linux/arch/i386/boot/bzImage (este é o seu kernel compilado) para o /boot

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

NOTA: neste exemplo já copiei e renomeei o kernel para kernel-2.6.4.

Baixe o pacote mkinitrd-3.5.14-1.i386.rpm em: http://www.las.ic.unicamp.br/pub/.../mkinitrd-3.5.14-1.i386.rpm

Instale-o no sistema com:

# rpm -ivh mkinitrd-3.5.14-1.i386.rpm

Se tiver problemas com a instalação do pacote, tente:

# rpm -ivh mkinitrd-3.5.14-1.i386.rpm --force

Agora já podemos criar nosso arquivo initrd, que será necessário caso você esteja utilizando um sistema de arquivos com journaling, como o EXT3 e o ReseirFS por exemplo (man mkinitrd).

Vá para o diretório /lib/modules e verás que foi gerado um diretório chamado "2.6.4", que corresponde aos módulos que você compilou para o kernel 2.6.4, certo ?!!

# cd /lib/modules
# mkinitrd /boot/initrd-2.6.4.img 2.6.4


Neste ponto seu kernel foi compilado e a imagem dele já está no /boot, assim como o mkinitrd, só falta então configurar o seu Boot Loader.

No meu caso, uso o GRUB, olha a configuração abaixo que acrescentei no meu /boot/grub/menu.lst:

   title = Conectiva Linux kernel 2.6.3
        kernel = (hd0,1)/boot/kernel-2.6.3 root=/dev/hda2 3
        initrd = (hd0,1)/boot/initrd-2.6.3.img

Bom, agora é só reiniciar o PC e escolher a nova entrada que foi acrescentada ao GRUB... e boa sorte!

Se algo de errado acontecer, verifique qual é o erro. Faltou algum módulo no kernel? Se sim, este passo é com você, reinicie o processo de compilação e escolha as opções que ficaram faltando durante a configuração do kernel. :)

Se tiver dúvidas, verifique a documentação que se encontra no diretório do código-fonte do kernel, pois este será de grande utilidade.

Infos retiradas na net e alteradas conforme as necessidades de hoje.

Abraços a todos!!!

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Evitando acúmulo de arquivos na lixeira do Samba

Apache Kafka

Leitura recomendada

Algoritmos de compressão

Compilando o Kernel Linux

Recompilando o kernel com suporte a placas de rede Encore rtl8139D (Silan)

A tecla mágica SysRQ

Linux Virtual Memory Management e lentidão ao copiar arquivos grandes para mídia lenta

  
Comentários
[1] Comentário enviado por norrinradd em 19/03/2004 - 10:55h

Valeu pela matéria, estou fazendo certificação e estamos vendo esse assunto, é sempre bom, ter algumas coisas a mais sobre kernel

[2] Comentário enviado por ABAmadeu em 19/03/2004 - 13:35h

o texto está bom...estou tentando compilar o kernel 2.6.x para instalar em casa mas tive alguns problemas...
a parte do "module-init-tools" mesmo não havia visto em nenhum outro tutorial...

só peca um pouco o post uma pequena confusão de versão de kernel..há lugares com "kernel-2.6.3", outros com "kernel-2.6.4"...

[3] Comentário enviado por cvs em 19/03/2004 - 13:51h

Eu havia escrito um tuto desse ah uns meses atras, esta na fila de espera, e nele contem sobre module-init-tools, um pouco mais detalhado tbm. Mas é isso, pra compilar kernel é sempre bom ver mais alguns tutos, onde mostram mais coisas, sempre tem algo a ser acrescentado.
Bom artigo.

[4] Comentário enviado por pique em 19/03/2004 - 18:01h

bem ue apenas fiz um link para o diretorio do kernel para /usr/src, dei um make mrproper, make menuconfig , make, logo depois copiei a imagem para o /boot e acrescentei no lilo e pronto, carregou normalmente
fiz um teste e deu tudo certinho
esta cxorreto essa maneira ???
Obrigado

[5] Comentário enviado por danizach em 19/03/2004 - 21:12h

Quais as modificacoes que eu tenho que fazer para utilizar esse passo a passo no Red Hat 9.0???

[6] Comentário enviado por Airozi em 20/03/2004 - 03:41h

tem q acrescenta o
diretorio no # ./configure --prefix=/

tipow
# ./configure --prefix=/home/airozi


[7] Comentário enviado por norrinradd em 23/03/2004 - 09:25h

Compilação de kernel é e sempre será um ponte forte no linux, consequentemente, bom artigos se fazem necessário, este cumpre muito bem seu objetivo.

[8] Comentário enviado por lindbergluiz em 26/03/2004 - 00:40h

nunca havia compilado antes o kernel. Com este artigo em animei para tal...mas ainda irei me informar sobre as vantagens sobre a versão 2.4.x...apenas a critério de curiosidade e pra saber também o que irá melhorar com a compilação...


[9] Comentário enviado por Valtecir em 29/03/2004 - 16:38h

So que só consegui fazer até o comando
# ./configure --prefix=/

Depois quando executo o make moveold aparece uns erros. E ai percebi que nao tinha instalado os pacotes task-kernel-compiling e task-c++-devel. E para piorar a situação o cdrom e a rede pararam de funcionar.

E agora????

[10] Comentário enviado por gustavo_marcon em 18/04/2004 - 19:03h

tô tentando usar uma placa wireless da LG LW2110P no linux e não tô conseguindo, tô pensando que se eu recompilar o kernel posso ter melhores chances, mas antes de fazer isso queria ter uma opinião de alguem que já mexeu com o kernel. Vc acha que posso conseguir usar minha placa recompilando o kernel? Já tentei várias vezes instalar o driver, até consegui levantar a interface wlan0, mas nunca consegui entrar na rede, e no windows uso a placa normalmente!!1


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts