当 root 位于 ZFS 上时,在 btrfs /boot 上安装 Grub

当 root 位于 ZFS 上时,在 btrfs /boot 上安装 Grub

我想使用 Grub 来启动我的 Linux 系统。该系统的根文件系统位于 ZFS 数据集上,具有常用的 EFI 引导分区,以及可用作/boot.当系统启动并且我已经安装了两者时/boot/boot/efi运行update-grub会打印以下错误,然后仅安装后备“UEFI 固件设置”条目:

Found linux image: vmlinux-5.15.0-101-generic in rpool/UBUNTU
Found initrd image: initrd.img-5.15.0-101-generic in rpool/UBUNTU
/usr/sbin/grub-probe: error: unknown filesystem.

我知道 Grub 没有完整的 ZFS 支持,但这正是我有这个额外的 btrfs 分区的原因/boot!我很困惑为什么 ZFS 的东西甚至会影响这里的启动——我以为 Grub 会从中加载 initrd /boot,然后剩下的过程将由 Linux 本身来处理。

我做错了什么以及如何解决它?

编辑添加:我现在注意到确实update-grub为 Linux 生成了一个 Grub 条目,但它不起作用。我不知道如何解决它,但这可能是一些非常相关的信息来追踪它。

问题似乎是生成的/boot/grub/grub.cfg文件包含如下条目:

menuentry 'Ubuntu 22.04 LTS' --class ubuntu --class gnu-linux --class gnu --class os ${menuentry_id_option} 'gnulinux-rpool/UBUNTU-5.15.0-101-generic' {
        recordfail
        load_video
        gfxmode ${linux_gfx_mode}
        insmod gzio
        if [ "${grub_platform}" = xen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        linux   "/UBUNTU@/boot/vmlinuz-5.15.0-101-generic" root=ZFS="rpool/UBUNTU" ro quiet splash ${vt_handoff}
        initrd  "/UBUNTU@/boot/initrd.img-5.15.0-101-generic"
}

请注意,该root参数正确设置为root=ZFS=rpool/UBUNTU,但linuxinitrd错误地以 开头,/UBUNTU@/boot而不是(hd0,3)

相关内容