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.
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:
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.
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:
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!!!