【问题标题】:grubby fatal error: unable to find a suitable template [closed]肮脏的致命错误:找不到合适的模板[关闭]
【发布时间】: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 以进行任何内核更新。

【问题讨论】:

标签: linux kernel boot grub


【解决方案1】:

下面会生成正确的grub.cfg文件

grub2-mkconfig -o /boot/grub2/grub.cfg

【讨论】:

  • 用 CentOS 5.11 试过这个,没有 grub2-mkconfig 程序或脚本。有什么提示吗?
  • @CraigS.Anderson:以 root 身份尝试/usr/sbin/grub2-mkconfig
  • 这个问题涉及遗留 (
【解决方案2】:

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

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

【讨论】:

  • 我不明白...你能解释一下“来自 tune2fs 的 UUID”是什么意思吗?也许显示您的 grub.conf 以便我们可以看到您做了什么?谢谢!
  • 这是我的 grub.conf 中的一行:kernel /boot/vmlinuz-2.6.18-371.4.1.el5xen root=UUID=507d18e3-1f39-4d4f-814e-05497334a4d4 ro console=hvc0
猜你喜欢
  • 2013-06-07
  • 1970-01-01
  • 2016-04-09
  • 2014-09-30
  • 2020-05-11
  • 2021-01-08
  • 2020-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多