Estou meio ocioso e decidi ser um pouco útil escrevendo um tutorial sobre compilação do Kernel, estou presumindo que pelo menos o gerenciador de pacotes (apt-get ou yum) está configurado, atualizado e funcionando corretamente.
Vou demonstrar como fazer no CentOS e no Debian.
1.0 – Instalando o necessário.
Vamos começar instalando os pacotes para compilar o Kernel, estou baixando a maioria dos pacotes necessários para compilar o Kernel com o “make menuconfig” e se faltar algum o Linux vai te avisar, claro que depende muito da instalação que você fez (eu precisei baixar até o bzip2).
No CentOS:
[~]#yum install gcc make ncurses ncurses-devel flex cpp binutils bzip2
No Debian:
[~]#apt-get install gcc ncurses-base libncurses5 libncurses5-dev flex cpp binutils bzip2
1.1 – Baixando e descompactando a imagem do Kernel mais recente.
Baixe a imagem mais recente do Kernel de www.kernel.org, até quando eu escrevi este artigo era a 2.6.32.8:
No CentOS e Debian:
[~]#wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.8.tar.bz2
Agora descompacte:
No CentOS e Debian:
[~]#tar –jxvf linux-2.6.32.8.tar.bz2 -C /usr/src/
[~]#cd /usr/src/linux-2.6.32.8
1.2 – Compilando o Kernel:
Como descrevi no inicio da documentação, o objetivo é usar o make menuconfig para setar as configurações do Kernel, este passo eu não vou cobrir porque é muito abrangente.
Neste ponto você precisa conhecer seu hardware, de uma olhada no /proc/cpuinfo e no comando lspci.
Se você está aprendendo, está é uma daquelas partes que requerem paciência e persistência, você vai quebrar a cara varias vezes mas uma hora vai ficar bom nisso.
Depois de tudo configurado vamos compilar o Kernel e os módulos:
[/usr/src/linux-2.6.32.8]#make clean dep bzImage modules install modules_install
1.3 – Copiando arquivos para /boot
Agora copie os arquivos dentro de arch/i386/boot para /boot:
No CentOS e Debian:
[/usr/src/linux-2.6.32.8]#cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.32.8
[/usr/src/linux-2.6.32.8]#cp System.map /boot/System.map-2.6.32.8
1.4 – Criando o /boot/initrd-2.6.32.8
Crie o arquivo initrd para o seu Kernel:
No CentOS:
[/usr/src/linux-2.6.32.8]#mkinitrd –v /boot/initrd-2.6.32.8 2.6.32.8
No Debian:
[/usr/src/linux-2.6.32.8]#mkinitramfs –o /boot/initrd-3.6.32.8 /lib/modules/2.6.32.8
1.5 – Configurando o GRUB
Edite o arquivo /boot/grub/menu.lst e adicione:
Title Linux 2.3.32.8
root (hd0,0)
kernel /vmlinuz-2.6.32.8 root=/dev/hda3
initrd /initrd-2.6.32.8
Preste atenção nos discos e partições, você deve alterar o exemplo para a sua configuração.
1.6 – Configurando o Lilo
Edite o arquivo /etc/lilo.conf e adicione:
Image=/boot/vmlinuz-2.6.32.8
Label= Linux 2.3.32.8
Initrd=/boot/initrd-2.6.32.8
Salve e saia, não esqueça de efetivar a alteração:
[~]#lilo
EOF