【发布时间】:2015-02-27 00:13:56
【问题描述】:
所以我在我的 AWS EC2 基础映像上升级了内核 yum -y update kernel,我得到以下信息:
Running Transaction
Installing : kernel-2.6.32-504.3.3.el6.x86_64
grubby fatal error: unable to find a suitable template
这里是/boot/grub/grub.conf的内容:
default=0
timeout=0
hiddenmenu
title CentOS (2.6.32-358.el6.x86_64)
root (hd0,0)
kernel /boot/vmlinuz-2.6.32-358.el6.x86_64 ro root=LABEL=rootfs console=ttyS0
initrd /boot/initramfs-2.6.32-358.el6.x86_64.img
所以 grub.conf 没有更新,因为我已经安装了 kernel-2.6.32-504.1.3.el6.x86_64,所以我上次更新内核时 grub 也没有更新。我尝试手动添加内核:
grubby --grub --add-kernel="/boot/vmlinuz-2.6.32-504.3.3.el6.x86_64 ro root=LABEL=rootfs \
console=ttyS0" --title="CentOS (2.6.32-504.3.3.el6.x86_64)" \
--initrd=/boot/initramfs-2.6.32-504.3.3.el6.x86_64.img
然后 /boot/grub/grub.conf 看起来像这样:
default=0
timeout=0
hiddenmenu
title CentOS (2.6.32-504.3.3.el6.x86_64)
kernel /vmlinuz-2.6.32-504.3.3.el6.x86_64 ro root=LABEL=rootfs console=ttyS0
initrd /initramfs-2.6.32-504.3.3.el6.x86_64.img
title CentOS (2.6.32-358.el6.x86_64)
root (hd0,0)
kernel /boot/vmlinuz-2.6.32-358.el6.x86_64 ro root=LABEL=rootfs console=ttyS0
initrd /boot/initramfs-2.6.32-358.el6.x86_64.img
但是,/vmlinuz-2.6.32-504.3.3.el6.x86_64 不是我输入的内核。所以我删除了它并再次尝试:
grubby --grub --add-kernel="/boot/boot/vmlinuz-2.6.32-504.3.3.el6.x86_64 ro root=LABEL=rootfs \
console=ttyS0" --title="CentOS (2.6.32-504.3.3.el6.x86_64)" \
--initrd=/boot/boot/initramfs-2.6.32-504.3.3.el6.x86_64.img
这导致了:
timeout=0
default=1
hiddenmenu
title CentOS (2.6.32-504.3.3.el6.x86_64)
kernel /boot/vmlinuz-2.6.32-504.3.3.el6.x86_64 ro root=LABEL=rootfs console=ttyS0 root=(hd0,0)
initrd /boot/initramfs-2.6.32-504.3.3.el6.x86_64.img
title CentOS (2.6.32-358.el6.x86_64)
root (hd0,0)
kernel /boot/vmlinuz-2.6.32-358.el6.x86_64 ro root=LABEL=rootfs console=ttyS0
initrd /boot/initramfs-2.6.32-358.el6.x86_64.img
此时,我手动将 /boot/grub/grub.conf 编辑为 default=0 并重新启动,我的 EC2 无法启动。所以我尝试了一个新的实例副本并得到了所有这些相同的错误,所以我将现有设置复制到一个新条目:
default=0
timeout=0
hiddenmenu
title CentOS (2.6.32-504.3.3.el6.x86_64)
root (hd0,0)
kernel /boot/vmlinuz-2.6.32-504.3.3.el6.x86_64 ro root=LABEL=rootfs console=ttyS0
initrd /boot/initramfs-2.6.32-504.3.3.el6.x86_64.img
然后重新启动,它再次启动失败。又一次尝试,我重复了上述操作,但使用了root=/dev/xvda3,但也无法启动。所以在这一点上,我根本没有办法升级我的内核。我该怎么办?
更新:我找到了 /boot/boot/ 的东西,我的 /boot/grub/grub.conf 现在看起来像这样:
default=0
timeout=0
hiddenmenu
title CentOS (2.6.32-504.3.3.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-504.3.3.el6.x86_64 ro root=LABEL=rootfs console=ttyS0
initrd /initramfs-2.6.32-504.3.3.el6.x86_64.img
我可以成功启动我的系统,但其他一切仍然正确:安装新内核仍然导致“肮脏的致命错误:无法找到合适的模板”,grubby --default-kernel 仍然没有输出。我必须手动编辑我的 /boot/grub/grub.conf 以进行任何内核更新。
【问题讨论】:
-
通读 DigitalOcean 用户论坛上的this thread,看看它是否有助于解决您的问题。 可能是同一个问题。
-
我认为这是同一个问题,但正如 here 所述,这是一个尚未修复的已知错误。
-
另见grubby fatal error: unable to find a suitable template on serverfault。