使用 Ubuntu 19.10 ZFS 根文件系统恢复无聊的 GRUB

den*_*set 5 grub2 zfs

在安全启动(尝试签署 VMWare Player 内核模块)发生一系列事故后,GRUB 停止显示与 Ubuntu 19.10 对应的条目,安装为 ZFS 根(默认 19.10 安装程序选项),默认在系统设置中启动。

通过执行以下操作,我能够启动到我的系统(从内存中;下面的某些细节可能已关闭)。

在 GRUB shell 中,我输入

set root=(hd0,gptXXX)
linux /BOOT/ubuntu_YYY/@/vmlinuz root=ZFS=rpool/ROOT/ubuntu_YYY boot=zfs
initrd /BOOT/ubuntu_YYY/@/initrd.img
boot
Run Code Online (Sandbox Code Playgroud)

为了找到gptXXX要使用的分区,我运行ls然后ls (hd0,gptXXX)/直到找到引导文件。这ubuntu_YYY似乎是 Ubuntu 系统的唯一标识符。我通过ls-ing around找到了它(hd0,gptXXX)/BOOT

ls从 GRUB 转来转去时,我遇到了一些关于compression algorithm 115 not supported.

我没有安装任何其他操作系统,我暂时禁用了安全启动。

我现在想知道采取什么步骤来恢复 GRUB 引导加载程序的正确操作。如果我不能修复它,我可能最终会安装一个新的 20.04 LTS 副本。但至少以上内容对任何最终处于相同情况的人都有帮助。

编辑:我已经compression=lz4设置rpool(但bpool),它可能是相关的。

小智 0

由于上面的命令使其启动,第一个简单的方法是将它们插入到您的/boot/grub/grub.cfg(标准位置)中,如下所示:

Menuentry 'my Ubuntu installation' {
insmod zfs
insmod part_gpt
insmod (whatever)
 ... here go your commands (without "boot")...
}
Run Code Online (Sandbox Code Playgroud)

最有可能的是,如果编辑grub.cfg就足够了,您甚至可能不需要insmod那里的东西。无论如何,查看已有的条目(由系统安装创建)不会有什么坏处。

或者您可以选择使用该grub-install命令完全重新安装 grub,假设您(hd0)/dev/sda: grub-install /dev/sda