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.159 ]

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

Apache Kafka

Evitando acúmulo de arquivos na lixeira do Samba

Leitura recomendada

Aplicando patches no kernel

Algoritmos de compressão

Alterando as permissões de um arquivo

Compilação e instalação do kernel 2.6.xx no Slackware

Instalando Slackware 10.2 em HDs SATA

  
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