web-dev-qa-db-ja.com

FreeBSDをGRUB2ブートメニューに追加する

Gentoo x64をGrub2と共にMBRドライブにインストールしました。今日、私はFreeBSD x64 9.2をインストールしました。今、私はGentooでFreeBSDをgrub2メニューリストに追加しようとしています。

grub2-install /dev/sda
os-prober
grub2-mkconfig -o /boot/grub2/grub.cfg

Gentooで上記を実行しましたが、FreeBSDが見つかりませんでした。 FreeBSDのネストされたパーティションはsda1上にあり、freebsd-ufsおよびfreebsd-swapパーティションが含まれています。

FreeBSDをgrub2に追加するにはどうすればよいですか?

11
r004

これが私のものです:

menuentry "FreeBSD" --class freebsd --class bsd --class os {
 insmod ufs2
 insmod bsd
 set root=(hd0,1)
 kfreebsd /boot/kernel/kernel
 kfreebsd_loadenv /boot/device.hints
 set kFreeBSD.vfs.root.mountfrom=ufs:/dev/ada0s1a
 set kFreeBSD.vfs.root.mountfrom.options=rw
 set kFreeBSD.hw.psm.synaptics_support=1
}
9
uzsolt

私の目標は:/etc/grub.dの40_customを編集してGrub2からFreeBSD 10をブートすることでした。

私のセットアップ:FreeBSD10は私のシステムの5番目のhddにあります(Linuxでは/ dev/sde、Grub2の場合はhd4。Grub2の下ではドライブのhd0から始まり、パーティションは0ではなく1から始まります)。ルートパーティションは2番目のパーティション(/ dev/sde2)です。これは、インストール中に(最も単純な)FreeBSDのガイド付きパーティション(ディスク全体を使用)を使用したためです。つまり、5番目のhddと2番目のパーティションにroot = '(hd4,2)'を設定します。

info:(chainloader +1は実際には必要ありません!以下は、私を直接FreeBSDブートローダーに連れてきます)。

少し要約すると、set root =(x、x)を適応させるだけで、それ以上は必要ありません。カーネルを直接起動したい場合、以下のエントリよりも少し複雑になります。

menuentry "FreeBSD 10.0" {
    insmod part_gpt
    set root='(hd4,2)'
    kfreebsd /boot/loader
}

「/ dev/sde2上の不明なLinuxディストリビューション」を見つけたos-proberに少しがっかりした

ps:後で 'update-grub'とTaddaa(うまくいけば)を忘れないでください。 :)誰かが成功した場合、私にメッセージを投げてください、私はあなたから聞いて幸せです!

4
Emi

次の順序で実行してください。

  1. /etc/grub.d/40_customzsoltのディレクティブを追加を編集します。ファイルのendにディレクティブを追加します。 そこにあるものは何も削除しないでください

  2. 40_customが実行可能であることを確認してください。そうでない場合はchmod u+x 40_custom

  3. これを行って、grub.cfgに変更を書き込みます。

    grub2-install /dev/sda 
    os-prober 
    grub2-mkconfig -o /boot/grub/grub.cfg
    
  4. 多田!今すぐ再起動してください。 GRUBメニューのOSリストにFreeBSDがあるはずです。

UFSパーティションスライスにアクセスするには、次の操作を行う必要があります。

  1. カーネル構成を編集して、UFS filesystemUFS labelを追加します。

  2. 次に、カーネルをmake && make_modulesします。

  3. UFSファイルシステムソフトウェアをインストールします。

  4. Linuxの下にUFSスライスをマウントします。

    Sudo mkdir /mnt/freebsd && Sudo mount -r -t ufs -o ufstype=ufs2 /dev/sda1 /mnt/freebsd
    
2
r004

このサイト によると:

  1. Linuxを起動します。
  2. /boot/grub2/custom.cfgファイルを作成します。
  3. 作成したファイルに次の行を追加します。

    menuentry "FreeBSD" {
    set root='(hd0,3)'
    kfreebsd /boot/loader
    }
    

    ここで、hd0,3は、これが最初のハードドライブであり、FreeBSDが3番目のパーティションにあることを意味します(ディスクには0から番号が付けられ、パーティションには1から番号が付けられるため)。おそらく、これらの数値を調整する必要があります。ディスクが何であるかを確認する1つの方法は、fdisk -lを実行することです。

  4. grub2-mkconfig -o /boot/grub2/grub.cfgを実行します。

コマンドが少し異なる場合があることに注意してください。 grub2-mkconfiggrub-mkconfigなどになる可能性があります(これはBunsenLabs Linuxでの私のケースです)。


このマシンでは、ZFSではなくUFSでFreeBSDを使用していたことに注意してください。提示されたソリューションは、私が聞いたことから、ZFSベースのインストールでは機能しません。

2

Arch Linux wiki は、これについて非常に素晴らしい説明があります。これは、通常の方法、つまりOSの直接ロードとチェーンロードをガイドします。

ただし、変更をコミットするにはSudo grub-mkconfig -o /boot/grub/grub.cfgを発行することを忘れないでください。

1
xitij