[FreeBSD-users-jp 95971] Re: Dual boot on dynabookN51(その4 -- UEFIファームウェア)
丸山直昌
maruyama @ ism.ac.jp
2016年 9月 21日 (水) 00:51:35 UTC
統計数理研究所の丸山です。
昨日はこの Subject でかなり長い記事を書きましたが、要約すると、
TOSHIBA dynabookN51 では以下のような【変則デュアルブート】しかできない、
というのが私の結論です。
【変則デュアルブート】
1. 電源を入れると「Windowsブートマネージャー」と題するラインモードのメ
ニューが現れ、
Windows 8.1
Windows Recovery
の二つアイテムが現れる。ここで Windows 8.1 を選択すればWindows8.1が
立ち上がるが、ESCキーを押す(画面のやや下の方、右には「Esc=キャンセル」
と表示されている)と
2. 画面が一度消えて、その後一瞬同じ「Windowsブートマネージャー」が表示さ
れるがすぐに消えて
(UTPケーブルが接続されていれば3へ、そうでなければ6へ)
3. 「 >> Start PXE over IPv6. 」と表示されて、十数秒でタイムアウト
4. 「 >> Start PXE over IPv4. 」と表示されて、十数秒でタイムアウト
5. 何故かもう一度「 >> Start PXE over IPv4. 」と表示されて、十数秒でタイ
ムアウト
6. gnu-grubのメニュー画面が表示され、PC-BSDが起動できる
そして、工場出荷のdynabookN51 をこの【変則デュアルブート】にする手順は
A. Windows を起動してWindows 領域を縮小して、PC-BSDを入れる空きをディス
ク上に作る
B. 高速スタートアップ無効、システム保護無効に設定する
(例えば http://d.hatena.ne.jp/msll/20150527/1432708323 参照)
C. Windowsの「コマンドプロンプト(管理者)」の窓で
bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 0
としておく
D. Windows をシャットダウンして、PC-BSD10.3のインストールメディアを使っ
て起動(USBメモリスティックなら、起動時に F12を数回押して、USB起動を選ぶ)
し、インストール作業を行う。その際、先月私が書いた
[FreeBSD-users-jp 95926] Dual boot on dynabookN51(その3 -- scfb driver)
の要領に従って作業する。
ということになります。(本当は手持ちの dynabookN51 を、リカバリディスクを
使って出荷状態と同等の状態にして確認すれば良いのですが、最早その気力はあ
りません。)
さて、以上の話はPC-BSDではなく、一般の FreeBSDでもできるかというと、勿論
できます。前にも書きましたが、上のステップDでefiパーティションに作られる
\BOOT\BOOTX64.EFI はbios-bootパーティションに書き込まれる gnu-grub を起
動するためのもので、ここを FreeBSD10.3 の /boot/boot1.efi で置き換えると、
gnu-grub を経由せずにfreebsd-zfs あるいは freebsd-ufs のパーティションに
ある FreeBSDを起動できます。実際私の dynabookN51は
[root @ surya{59}] ~# gpart show
=> 34 976773101 ada0 GPT (466G)
34 2014 - free - (1.0M)
2048 2097152 1 bios-boot (1.0G)
2099200 204800 2 efi (100M)
2304000 262144 3 ms-reserved (128M)
2566144 164506897 4 ms-basic-data (78G)
167073041 7 - free - (3.5K)
167073048 10485760 10 freebsd-ufs (5.0G)
177558808 83886080 11 freebsd-ufs (40G)
261444888 119537664 - free - (57G)
380982552 209577984 8 freebsd-zfs (100G)
590560536 4096000 9 freebsd-swap (2.0G)
という状態に今なっていて、FreeBSD10.3の/boot/boot1.efi(=PC-BSD10.3の
/boot/boot1.efi)をefiパーティションの\BOOT\BOOTX64.EFIにコピーしておくと、
grubを経由せずに partition 8 の freebsd-zfs を直接起動します。
ここで面白いことに気がついたのですが、/boot/boot1.efi は 10.3 と10.2では
若干機能が違っていますね。
10.2: typeが freebsd-ufs のパーティションの中で番号が一番若いものを起動
する
10.3: typeが freebsd-ufs または freebsd-zfsのパーティションの中で番号が
一番若いものを起動する
(ここでは「パーティションの番号が一番若い」であって、「領域が先頭に近い」
ではありません。)実際、私の dynabookN51 ではpartition 8にもpartiton
10,11(/ と /usr) にもPC-BSD10.3 を入れてありますが、10.2の
/boot/boot1.efi を使うと partition 10,11 の freebsd-ufsが、 10.3の
/boot/boot1.efi を使うと partition 8 の freebsd-zfs が起動されます。
[maruyama @ surya{45}] ~% ls -alg /boot/efi/EFI/BOOT/
total 342
drwxr-xr-x 1 root wheel 1024 May 26 20:07 .
drwxr-xr-x 1 root wheel 1024 Aug 22 2015 ..
-rwxr-xr-x 1 root wheel 33811 Aug 13 2015 BOOT102.EFI
-rwxr-xr-x 1 root wheel 74833 Mar 31 23:33 BOOT103.EFI
-rwxr-xr-x 1 root wheel 33811 Aug 13 2015 BOOTX64.EFI
-rwxr-xr-x 1 root wheel 202752 Aug 17 14:38 GRUB.EFI
もし元祖 FreeBSDを dynabookN51にインストールして【変則デュアルブート】
にしたいのであれば、上記インストールステップのDを
D'. Windows をシャットダウンし、FreeBSD10.3のインストールメディアを使っ
て起動してインストール作業を行う。終わったら、インストールメディアの
/boot/boot1.efi をefiパーティションの\BOOT\BOOTX64.EFIにコピーする
とすれば良いでしょう。
なお、【変則デュアルブート】の6は、この場合
6'. FreeBSDが起動する
となります。
次の関心事は、これは dynabookN51だけの話か?という問題です。
昨日書いたように、「Windowsしか起動できない/させない」という方針で作られた
(変形)UEFIファームウェアを搭載したPCは他にもあるようですが、そのようなPCで
1〜6のような【変則デュアルブート】ができるか、という問題です。
UEFIブート構成データの {bootmgr} のところを見ると
identifier {bootmgr}
device partition=\Device\HarddiskVolume2
path \EFI\Microsoft\Boot\bootmgfw.efi
となっていますが、この path で指定された bootmgfw.efi をWindows の
C:\Windows\Boot\EFI\bootmgfw.efi と diff で比べると完全に一致します。従っ
て \EFI\Microsoft\Boot\bootmgfw.efi はマイクロソフト提供のもので、ハード
ウェアのベンダーには依存しないものでしょう。このことから判断して、【変則
デュアルブート】の最初のステップ1で、画面のやや下の方、右に「Esc=キャン
セル」と表示されるところまでは機種にかかわらず同じではないかと想像してい
ます。ここでESCを押すとbootmgfw.efi が「終了する」ということだろうと思い
ますが、その次に起ることはUEFIファームウェアの実装依存、ということだろう
と思います。
私はUEFIブートのマシンをdynabookN51以外には持っていないので、このように
想像することしかできませんが、これは実験してみる価値があることだろうと思
います。どなたかやってみて結果をお知らせくだされば幸いです。
--------
丸山直昌@統計数理研究所
freebsd-users-jp メーリングリストの案内