我想使用 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
,但linux
和initrd
错误地以 开头,/UBUNTU@/boot
而不是(hd0,3)
。