[FreeBSD-users-jp 95585] Re: Windows 8.x と PCBSDのマルチブート(geom と boot code)
Shin-ya Murakami
murashinln @ gmail.com
2015年 8月 10日 (月) 05:15:21 UTC
村上真也@宇宙研 です。
# 購読しているメールアドレスと違うメールアドレスを使って
# 送ってしまったので配送されなかったみたいなので、再送します。
私はLet's Note SX4にWindowsを残したままFreeBSDをインストールしました。
その記録は http://d.hatena.ne.jp/msll/20150527/1432708323 にあります。
# UEFI関係の手順はtakawataさんのと同じです
>> そして、EFIパーティションをmountして
>> /usr/obj/usr/src/sys/boot/amd64/boot1.efi/boot1.efiを
>> ${EFIMOUNT}/EFI/FreeBSD/Boot/bootx64.efi
>> にコピーします
>
> ここは /boot/boot1.efi ってものが最近の distribution にはあるので、自分
> でコンパイルする必要はないし、また上記の手順で PCBSDをインストールした場
> 合には /boot/efi/EFI/Boot/bootx64.efi があるので、これをこのまま使うべき
> と判断しました。
この判断が疑わしいのではないかと思いました。
私がやったのは、インストール中にシェルを起動して、
USBメモリにboot1.efiをコピーしておいて、それをWindowsから書いてやる、
ということでした。
# マウントされているならPCBSD側から書いてやることもできそうですね。
> で、この /EFI/Boot/bootx64.efi は /boot/grub/x86_64-efi/core.efiと完全に
> 同じものになっています。
私はFreeBSDでgrubは使ってないのでよくわからないのですが、
/boot/efi/EFI/Boot/bootx64.efiはブートセレクタの
アプリケーションなのかなと思いました。
FreeBSDのboot1.efiは別途インストールする必要があるのではないか?
というのが私の意見です。
もしお時間があればお試し下さい。
From: maruyama at ism.ac.jp (丸山直昌)
Date: Mon, 10 Aug 2015 13:41:04 +0900
> 統計数理研究所の丸山です。
>
> Windows 8.x と PCBSDのマルチブートがうまくできなくて思案しております。こ
> の件、今年3月にお尋ねして、
>
> Date: Tue, 03 Mar 2015 21:01:48 +0900
> From: Takanori Watanabe <takawata at init-main.com>
> Subject: [FreeBSD-users-jp 95488] Re: geom と boot code
>
>>ここにも前に投稿しましたけど、その内容ちょっとここに書きました。
>>http://qiita.com/takawata19/items/3d1fb96cfde4f1626e3c
>
> というお答えを頂いきましたが、最近やっと実験できる環境ができて、やってみ
> ましたが、うまくできません。
>
> ちょっと長くなりますが、状況を以下に説明します。
>
> 使ったマシンは
>
> 東芝 dynabook N51
> 型番: PN51NGP-NHA
> Model No: PSKVLN-00300F
>
> というノートパソコンで、工場出荷時には当然 UEFIブートの設定がされて
> Windows8.1が動きました。PCBSDのインストーラーが UEFIブートには対応してい
> ないため、起動設定をCSMブート(昔流のBIOSインターフェースを前提とする起動
> 方法)に一時的に変更する必要がありますが、そのための設定画面を表示させる
> 方法は
>
> http://dynabook.com/assistpc/faq/pcdata2/015740.htm
>
> に書いてありますのでここでは省略します。
>
> インストール作業にはPCBSD10.2-RC1-08-04-2015-x64-DVD-USB.isoを使いました。
> まず出荷時のdynabookのディスクの状態ですが、
>
> # gpart show ada0
> => 34 976773101 ada0 GPT (466G)
> 34 2014 - free - (1.0M)
> 2048 2097152 1 !de94bba4-06d1-4d40-a16a-bfd50179d6ac (1.0G)
> 2099200 204800 2 efi (100M)
> 2304000 262144 3 ms-reserved (128M)
> 2566144 836249600 4 ms-basic-data (399G)
> 838815744 104857600 5 ms-basic-data (50G)
> 943673344 33098475 6 !de94bba4-06d1-4d40-a16a-bfd50179d6ac (16G)
> 976771819 1316 - free - (658K)
>
> という状態でした。(これはインストーラーの emergency shell を起動して
> gpart コマンドで見ました。)
>
> Windows8.1のディスク管理機能を使って 399Gの Windows8.1領域を縮小します。
> その方法は例えばPCBSDのハンドブック
> (http://download.pcbsd.org/iso/10.1-RELEASE/amd64/docs/html/pcbsd.html)
> の2.3節あたりに書いてあるので、ここでは省略します。ともかくPCBSDをインス
> トールするための空きを作ります。
>
> => 34 976773101 ada0 GPT (466G)
> 34 2014 - free - (1.0M)
> 2048 2097152 1 !de94bba4-06d1-4d40-a16a-bfd50179d6ac (1.0G)
> 2099200 204800 2 efi (100M)
> 2304000 262144 3 ms-reserved (128M)
> 2566144 416419840 4 ms-basic-data (199G)
> 418985984 419829760 - free - (200G)
> 838815744 104857600 5 ms-basic-data (50G)
> 943673344 33098475 6 !de94bba4-06d1-4d40-a16a-bfd50179d6ac (16G)
> 976771819 1316 - free - (658K)
>
> となり、この状態で、インストール作業を行います。「UEFI起動」の指定をして
> インストールするのですが、現在PCBSD10.2-RC1-08-04-2015-x64-DVD-USB.isoが
> デバッグ中で、ちょっとおかしな挙動もあり、ころころ修正されるので、ここで
> はインストール方法の詳細は省略します。ともかくインストール作業を行って
>
> => 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 416419840 4 ms-basic-data (199G)
> 418985984 415498240 7 freebsd-zfs (198G)
> 834484224 4096000 8 freebsd-swap (2.0G)
> 838580224 235520 - free - (115M)
> 838815744 104857600 5 ms-basic-data (50G)
> 943673344 33098475 6 !de94bba4-06d1-4d40-a16a-bfd50179d6ac (16G)
> 976771819 1316 - free - (658K)
>
> となります。空き領域に p7(freebsd-zfs, 198G)とp8(freebsd-swap, 2G)が作ら
> れます。またp1の名称がインストール作業前と変わっていることに注意してくだ
> さい(多分grub がインストールされたものと思います)。
>
> これで、一応 Windows8.1 と PCBSD9.2(RC1 2015/8/4)の両方がディスクに入り、
> どちでも起動できるようになるのですが、面倒なことにこれだけでは、UEFI起動
> モードではWindows8.1が立ち上がり、CSMブートモードではPCBSDが立ち上がる、
> という状態になります。つまりWIndows8.1と PCBSDを切り替えるのにrebootの他
> にBIOS設定変更によるブートモードの変更も必要ということになります。
>
> で、ここからがこの記事の本題、 UFEIブートメニューの変更です。
>
> From: Takanori Watanabe <takawata at init-main.com>
> Subject: [FreeBSD-users-jp 95488] Re: geom と boot code
>
>>ここにも前に投稿しましたけど、その内容ちょっとここに書きました。
>>http://qiita.com/takawata19/items/3d1fb96cfde4f1626e3c
>
> に書いてことを試みたのですが、うまくゆきません。
>
> まず、
>
> [Windows8.1上]
> mountvol e: /S
>
> はできます。これは
>
> [PCBSD上]
> mount_msdosfs /dev/ada0p2 (マウントポイント)
>
> と同じことで、上記のPCBSDインストール直後の状態では
>
> % glabel status
> Name Status Components
> gpt/Basic%20data%20partition N/A ada0p1
> label/efibsd N/A ada0p2
> ntfs/TI31362500C N/A ada0p4
> ntfs/Data N/A ada0p5
> ntfs/Recovery N/A ada0p6
> label/swap0 N/A ada0p8
>
> で /etc/fstab に
>
> /dev/label/efibsd /boot/efi msdosfs rw 0 0
>
> という行があるので、つまりは /boot/efi にマウントされています。
> で中身はどうなっているかというと
>
> [pcadmin at surya] ~% ls -alg /boot/efi
> total 5
> drwxr-xr-x 1 root wheel 1024 1月 1 1980 .
> drwxr-xr-x 10 root wheel 54 8月 9 19:24 ..
> drwxr-xr-x 1 root wheel 1024 12月 26 2014 EFI
> [pcadmin at surya] ~% ls -alg /boot/efi/EFI
> total 5
> drwxr-xr-x 1 root wheel 1024 12月 26 2014 .
> drwxr-xr-x 1 root wheel 1024 1月 1 1980 ..
> drwxr-xr-x 1 root wheel 1024 12月 26 2014 Boot
> drwxr-xr-x 1 root wheel 1024 12月 26 2014 Microsoft
> drwxr-xr-x 1 root wheel 1024 12月 26 2014 Toshiba
> [pcadmin at surya] ~% ls -alg /boot/efi/EFI/Boot
> total 194
> drwxr-xr-x 1 root wheel 1024 12月 26 2014 .
> drwxr-xr-x 1 root wheel 1024 12月 26 2014 ..
> -rwxr-xr-x 1 root wheel 196608 8月 7 23:20 bootx64.efi
>
> で、この /EFI/Boot/bootx64.efi は /boot/grub/x86_64-efi/core.efiと完全に
> 同じものになっています。
>
> [pcadmin at surya] ~% ls -alg /boot/grub/x86_64-efi/ |grep 196608
> -rw-r--r-- 1 root wheel 196608 8月 8 08:20 core.efi
> -rw-r--r-- 1 root wheel 196608 8月 8 08:20 grub.efi
> [pcadmin at surya] ~% diff /boot/efi/EFI/Boot/bootx64.efi /boot/grub/x86_64-efi/core.efi
> [pcadmin at surya] ~%
>
> で、Takanori Watanabe さんの上記
> http://qiita.com/takawata19/items/3d1fb96cfde4f1626e3c
> に沿って話を進めると、
>
>> そして、EFIパーティションをmountして
>> /usr/obj/usr/src/sys/boot/amd64/boot1.efi/boot1.efiを
>> ${EFIMOUNT}/EFI/FreeBSD/Boot/bootx64.efi
>> にコピーします
>
> ここは /boot/boot1.efi ってものが最近の distribution にはあるので、自分
> でコンパイルする必要はないし、また上記の手順で PCBSDをインストールした場
> 合には /boot/efi/EFI/Boot/bootx64.efi があるので、これをこのまま使うべき
> と判断しました。
>
>>そして、Windowsでbcdedit /copy {bootmgr} /d "FreeBSD"
>> として、得られたUUIDをメモして
>>
>> bcdedit /set {得られたUUID} path \EFI\FreeBSD\Boot\bootx64.efi
>> とします。
>>
>> そのあと
>> bcdedit /set {fwbootmgr} displayorder {得られたUUID} /addlast
>> とします。
>> それで、リブートしてF12を押すとブートメニューにFreeBSDという
>> アイテムが出てきます。
>> これを選ぶとHDDのEFI上のboot1からFreeBSDがあがるはずです。
>
> C:\Windows\system32>bcdedit /copy {bootmgr} /d "PCBSD"
> エントリは {29e071aa-3dee-11e5-826b-d07e35754deb} に正常にコピーされまし
> た。
>
> C:\Windows\system32>bcdedit /set {29e071aa-3dee-11e5-826b-d07e35754deb} path \EFI\Boot\bootx64.efi
> この操作を正しく終了しました。
>
> C:\Windows\system32>bcdedit /set {fwbootmgr} displayorder {29e071aa-3dee-11e5-86b-d07e35754deb} /addlast
> この操作を正しく終了しました。
>
> となりましたが、何の変化もありませんでした。 /Boot/bootx64.efi を
> /FreeBSD/bootx64.efi や /FreeBSD/Boot/bootx64.efi に変えたりして色々実験
> しましたが、すべてうまくゆきません。だいたい
>
> bcdedit /enum
>
> の出力に何の変化もないのがどうも納得ゆきません。何か重要なステップが抜け
> ているように思います。
>
> どなたかお助けを!
>
> --------
> 丸山直昌@統計数理研究所
> _______________________________________________
> freebsd-users-jp at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-users-jp
> To unsubscribe, send any mail to "freebsd-users-jp-unsubscribe at freebsd.org"
----
Shin-ya Murakami
email: murashin at gfd-dennou.org
WWW: http://www.gfd-dennou.org/member/murashin/
freebsd-users-jp メーリングリストの案内