我在 MBR 驱动器上安装了带有 Grub2 的 Gentoo x64。今天我安装了 FreeBSD x64 9.2。现在我在 Gentoo 并尝试将 FreeBSD 添加到grub2
菜单列表中。
grub2-install /dev/sda
os-prober
grub2-mkconfig -o /boot/grub2/grub.cfg
Run Code Online (Sandbox Code Playgroud)
我在 Gentoo 上执行了上述操作,但没有找到 FreeBSD。FreeBSD 嵌套分区已打开sda1
并包含freebsd-ufs
和freebsd-swap
分区。
我如何将 FreeBSD 添加到grub2
?
Arch Linux ZFS wiki 页面解释了与grub 兼容的池创建,这个关于引导 Fedora 的页面也是如此,但我无法创建一个 Grub 可读的池。Arch Linux wiki 页面关于在 ZFS 上安装 Arch Linux突出显示了某些错误,但并没有真正解释如何克服它们。
链接页面解释了 Grub 支持zpool 功能的子集,并且无法读取使用它不支持的功能的池。他们继续解释如何配置合适的池,但我一直无法使其工作。支持的功能子集似乎没有记录在任何地方。
我正在使用虚拟机来测试 Grub 2.02 和 Arch Linux 内核 4.16.13-1-ARCH,这是最新的并且与当前的zfs-linux
软件包版本 ( zfs-linux-0.7.9.4.16.13.1-1
)兼容。我(还)没有尝试制作可引导系统,只是为了证明 Grub 可以读取 zpool。这是我尝试过的:
首先,就像arch wiki 页面建议的那样,通过禁用不需要的功能:
# zpool create \
-o feature@multi_vdev_crash_dump=disabled \
-o feature@large_dnode=disabled \
-o feature@sha512=disabled \
-o feature@skein=disabled \
-o feature@edonr=disabled \
testpool mirror \
/dev/disk/by-id/ata-VBOX_HARDDISK_VB{5f2d4170-647f16b7,f38966d8-57bff7df}
Run Code Online (Sandbox Code Playgroud)
这导致了这些功能:
testpool feature@async_destroy enabled local …
Run Code Online (Sandbox Code Playgroud)