yum -y update kernel
因此,我在 AWS EC2 基础映像上升级了内核,得到以下信息:
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.confdefault=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 以进行任何内核更新。