Um problema comum quando atualiza o kernel em uma maquina virtual ou mesmo um servidor dedicado com boot em rede ativo, é o grubby fatal error: unable to find a suitable template, que nada mais é uma falha ao atualizar o arquivo grub.conf.
A solução para isso é muito simples, basta remover o grub.conf, instalar ou atualizar o kernel, depois voltar o grub.conf e configurar manualmente o novo kernel, veja mais abaixo passo a passo.
Antes de tudo, renomeie o arquivo grub.conf para qualquer outro nome:
# mv /boot/grub/grub.conf /boot/grub/grub.conf.bk
Após instale ou atualize o kernel (aqui vamos instalar:
# yum install kernel
Após volte o gub.conf.bk para seu nome original (eu gosto de copiar e deixa o .bk como backup, veja como fazer isso abaixo):
# cp /boot/grub/grub.conf.bk /boot/grub/grub.conf /
Agora vamos verificar onde esta a base do OS:
# cat /etc/fstab
Vamos ver algo do tipo:
root@ns208789 [~]# cat /etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/sda3 / ext3 errors=remount-ro,usrjquota=quota.user,jqfmt=vfsv0 0 1
/dev/sda2 /boot ext3 errors=remount-ro 0 1
/dev/sda4 swap swap defaults 0 0
/dev/sda5 /tmp ext3 defaults 1 2
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts defaults 0 0
Vemos que o / (base do OS) esta em /dev/sda3
Verifique corretamente os nomes da vmlinuz e initramfs para configurar o grub.conf corretamente:
# cd /boot
# ls
Deve ter uma resposta como essa:
root@ns208789 [/boot]# ls
./ config-2.6.32-431.17.1.el6.x86_64 initramfs-2.6.32-431.17.1.el6.x86_64.img System.map-2.6.32-431.17.1.el6.x86_64 .vmlinuz-2.6.32-431.17.1.el6.x86_64.hmac
../ efi/ lost+found/ System.map-3.10.23-xxxx-std-ipv6-64
bzImage-3.10.23-xxxx-std-ipv6-64 grub/ symvers-2.6.32-431.17.1.el6.x86_64.gz vmlinuz-2.6.32-431.17.1.el6.x86_64*
No nosso caso os arquivos são vmlinuz-2.6.32-431.17.1.el6.x86_64 e initramfs-2.6.32-431.17.1.el6.x86_64.img
Agora já temos todas informações necessárias para configurar o grub.conf
Execute:
# nano /boot/grub/grub.conf
Vamos ver algo como:
default=0
timeout=5
title linux centos6_64
kernel /bzImage-3.10.23-xxxx-std-ipv6-64 root=/dev/sda3 ro
root (hd0,1)
Adicione abaixo da linha timeout:
title Centos 6.5 64bit
kernel /vmlinuz-2.6.32-431.17.1.el6.x86_64 root=/dev/sda3 ro
root (hd0,1)
initrd /initramfs-2.6.32-431.17.1.el6.x86_64.img
O arquivo deve ficar assim:
default=0
timeout=5
title Centos 6.5 64bit
kernel /vmlinuz-2.6.32-431.17.1.el6.x86_64 root=/dev/sda3 ro
root (hd0,1)
initrd /initramfs-2.6.32-431.17.1.el6.x86_64.img
title linux centos6_64
kernel /bzImage-3.10.23-xxxx-std-ipv6-64 root=/dev/sda3 ro
root (hd0,1)
initramfs-2.6.32-431.17.1.el6.x86_64.img
vmlinuz-2.6.32-431.17.1.el6.x86_64
Pressione CTRL + X, depois Y (sim) e enter para salvar.
Por ultimo, faça o reboot:
# reboot
Se feito tudo correto, o kernel novo deve carregar, caso tenha definido algum dado incorreto, depois de 5 segundos ele vai tentar carregar seu kernel antigo:
Para verificar se o kernel foi atualizado, execute:
# uname -r
No nosso caso:
root@ns208789 [/]# uname -r
2.6.32-431.17.1.el6.x86_64
O kernel foi atualizado com sucesso.