丸山です。 Sun, 11 Dec 2016 20:40:12 +0900 Naomichi Nonaka <n...@enuenu.org> writes:
>野中です。 > >時間が経ってしまいましたが、UEFIモードのGrub2からFreeBSDを起動する方法を >私のblog > >http://blog.livedoor.jp/goldfish_and_laser/ > >に纏めてみました。 有難うございました。ちょっとしたコメントを blog に書いておきましたが、と もかくお陰様でだいぶ勉強になりました。 で、結局私の dynabookN51は partition 1 bios-boot (1.0G) 2 efi (100M) 3 ms-reserved (128M) 4 ms-basic-data (78G) Windows8.1 - free - (3.5K) 7 freebsd-ufs (5.0G) PCBSD10.3(UFS)その1 8 freebsd-ufs (5.0G) PCBSD10.3(UFS)その2 9 freebsd-swap (4.0G) 10 freebsd-ufs (40G) PCBSD10.3(UFS)その1の/usr 11 freebsd-ufs (40G) PCBSD10.3(UFS)その2の/usr 20 freebsd-zfs (30G) TrueOS11.0(JUNE2016) 21 freebsd-zfs (30G) TrueOS11.0(JULY2016) 22 freebsd-zfs (45G) PCBSD10.3 23 freebsd-zfs (45G) PCBSD10.3 という状態で、 /boot/grub/custom.cfg はこのメールの末尾のようにしました。 ただし efi パーティションの中身は [root@surya{36}] ~# ls -alg /boot/efi/EFI/BOOT/ total 1235 drwxr-xr-x 1 root wheel 1024 5月 26 2016 . drwxr-xr-x 1 root wheel 1024 8月 22 2015 .. -rwxr-xr-x 1 root wheel 33811 8月 13 2015 BOOT102.EFI -rwxr-xr-x 1 root wheel 74833 3月 31 2016 BOOT103.EFI -rwxr-xr-x 1 root wheel 77824 7月 20 01:11 BOOT110.EFI -rwxr-xr-x 1 root wheel 78674 11月 18 13:18 BOOTNONA.EFI -rwxr-xr-x 1 root wheel 202752 12月 5 02:39 BOOTX64.EFI -rwxr-xr-x 1 root wheel 196608 11月 25 01:18 GRUBP20.EFI -rwxr-xr-x 1 root wheel 196608 11月 25 06:45 GRUBP21.EFI -rwxr-xr-x 1 root wheel 196608 12月 1 11:35 GRUBP22.EFI -rwxr-xr-x 1 root wheel 202752 12月 5 02:39 GRUBP23.EFI という状況です。これで2つの UFSパーティションと4つの ZFSパーティション、 それに Windows8.1のどれでも grubメニューから起動できるだけではなく、4つ のZFSパーティションにあるgrubの間の「はしご」、つまり一つの grubから別の grubへの乗り移りができます。 これにはちょっと補足の説明が必要かも知れませんね。GRUBP20.EFI は ada0p20 を起動した状態で grubの設定をやった時にefiパーティションに作られる BOOTX64.EFIをコピーしたのものです。GRUB21.EFIなども同様にして作ったもの です。 PCBSD10.3 では grub関係の package は # pkg info |grep grub grub2-efi-2.02_15 Multiboot EFI boot loader grub2-pcbsd-2.02q_8 Multiboot boot loader ということになっていて、UEFIモードで起動した ZFS上のgrub の設定をやると、 grub.cfg と custom.cfg は/boot/grub の中に取られ、 efi パーティションの 中の/EFI/BOOT/BOOTX64.EFI が更新されます。ここらへんは grub2 とは言って も、普通の設定ではないかも知れませんが、ともかく、PCBSD+上のパッケージ ではそうなります。そのため、別のZFSパーティションにある grub とは、 grub.cfg とcustom.cfg については干渉せず、ただ BOOTX64.EFI は同じ場所を 使う設定になります。ですからそれぞれの設定で作成される BOOTX64.EFI を名 前を変えておいてchainload する仕掛けを作っておくと、それぞれの grub の間 で「はしご」ができてしまうわけです。(上記二つのpackages を UFS上の PCBSD で設定するとどうなるか試していませんが、まあそんなに違わないでしょう。) ついでに PCBSD10.2の /boot/boot1.efi(元祖FreeBSD10.2でも同じ)を BOOT102.EFI という名前で efi パーティションに入れておいてchainload すれ ば /boot/boot1.efi の動作確認もできます。野中さんパッチの boot1.efi も BOOTNONA.EFI として入れました。 野中さんの blog には、「Ubuntu のGrub2-efi はFreeBSD11.0Rのzfsパーティショ ンを認識しない」とありますが、私が上にようにして作った GRUBP20.EFIを Ubuntuの grub から chainload して、そこからFreeBSDのZFSを起動することは 難なくできると思います(Ubuntuは使ったことないですが)。従ってUEFIマシンの ディスク上に Ubuntu と FreeBSD zfs を共存させて grub で選択起動すること はたいして難しくないように思います。 また「FreeBSDのGrub2にはUbuntuのupdate-grubのように設定ファイルをEFIパー ティションにコピーする便利なコマンドがありません」とありますが、PCBSDで は # grub-mkconfig -o /boot/grub/grub.cfg とやると Generating grub configuration file ... テーマを見つけました: /boot/grub/themes/pcbsd/theme.txt 完了 Installing GRUB to ada0 と表示されて、 grub.cfg と /EFI/BOOT/BOOTX64.EFI の更新をやってくれます。 /boot/grub/custom.cfg は手で編集しても大丈夫です。 以上、一般の UEFI モードのマシンでも通用する話と思います。 なお、 TOSHIBA dynabookN51で Windows以外の OSを起動するにはちょっとした ワザが必要ですが、それは [FreeBSD-users-jp 95917] に書いたので、繰り返し ません(今読み直すと間違った説明が混じってはいますが)。 ---- 私が dynabookN51 で使っている custom.cfg menuentry "loader.efi of ada0p7 (rfs0, PCBSD10.3 UFS)" { insmod ufs2 insmod chain set root=(hd0,7) chainloader /boot/loader.efi } menuentry "loader.efi of ada0p8 (rfs1 PCBSD10.3 UFS)" { insmod ufs2 insmod chain set root=(hd0,8) chainloader /boot/loader.efi } menuentry "loader.efi of ada0p20 (tank110, TrueOS11.0JUNE2016 zfs)" { insmod zfs insmod zfsinfo insmod chain set root=(hd0,20) zfsinfo (hd0,20) chainloader /ROOT/initial@/boot/loader.efi } menuentry "Chainload GRUB on ada0p20(PCBSD11.0JUNE2016)" { insmod chain set root='(hd0,2)' chainloader /EFI/BOOT/GRUBP20.EFI } menuentry "Chainload GRUB on ada0p21(TrueOS11.0JULY2016)" { insmod chain set root='(hd0,2)' chainloader /EFI/BOOT/GRUBP21.EFI } menuentry "Chainload GRUB on ada0p22(PCBSD 10.3)" { insmod chain set root='(hd0,2)' chainloader /EFI/BOOT/GRUBP22.EFI } menuentry "Chainload GRUB on ada0p23(PCBSD 10.3)" { insmod chain set root='(hd0,2)' chainloader /EFI/BOOT/GRUBP23.EFI } menuentry "Chainload boot1.efi of FBSD10.3 modified by Nonaka" { insmod chain set root='(hd0,2)' chainloader /EFI/BOOT/BOOTNONA.EFI } menuentry "Chainload boot1.efi of FBSD10.2" { insmod chain set root='(hd0,2)' chainloader /EFI/BOOT/BOOT102.EFI } menuentry "Chainload boot1.efi of FBSD10.3 modified by Nonaka" { insmod chain set root='(hd0,2)' chainloader /EFI/BOOT/BOOTNONA.EFI } menuentry "Chainload boot1.efi of FBSD10.2" { insmod chain set root='(hd0,2)' chainloader /EFI/BOOT/BOOT102.EFI } menuentry "Chainload boot1.efi of FBSD10.3" { insmod chain set root='(hd0,2)' chainloader /EFI/BOOT/BOOT103.EFI } menuentry "Chainload boot1.efi of FBSD11.0" { insmod chain set root='(hd0,2)' chainloader /EFI/BOOT/BOOT110.EFI } menuentry "Chainload bootmgfw.efi of Windows" { insmod chain set root='(hd0,2)' chainloader /EFI/Microsoft/Boot/bootmgfw.efi } -------- 丸山直昌@統計数理研究所 _______________________________________________ freebsd-users-jp@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-users-jp To unsubscribe, send any mail to "freebsd-users-jp-unsubscr...@freebsd.org"