Snappy Ubuntu Core 15.04 在“update-grub”之后出现内核崩溃(无法打开根设备)

Snappy Ubuntu Core 15.04 在“update-grub”之后出现内核崩溃(无法打开根设备)

我从中创建了一个 VMDK 虚拟磁盘Snappy Ubuntu Core 15.04图片来自这里:http://cdimage.ubuntu.com/ubuntu-snappy/vivid/stable/latest/,使用它在 VMware Workstation Pro 14 中启动新创建的 VM。

我本想用这个旧版本来模拟我们已有的一些旧设备。它启动正常。

但是,如果我做一个sudo update-grub(见图1),下次启动时,它会因为以下原因而出现内核恐慌:VFS:无法打开根设备,“LABEL=system-a”或未知块(0,0):错误 -6(见图)2)。

图片1: 我如何运行 <code>update-grub</code>

图片2: 由于找不到根设备,内核崩溃


快速研究表明,即使我根本没有修改,它也/boot/grub/grub.cfg已经发生了变化。图片update-grub/etc/default/grub3显示原始图片(包含菜单项的部分,其中$label是“system-a”);图片4显示新的。

图片3: 上一个菜单项

图片4: 新的菜单项失败


更新 1 (6/28)

尝试过update-initramfs,但失败了。之后仍然出现内核崩溃update-grub

此外,它会抱怨“没有这样的文件或目录” /boot/config-3.19.0-47-generic,不确定是否相关(如果我为该命令打开详细模式,仍然会有很多输出)。


更新 2(6/28)

我在 中设置GRUB_HIDDEN_TIMEOUT=10并注释掉。现在我能够看到隐藏的超时并显示 grub 菜单。GRUB_HIDDEN_TIMEOUT_QUIET=true/etc/default/grubEsc

GRUB 菜单

“system-a”和“system-b”都不起作用。“Ubuntu”第一次起作用;但下次重启时隐藏的超时不再存在,并且在“LABEL=system-a”上再次出现内核恐慌。

看来在新的中grub.cfg,“Ubuntu”使用“root=UUID=...”,而“system-a”使用“root=LAEBL=system-a”。

注意,在我运行之前update-grub,grub菜单中只有一个“system-a”选项。

答案1

在查看了过去和的帖子后grub.cfg,发现在运行时update-grub,有一个/etc/grub.d/09-snappy名为get_kernels(...)的函数列出了所有已安装的内核/boot并选择最新的内核来创建启动菜单项。

原始代码grub.cfg使用/vmlinuz和,分别/initrd.img指向/boot/vmlinuz-3.19.0-47-generic/boot/initrd.img-3.19.0-47-generic。然而,运行 之后update-grub,它选择了/boot/vmlinuz-3.19.0-47-generic.efi.signed,而 并没有对应的initrd.img。然后09-snappy脚本完全忽略未找到此文件且未initrd在生成的文件中添加命令grub.cfg,则菜单项无法启动。

手动删除后/boot/vmlinuz-3.19.0-47-generic.efi.signedupdate-grub不再造成启动问题。


总结

已签名的内核映像/boot/vmlinuz-3.19.0-47-generic.efi.signed没有对应的initrd.img。请删除它。


新问题:一次成功启动后,生成grub.cfgupdate-grub将被原始替换。不确定为什么会发生这种情况,但这似乎是另一个问题,因此这里不讨论它。

相关内容