如何在 MBR 中使用 GRUB2 雙重啟動 FreeBSD 和 PC-BSD?

如何在 MBR 中使用 GRUB2 雙重啟動 FreeBSD 和 PC-BSD?

我的電腦在不同分割區安裝了多個作業系統:

  1. 自由BSD
  2. PC-BSD
  3. 索拉里斯
  4. 擴充分區
  5. / -Linux-Mint 分區
  6. 交換 Linux-Mint
  7. Linux-Mint 的 /home
  8. / -Linux CentOS 的分割區(以及所有內容)

我的主要作業系統是 Linux-Mint,它是 Ubuntu 的衍生版本。

我在 MBR 中安裝了 GRUB2,它 (GRUB) 使用 Linux-Mint 安裝中的資料(/boot/grub 等)。

FreeBSD 和 PC-BSD 在其分割區中都有自己的第二階段引導程式。 Solaris 在其分割區中有自己的 GRUB 安裝(充當第二階段引導程序,使我能夠在不同的 Solaris 核心之間進行選擇)。 Linux-Mint 和 CentOS 由 MBR 中的 GRUB 引導。

+++

我的問題是 FreeBSD 和 PC-BSD ——它們只是不能很好地相處!即使我在 GRUB 條目中為兩個 BSD 安裝指定了不同的根分割區等;無論我從 GRUB 選單中選擇 FreeBSD 還是 PC-BSD,都會啟動同一個(FreeBSD 或 PC-BSD)。

引導 *BSD 似乎是一個三階段過程:MBR 載入程式(第一階段)載入 BSD 分割區中的第二階段,最後載入實際的核心(第三階段)。

最後,我將自己降低到關於在 *BSD 中啟動的 RTFM,我發現了以下關於第二階段 BSD-bootloader(它已安裝在我的兩個 BSD 分區中)的花絮:

  • 如果分區表中沒有 BSD 分割區被標記為活動分割區(可開機分割區),則載入程式將開始載入位於下列位置的 BSD 核心的第三階段:第一個 BSD 分區在磁碟上-無論第二階段是從哪個 BSD 分割區載入的。就我而言,它會總是載入 FreeBSD(因為它是第一個)。
  • 另一方面,如果 BSD 分割區被標記為活動(可開機),則這將是作為第三階段載入的 BSD 核心。就我而言,我要么總是使用 FreeBSD,要么總是使用 PC-BSD。

當然一定有辦法解決這個問題嗎?也許以某種方式跳過第二階段,讓 GRUB 直接載入第三階段核心——然後不同的核心取決於我的選擇...或者可能是第二階段的一些特殊參數或配置——或者可能是替代的第二階段載入器?這裡有人遇到類似的問題解決了嗎?

PS:在MBR中安裝GRUB,覆蓋了FreeBSD(和PC-BSD)安裝的第一階段引導程式。然而,我懷疑使用 FreeBSD 第一階段是否可以解決我的問題,因為問題是(據我所知)第二階段載入器。

答案1

首先,我不會使用 MBR,因為你有 4 個作業系統,而且那不會走得太遠。您需要將 /boot 分割區作為主分割區而不是擴充分割區。因此,您要么放棄 Solaris 安裝,要么放棄 Linux 安裝。使用 GRUB2 引導到 FreeBSD(或 PC-BSD...無論如何,沒有區別)很容易。你只需定義你的“set root=...”,然後你說“kfreebsd /boot/loader”就可以了。對於您的類型,我會使用 GUID/GPT 分割區表,您也可以將所有分割區分割到其中,然後您不需要額外的 BSD 切片。

相關內容