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 の / パーティション (およびすべて)

私のメインの OS は、Ubuntu の派生版である Linux-Mint です。

GRUB2 を MBR にインストールしており、GRUB は Linux-Mint インストール (/boot/grub など) のデータを使用します。

FreeBSD と PC-BSD はそれぞれ、パーティション内に独自の第 2 ステージ ブートローダーを持っています。Solaris は、パーティション内に独自の GRUB インストールを持っています (これは第 2 ステージ ブートローダーとして機能し、さまざまな Solaris カーネルを選択できるようにします)。Linux-Mint と CentOS は、MBR 内の GRUB によって起動されます。

+++

私の問題は FreeBSD と PC-BSD です。この 2 つがうまく連携しません。2 つの BSD インストールに対して GRUB エントリで異なるルート パーティションなどを指定しているにもかかわらず、GRUB メニューから FreeBSD または PC-BSD のどちらを選択しても同じもの (FreeBSD または PC-BSD) が起動します。

*BSD のブートは 3 段階のプロセスであるように見えます: MBR ローダー (第 1 段階) が BSD パーティションに第 2 段階をロードし、最終的に実際のカーネル (第 3 段階) をロードします。

最終的に、*BSD でのブートについて RTFM まで調べて、第 2 段階の BSD ブートローダ (両方の BSD パーティションにインストールされています) に関する次の情報を発見しました。

  • パーティションテーブルにアクティブなBSDパーティション(ブート可能)がマークされていない場合、ローダーは、最初のBSDパーティションディスク上のどのBSDパーティションから第2ステージがロードされたかは関係ありません。私の場合は、いつもFreeBSD をロードします (最初なので)。
  • 一方、BSD パーティションがアクティブ (起動可能) としてマークされている場合、これは第 3 段階としてロードされる BSD カーネルになります。私の場合は、常に FreeBSD を取得するか、常に PC-BSD を取得します。

きっとこれを回避する方法があるはずだ!おそらく第2段階をスキップして、GRUBに第3段階のカーネルを直接ロードさせ、そして違う私の選択に応じてカーネルが異なります... あるいは、第 2 ステージ用の特別な引数や構成、あるいは代替の第 2 ステージ ローダーなどでしょうか? 同様の問題に遭遇して解決した人はいますか?

PS: MBR に GRUB をインストールすると、FreeBSD (および PC-BSD) によってインストールされた第 1 ステージ ブートローダーが上書きされます。ただし、問題は (私の知る限り) 第 2 ステージ ローダーにあるため、FreeBSD 第 1 ステージを使用しても問題が解決したかどうかは疑問です。

答え1

まず、MBR は使用しません。OS が 4 つあり、それでは間に合わないからです。/boot パーティションをプライマリにして拡張しないようにする必要があります。そのため、Solaris または Linux のインストールを破棄します。GRUB2 で FreeBSD (または PC-BSD... どちらでもかまいません) を起動するのは簡単です。"set root=..." を定義し、"kfreebsd /boot/loader" と入力するだけで済みます。このタイプでは、GUID/GPT パーティション テーブルを使用します。このテーブルでは、すべてのパーティションを分割することもできます。その場合、BSD スライスを追加する必要はありません。

関連情報