Freebsd

如何在 ZFS 安裝上為 FreeBSD 創建 GRUB 條目?

  • November 11, 2018

要清楚我想要的是一個 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)

我已經看到了這個答案,但它與 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
}

但我收到了這個錯誤:

在此處輸入圖像描述

使用 FreeBSD 的引導載入程序(遺憾的是,我通過將 GRUB 安裝到我的磁碟來覆蓋它,儘管恢復它很簡單)我設法引導我的 FreeBSD 安裝,所以它沒有任何問題。我安裝了 FreeBSD 並按照我在此目錄中放置的內容將其設置為啟動:https ://github.com/fusion809/freebsd-scripts/tree/master/zfs-manual-install 。

沒關係,感謝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
}

需要說明的是,我已經成功地嘗試過了,我什至嘗試編寫一個文件並重新啟動以檢查它不只是只讀的,並且該文件仍然存在並且沒有以任何方式被重新啟動更改(甚至它的權限都沒有)。

引用自:https://unix.stackexchange.com/questions/480829