使用 Ubuntu 工具或 LiveUSB 設置 GRUB 2 以引導 FreeBSD 以查找哪些分區?
我目前在我的電腦上安裝了 Windows 7 和 Ubuntu 11.04 (Natty)。我還製作了一個 FreeBSD liveUSB(或安裝程序,不確定;只是
dd
將他們的 .img 編輯到 U 盤)並在沒有安裝引導載入程序的情況下安裝了它(因為我不想弄亂 GRUB 2,我認為 GRUB 2 應該是能夠啟動大多數東西)。FreeBSD 有它自己的分區,並且在裡面它有 FreeBSD 分區(也許它們被稱為切片?),由安裝程序自動分配。我已經嘗試過執行update-grub
——它說它是一個未知的 Linux 並且沒有為其添加條目。所以,兩個問題:
- 如何使用 Ubuntu 工具或我擁有的 USB 安裝程序棒找到要告訴 Grub 的分區?
- 找到分區後,我會放入
/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/sda2
aka上/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 }