読者です 読者をやめる 読者になる 読者になる

treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

(1/2)bcdeditコマンドはデュアルブートで役に立つ

PC バッチ・スクリプト

パソコンにWindowsを複数インストールして起動するOSを手動で制御したい、そう思った時に役に立つかもしれないTIPSです。
今日はbcdeditコマンドを使って手動で起動するOSを指定する方法についてご報告します。
※ 今回の操作について実施される場合は自己責任で行ってください。誤ったbcdeditの指定をしてしまうとOSが起動しなくなることにつながります。

以前にbcdbootコマンドでブートメニューを操作しました。

(1/2)ブート情報を操作する技術メモ - treedown’s Report

(2/2)ブート情報を操作する技術メモ - treedown’s Report

この記事ではトラブルシューティング的な内容でしたが、今回は

1台のPCに複数のWindowsをインストールして動作させている場合
のTIPSです。

良くあるWindowsの評価環境

Windowsの評価版を試用して、今使っているOS以外のOSを検証しなきゃいけない、となった時に、たいていの方はHyper-Vなどの仮想化されたOSを使うもんです。最近は便利になったもので概ね事足りるようになっています。
それでもデバイスの動作を検証しなきゃいけない時なんかは実機にOSをインストールして動作確認する必要が出てきます。例えばUSBの使用制限を仕掛けていて容易にUSBメモリを使えなくするようなセキュリティを掛けている、とか、暗号化ソリューションを使っていて本体のTPMを直接参照するような動きをするから実機以外で動作確認できない、みたいな、「実機ありき」の検証もいくつか存在しています。
別の(空いている)PCが使えればそれで検証すればいいのですが、そうもいかない、というとき、やっぱり今でも「デュアルブートで複数OS」というのは選択肢の一つです。
つまり、現在稼働しているWindows7やWindows8.1に追加でWindows10評価版をインストールして1台のPCにWindowsが複数存在する、という環境を用意しちゃうわけですね。

ブートを選びたい

例えばWindows10を追加でインストールする、このときPCではブート情報が書き換えられて、既存のWindows7や8.1のブート情報に追加してWindows10のブート情報が書き込まれることになります。
で、PC起動時に複数のWindowsの名称が表示されて、どっちを利用するかを選択するようになります。
本記事のリンクにある記事の時はHyper-V ServerとWindows Serverの選択方式でした

f:id:treedown:20161118140728p:plain

この選択画面は、後からインストールしたほうのOSがデフォルトとして優先的に選択されてしまいます。
いや、ちがう…、今まで使っていた普段使いしているWindowsを優先して起動したい…
そういう時にbcdeditの出番です。

bcdedit

コマンドプロンプトを管理者で実行してbcdeditと入力してコマンド実行してみましょう。
ブート情報が表示されます。
図:bcdedit実行例

f:id:treedown:20161207114846p:plain

例えばbcdeditを実行した結果で現状のブート情報以下のようになる、とします。

----------------------------------------------

Windows ブート マネージャー
--------------------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume5
description Windows Boot Manager
locale ja-JP
inherit {globalsettings}
integrityservices Enable
default {current}
resumeobject {8a673b9b-e6e5-11e3-92bf-966405542046}
displayorder {current}
{8a673b9c-e6e5-11e3-92bf-966405542046}
toolsdisplayorder {memdiag}
timeout 30
----------------------------------------------
この画面をスクロールしていくと…
※いるところだけ表記しています
----------------------------------------------

Windows ブート ローダー
--------------------------------
identifier {current}
device partition=C:
description Windows 7

 

Windows ブート ローダー
--------------------------------
identifier {8a673b9c-e6e5-11e3-92bf-966405542046}
device partition=D:
description Windows 8.1

----------------------------------------------

こんな感じで二つのOSの存在が確認できます。
二つのGUIDを記録しておく必要があります。ここではWindows 7がデフォルト起動、Windows8.1が評価版としてインストールしたサブOSとします。
次にOSの個別ブートローダーの欄、「identifier」の値に注目します。
Windows 7は「current」となっており、Windows8.1は「8a673b9c~」で始まるGUIDとなります。

これがいざデュアルブート側(ここではWindows8.1)をデフォルト起動に指定して実行すると表記が変わります。
----------------------------------------------
Windows ブート マネージャー
--------------------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume5
description Windows Boot Manager
locale ja-JP
inherit {globalsettings}
integrityservices Enable
default {current}
resumeobject {8a673ba1-e6e5-11e3-92bf-966405542046}
displayorder {current}
{8a673b9f-e6e5-11e3-92bf-966405542046}
toolsdisplayorder {memdiag}
timeout 30
----------------------------------------------
この画面をスクロールしていくと…
※いるところだけ表記しています
----------------------------------------------

Windows ブート ローダー
--------------------------------
identifier {8a673ba0-e6e5-11e3-92bf-966405542046}
device partition=D:
description Windows 7

 

Windows ブート ローダー
--------------------------------
identifier {current}
device partition=C:
description Windows 8.1

----------------------------------------------

Windows 7のidentifierが表示されるようになります。ここでは{8a673ba0-e6e5-11e3-92bf-966405542046}と表記されています。

こうしてWindows7を指定するためのGUIDが「8a673ba0~」で始まるGUID、Windows8.1を指定するためのGUIDが「8a673b9c~」で始まるGUIDということが分かります。

bcdeditで設定変更

いつもやっている手順で。
まずタイムアウト時間を短くして選択画面の表示時間を少なくします。

bcdedit /timeout 3

デフォルト30秒なのですが、上記コマンドを実行すると3秒で選択画面が終了しデフォルト指定のOSが起動するようになります。
次に「Windows ブート マネージャー」の「default」が「{current}」となっているので、currentであるWindows 7がデフォルト起動するようになっていますが、これをWindows8.1に切替ます。

bcdedit /default {8a673b9c-e6e5-11e3-92bf-966405542046}

Windows8.1のGUIDである「{8a673b9c-e6e5-11e3-92bf-966405542046}」を指定して上記コマンドを実行すると、PC起動時にはがWindows8.1が選択された状態でWindows ブート マネージャーメニューが起動してくるようになります。
元に戻すときは

bcdedit /default {8a673ba0-e6e5-11e3-92bf-966405542046}

とWindows7側のGUIDを指定することによって、再びWindows7がデフォルト選択された状態でWindows ブート マネージャーメニューが起動してくるようになります。

デフォルト選択された状態を変更するには、bcdeditコマンドに「/default」オプションを付けてどのOSをデフォルト選択するか(勝手に起動させるOSにするか)をGUIDで指定するという原理です。

つづく

ここまでを踏まえまして、次に続きます。
次はリモートデスクトップでデュアルブートのPCを使う場合のTIPSです。