Image: UEFI環境のWin8(GPT)とWin7(MBR)でデュアルブートを組む

UEFI環境上のGPTディスクにインストールしたWindows 8とMBRディスクにインストールしたWindows 7のデュアルブートを組む。GPTとMBRのディスクが同居する環境なんてそう無いと思うけど。

前の休日にWin8をインストールしてから、もともとMBRディスクにインストールしておいたWin7とデュアルブートを組めないものかと、bcdedit /createコマンドを駆使したりと試行錯誤していたが、うまくいかず断念。まあ、当然UEFI-BIOSのブートメニューで起動するディスクを選択すれば簡単なことは知っていましたが、F8キーを押すタイミングを合わせたりとか面倒。
ところが、今日になってbcdbootコマンドの存在を知り、これを実行したところデュアルブートを組むことに成功したので、その方法を紹介します。

○ディスクの構成とデュアルブートを組むドライブ文字を確認する。

コントロールパネルからディスクの管理ツール(ハードディスクパーティションの作成とフォーマット)を開いて、ディスクの構成を確認。ブートメニューに追加するWindowsのドライブ文字を覚えておく。もしドライブ文字が割り当てられていなければ、設定しておきます。

今回はGPTディスクのCドライブにインストールしたWindows 8と、MBRディスクのGドライブにインストールしたWindows 7とでデュアルブートを組んで、Windows 8をメインにします。Windows 8はEFIブートローダーで、Windows 7はBIOSブートローダーを使用しています。

○ブートメニューにOSを追加する。

まず、コマンドプロンプトを管理者権限で起動します。Windows 8の場合は検索画面のアプリからコマンドプロンプトを右クリックして「管理者として実行」をクリックします。

万が一のためBCDストア(ブート構成データストア)をバックアップしておきます。「bcdedit /export [ファイルパス]」コマンドを実行します。BCDストアを復元するときは「bcdedit /import [ファイルパス]」を実行します。

まずは「bcdboot G:\Windows /l ja-JP」を実行します。ここでのGはブートメニューに追加したいWindowsがインストールしてあるドライブ文字を指定します。

これだけでデュアルブートの設定は終わりなのですが、このままだとGドライブ(Windows 7)がデフォルトで起動します。そこで「bcdboot C:\Windows /l ja-JP」を実行します。これによって現在のCドライブ(Windows 8)がデフォルトになります。
スイッチを付けずに「bcdedit」を実行すると現在のBCDストアのエントリを表示できます。

以下は実行例。

$ bcdedit

Windows ブート マネージャー
--------------------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume3
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  ja-JP
inherit                 {globalsettings}
default                 {default}
resumeobject            {27f0d13e-27f4-11e2-b00f-b0b4396c3065}
displayorder            {default}
toolsdisplayorder       {memdiag}
timeout                 30

Windows ブート ローダー
--------------------------------
identifier              {default}
device                  partition=C:
path                    \Windows\system32\winload.efi
description             Windows 8
locale                  ja-JP
inherit                 {bootloadersettings}
recoveryenabled         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \Windows
resumeobject            {27f0d13e-27f4-11e2-b00f-b0b4396c3065}
nx                      OptIn
bootmenupolicy          Standard

$ bcdedit /export c:\bcdstore.bak
この操作を正しく終了しました。

$ bcdboot G:\Windows /l ja-JP
ブート ファイルは正常に作成されました。

$ bcdboot C:\Windows /l ja-JP
ブート ファイルは正常に作成されました。

$ bcdedit

Windows ブート マネージャー
--------------------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume3
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  ja-JP
inherit                 {globalsettings}
default                 {default}
resumeobject            {bd84eedf-298c-11e2-be8c-5404a6c337ff}
displayorder            {default}
                        {bd84eede-298c-11e2-be8c-5404a6c337ff}
toolsdisplayorder       {memdiag}
timeout                 30

Windows ブート ローダー
--------------------------------
identifier              {default}
device                  partition=C:
path                    \Windows\system32\winload.efi
description             Windows 8
locale                  ja-JP
inherit                 {bootloadersettings}
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \Windows
resumeobject            {bd84eedf-298c-11e2-be8c-5404a6c337ff}
nx                      OptIn
bootmenupolicy          Standard
detecthal               Yes

Windows ブート ローダー
--------------------------------
identifier              {bd84eede-298c-11e2-be8c-5404a6c337ff}
device                  partition=G:
path                    \Windows\system32\winload.efi
description             Windows 7
locale                  ja-JP
inherit                 {bootloadersettings}
osdevice                partition=G:
systemroot              \Windows
resumeobject            {bd84eedd-298c-11e2-be8c-5404a6c337ff}
nx                      OptIn
detecthal               Yes

起動対象のディスクがMBRであるにも関わらずwinload.efiになっているのが謎。BCDストアのことがさらにわからなくなってきた。今回はWindowsインストール時にデュアルブートが組まれなかったけど、ディスクやブートローダーの種類を統一すれば、Windowsインストール時に自動でデュアルブートが組まれるのだろうか。

ブートメニューの項目の名前を変えるには、「bcdedit /set [変更対象のID] description [名前]」を実行します。

こちらのページによれば、UEFIファームウェアによってはUEFIからMBRのブートができない場合があるようです。

○ブートメニューから項目を削除する。

ブートメニューからエントリを削除するには「bcdedit /delete [削除対象のID]」を実行します。オペレーティングシステムの選択画面を出さないようにするには「bcdedit /timeout 0」を実行します

○関連ページ

 


旧ブログでのコメント

AUTHOR: ゆきちゃん
URL:
DATE: 2014/01/24 21:09:22
マザーまたはメーカー?
はじめまして、Win7とWin8のデュアルブート調査中に、こちらのHPを見つけました、無事デュアル環境構築おめでとうございます、当環境構築時の、「メーカーPC」または「マザーボードメーカ」の情報があるとうれしいのですが!!

AUTHOR: cal
URL:
DATE: 2014/01/27 14:51:03
Re: マザーまたはメーカー?
コメントありがとうございます。
構成はこちらに上げているとおり、組立PCです。
https://diarywind.com/blog/e/g13_402_pc3.html
現在はWin7を使っていないので、補足説明を求められても答えられないかもしれませんが。

AUTHOR: ゆきちゃん
URL:
DATE: 2014/01/31 09:34:21
ありがとうございます
PC情報ありがとうございます。
強力なPCをお使いで、うらやましいです。


※コメント欄が表示されない場合はdisqusについてJavascriptが有効であることを確認して下さい。コメントはスパム防止フィルターによる承認制のため、投稿してもすぐに反映されない場合があります。

管理人 : Akamaki (akm)

は、PCとVTuberに夢中になっている電気技術者です。

私はレトロコンピューティングの愛好家ですが、そのようなリグはもう収集していません。

私の活動はトップページで見ることができます。読んでくれてありがとう!