Primeiramente vou reproduzir aqui os passos da compilação do kernel e criação/instalação do pacote e dependências:
* Sempre que eu usar o asterisco estarei me referindo a versão do kernel que muda conforme as atualizações então não vou escrever nenhuma agora.
1- Instale os pacotes compiladores e geradores de pacotes .rpm
yum
install
gcc
make
bison ncurses-devel rpm-build
2- Baixe a nova versão do kernel em www.kernel.org para a pasta /usr/src. A não ser que você seja "aventureiro" use sempre a última versão stable para máquinas imprescindíveis, mas se você quiser ajudar no desenvolvimento do kernel, use a versão testing e informe os problemas.
# wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.*.tar.bz2
3- Descompacte-a, crie um link pra ela e acesse a pasta.
# tar -xjvf linux-2.6.*.bz2
# ln -s linux-2.6.* linux
# cd linux
4- Copie o arquivo de configurações padrão para que fique mais fácil de se guiar dentro do menu de configuração.
# cp /boot/config-* .config
5- Configure as opções do kernel conforme sua necessidade, não vou entrar em detalhes aqui para não prolongar muito o post já que minha idéia é so resolver um problema que não é citado em outros posts na internet.
# make menuconfig
6- Crie o pacote .rpm.
# make rpm
*Isso vai demorar bastante.
7- Agora vou exigir um pouquinho de trabalho seu, localize o arquivo que foi criado. (se vira)
8- Instale o pacote:
# rpm -ivh kernel-2.6.*.rpm
9- Liste o conteúdo da pasta /boot e voc verá que os arquivos do novo kernel se encotram lá, mas se você comparar com os arquivos que já estavam lá você vai ver que faltam alguns para o seu novo kernel.
10- Atualize a lista dos módulos que serão carregados com o novo kernel:
# depmod kernel-2.6.*
Kernel pronto.. ou quase - Não reinicie ainda e NÃO crie o initrd como todos os tutoriais de compilação lhe orientam.
Nem tudo são flores...
Achei as informações sobre a compilação depois de muuuito garimpar na net e acabei tendo um belo "kernel panic", como já sou íntimo dessa mensagem não me desesperei e resolvi ler tudo o que o sistema estava me dizendo, a mensagem era:
KAMDISK: imcomplete write (15071 != 32768)
Write erro
Kernel panic – not syncing: VFS: unable to mount root fs on unknown-block(0,0)
Pid: 1, comm.: swapper Not tainted 2.6.39.3LevierTecnologia #3
Call Trace:
[] panic+x91/0x19c
[]? Printlk+0x41/0x46
[Observe a terceira linha que ela me diz que não conseguiu sincronização ou acesso ao VFS (Virtual File System), o kernel usa no boot um sistema virtual de arquivos que se encontra na imabem /boot/initrd*.img, então a mensagem sugere que o problema está aí.
SOLUÇÃO:
Ao invés de criar o initrd você irá criar o initramfs e pra isso você irá usar o programa "dracut" da seguinte forma:
# cd /boot
# dracut initramfs-2.6.*.img 2.6.*
Agora vamos a configuração do Grub.
1- Edite o arquivo /boot/grub/grub.conf e adicione os dados referentes ao novo kernel, você pode copiar e colar os dados do kernel antigo e ajustar as informações:
# vim /boot/grub/grub.conf
Em alguns casos, não consegui entender o porquê, o arquivo "/boot/vmlinux*" gerado possui algum erro então você terá que copiar o arquivo /root/rpmbuild/BUILD/kernel-3.0.02xXeon_cleber/arch/x86/boot/bzImage para o /boot, trocar o nome do arquivo para o mesmo do "vmlinux*" substituindo o mesmo.
No meu caso o erro que me forçou a fazer isso foi o "Error 13: Invalid ou unsupported executable format" no momento do boot com o novo kernel.
* no lugar onde se encontra o initrd.*.img coloque o caminho do arquivo initramfs criado anteriormente.
--- Não vou detalhar muito agora mas posteriormente eu melhoro o post.