Ubuntu

使用 Ubuntu 工具或 LiveUSB 設置 GRUB 2 以引導 FreeBSD 以查找哪些分區?

  • March 31, 2017

我目前在我的電腦上安裝了 Windows 7 和 Ubuntu 11.04 (Natty)。我還製作了一個 FreeBSD liveUSB(或安裝程序,不確定;只是dd將他們的 .img 編輯到 U 盤)並在沒有安裝引導載入程序的情況下安裝了它(因為我不想弄亂 GRUB 2,我認為 GRUB 2 應該是能夠啟動大多數東西)。FreeBSD 有它自己的分區,並且在裡面它有 FreeBSD 分區(也許它們被稱為切片?),由安裝程序自動分配。我已經嘗試過執行update-grub——它說它是一個未知的 Linux 並且沒有為其添加條目。

所以,兩個問題:

  1. 如何使用 Ubuntu 工具或我擁有的 USB 安裝程序棒找到要告訴 Grub 的分區?
  2. 找到分區後,我會放入/etc/grub.d/40_custom什麼?

您有三個選擇:您可以讓 Grub 將 FreeBSD 視為某個未知作業系統並鍊式載入 FreeBSD 的第一階段引導載入程序,或者您可以讓 Grub 載入 FreeBSD 的第二階段引導載入程序,或者您可以讓 Grub 載入 FreeBSD 核心。

鍊式載入

這是最簡單、最可靠的方法。您只需要在自己的片上安裝 FreeBSD 引導載入程序(*BSD 所謂的片就是 Linux 和 Windows 所說的分區)。然後 Grub 應該會/etc/grub.d/30_os-prober在你執行時自動(通過)找到它update-grub。條目/boot/grub/grub.cfg看起來像這樣(如果 FreeBSD 在/dev/sda2aka上/dev/wd0s2):

menuentry "FreeBSD" {
   set root=(hd0,2)
   chainloader +1
}

載入 FreeBSD 引導程序或核心

Grub2目前支持所有主要的 BSD 核心(假設您的電腦從 BIOS 引導)。安裝腳本沒有(至少是 Ubuntu 10.04 附帶的,我沒有檢查 11.04),所以如果你選擇這條路線,你必須通過/etc/grub.d/40_Custom.

以下是來自 David Marec 在 FreeBSD 論壇上的範例條目。我沒有測試過它們,但它們看起來很合理。最好的方法似乎是載入 FreeBSD 階段 2 引導載入程序。您可以將 FreeBSD 安裝的位置指定為磁碟號、片號和分區a

menuentry "FreeBSD (/boot/loader)" {
   insmod ufs2
   set root=(hd0,1,a)
   kfreebsd /boot/loader
}

或者通過搜尋具有特定 UUID、文件或標籤的文件系統:

menuentry "FreeBSD (/boot/loader)" {
   insmod ufs2
   search --no-floppy --file /boot/loader
   kfreebsd /boot/loader
}

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