如何为 ZFS 安装上的 FreeBSD 创建 GRUB 条目?

Jos*_*nto 4 freebsd dual-boot zfs grub2

需要明确的是,我想要的是一个 FreeBSD GRUB2 条目,它可以使用 BIOS 固件(不是 UEFI)在 ZFS(名称:zroot)上启动 FreeBSD。如果有帮助的话,GRUB 安装的操作系统是 Arch Linux,Arch 使用 ext4 root,FreeBSD 使用 ZFS。

我的分区表是(GPT):

/dev/sda1 - BIOS boot (1M) 
/dev/sda2 - Linux swap (4G) 
/dev/sda3 - Linux filesystem (ext4, 50G) 
/dev/sda4 - FreeBSD boot (128k) 
/dev/sda5 - FreeBSD ZFS filesystem (74G)
Run Code Online (Sandbox Code Playgroud)

我看过这个答案,但它适用于 UFS 根上的 FreeBSD,而且我也看过这个答案,它适用于 ZFS 上的 Arch Linux,而不是 ZFS 上的 FreeBSD。

我尝试过使用此条目:

menuentry "FreeBSD" --class freebsd --class bsd --class os {
    insmod zfs
    insmod bsd
    set root=(hd0,4)
    kfreebsd /boot/kernel/kernel
    kfreebsd_loadenv /boot/device.hints
    set kFreeBSD.vfs.root.mountfrom="zfs:zroot"
    set kFreeBSD.vfs.root.mountfrom.options=rw
    set kFreeBSD.hw.psm.synaptics_support=1
}
Run Code Online (Sandbox Code Playgroud)

但我收到了这个错误:

在此输入图像描述

使用 FreeBSD 的引导加载程序(遗憾的是我通过将 GRUB 安装到我的磁盘上来覆盖它,尽管恢复它很简单)我成功地引导了我的 FreeBSD 安装,所以它没有任何问题。我安装了 FreeBSD 并按照我在此目录中放置的内容将其设置为启动:https://github.com/fusion809/freebsd-scripts/tree/master/zfs-manual-install

Jos*_*nto 5

没关系,感谢FreeBSD 论坛,我找到了答案。这是我的 grub.cfg 中需要的:

menuentry "FreeBSD" --class freebsd --class bsd --class os {
    insmod zfs
    insmod bsd
    search -s -l zroot
    kfreebsd /@/boot/zfsloader
    kfreebsd_loadenv /@/boot/device.hints
}
Run Code Online (Sandbox Code Playgroud)

需要明确的是,我已经成功地尝试了这一点,我什至尝试编写一个文件并重新启动以检查它不仅仅是只读的,并且该文件仍然存在并且没有因重新启动而以任何方式更改(甚至它的权限也没有被更改) )。

  • 请务必检查您的答案。你不会得到积分,但这是一个很好的发现。我的 +1 票 (2认同)