6

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 以进行任何内核更新。

4

2 回答 2

1

以下将生成正确的 grub.cfg 文件

grub2-mkconfig -o /boot/grub2/grub.cfg
于 2015-06-21T13:48:10.900 回答
0

我在CentOS AMI中看到 grubby--default-kernel在内核更新期间仍然没有输出。我调查了为什么使用ltrace没有输出。

似乎 grubby 确认了grub.conf来自ltrace输出的根 UUID 。grub.conf在我更改为添加root=UUID=[UUID from tune2fs]到我的环境之后,我实际上可以更新内核。

于 2015-03-26T09:35:50.590 回答