今日はデュアルブート環境でブート情報を操作することがあったので、その時の備忘録をご報告します。
簡単に言うとbcdbootコマンドを使ってブートメニューを表示させる方法です。
発端
何かの拍子にデュアルブートしていたコンピュータのOSブートメニューが減ってしまいました。
いつもは、
図:いつものブートメニュー
このような感じでHyper-V ServerとWindows Serverの二つが表示されているはずが、
図:問題発生時
Windows Serverの表記が消えてしまいました。
ちなみに対処しているときにはHyper-V Serverが消えた、というのもあります。
構成
このPCでは内蔵ドライブにHyper-V ServerのOSをインストールし、c:\の特定フォルダにVHDを用意してWindows ServerをVHDブートしている、という環境です。
図:構成図
要するに評価版の検証目的なのでVHDブートで評価期間終了後はVHDを消して環境をきれいにできる、という狙いなのですが、こうデュアルブートしているとブート項目がなくなっちゃった、という状況です。
前提条件
これ以降の操作手順はどっちの手順においても、Windowsのシステム回復メニューから詳細オプションでコマンドプロンプトを選択して起動します。
図:回復メニューのコマンドプロンプト
この画面での操作、という前提で。
復旧その1
復旧その1は通常の内蔵ドライブにインストールしていたOSが表示からなくなった場合です。VHDブート側のOSは表記が残っているが内蔵ドライブにインストールしたOSの表記が消えてしまった、という場合。
ここの例では内蔵ドライブにインストールしていたのはHyper-V ServerというOSの方です。
この場合は実に簡単でして、、、
diskpartコマンドでディスクの状況を見ます。
--------------------------------------------------------------
DISKPART> list disk
ディスク 状態 サイズ 空き ダイナ GPT
### ミック
------------ ------------- ------- ------- --- ---
ディスク 0 オンライン 119 GB 46 B
DISKPART> list volume
Volume ### Ltr Label Fs Type Size Status Info
---------- --- -------------------- ---- ---------- ------- --------- --------
Volume 0 C システムで予約済み NTFS Partition 350 MB 正常
Volume 1 E NTFS Partition 72 GB 正常
DISKPART>exit
--------------------------------------------------------------
ここまでで、どういう状況か確認できたので、復旧させるためのコマンドを入れ込みます。
どうやらVHDブート側のOSパーティションは表示されないようで、混乱せずに済みました。
対象の(消えた)OSはEドライブとして認識しています。72 GBの容量のボリュームです。ここにWindowsフォルダが存在しています。ブート構成情報はCドライブに格納されています。つまり、CドライブにEドライブから起動するためのOS情報を書き込んでやることで、OSのブートメニューが元に戻ることになります。
----------------------------------------------
> bcdboot E:\windows /l ja-jp /s c:
----------------------------------------------
これだけを実行すればOKです。bcdbootコマンドで「E:\windows」にあるOS起動ファイルたちを使って起動するOS、という情報を/sオプションでcドライブに書込みしています。/lオプションでja-jpを指定するのは、指定しないとブートメニューがデフォルトのままで実行することで英語画面になってしまうため、です。
次のVHDブートメニューは
明日に続きます。