Windows XP から Windows 7 を起動してる場合に Windows 7 のドライブにMBRとブートローダーを作成して起動する方法。
状態
Windows XP をインストールしたパソコンに SSD を追加して Windows 7 をインストールした所、Windows 7 のブートマネージャが呼び出されるのだがこれはあくまで Windows XP がインストールされているドライブの MBR から呼び出されているだけで Windows 7 のドライブから起動しているわけではない。
目的
後々の事も考えて Windows 7 をインストールしたドライブから直接起動したい。Windows XP は BIOS の起動選択画面か Windows 7 の起動メニューから起動したい。
Cドライブから起動しているのをDドライブ(別のHDD)と入れ替えて起動したい。
但しここで取り上げる事例は
Windows 7 のインストールディスクから起動して修復を選んでもスタートメニューの修復では修復できない、OS 一覧にはそもそも何も表示されていない、そんな事例は探しても見つからなかった、
と言う(恐らく)深刻な事態である。色々インストールしてやっと環境が出来上がったのも束の間、もはやフォーマットして Windows7 を新規にインストールしてバックアップから復旧しようか、と言う所まで来ていた。(多分そうするとドライブレターがD:からC:に入れ替わる都合で起動しない)
その際、解決に至った手順を記しておく。
(通常は、Windows 7 のインストールディスクから起動して修復すれば起動する)
手順は次の通り。
1.パーティションをアクティブにする。
2.MBR (とブートマネージャー)を作成する。
3.BCD を作成する。
エラーメッセージはうまく撮影できなかった為、鉤括弧の部分「」はそんな感じの文章が表示される程度に思って読んで頂きたい。
1.パーティションをアクティブにする。
OS はどちらでも良いので起動したら「スタートメニュー」を開き「コンピューター」を右クリック、「管理」を選択。「コンピューターの管理」が開くので「ディスクの管理」を開いて Windows 7 のインストールされているパーティションを右クリックしてメニューからアクティブにする。
diskpart を使用する方法もあるがそんな面倒な事をしたい方は自分で調べて下さい。
2.MBR を作成する(システムドライブ以外は一旦外して下さい。)
Windows 7 のインストールディスクから起動して「修復」、左上のラジオボタンをクリックして次へ。「コマンドプロンプト」を起動する。
bootrec /FixBoot
bootrec /FixMbr
この状態だと NTLDR is Missing (だったような)。
その後、通常ならば bootrec でブートマネージャーを作成できる。
bootrec /ScanOs
[1] c:\Windows
bootrec /RebuildBcd
しかし、「システムデバイスが見つかりません。」と出て Bcd を作成できなかった。
どうするんだこれ。
既に bootrec で fix した後に bcdboot と bcdedit での作成は何故か失敗したので頭を悩ませていた。
3.BCD を作成する。
状況としては、
スタートアップの修復は失敗。
インストールされたウィンドウズの一覧が空。
bcdedit で /createstore しても /store bcd.temp /create で「デバイスが見つからない」と言われて空のストアに追加できない。
(GUIDはメモってあったのだが。単に /create の使い方を誤っていた可能性もあるがそれについてはこれ以上触れない)
この場合に bcd を作成するには bcdboot で作成する。
不要なドライブは一旦外して下さい。
Windows 7 のインストールディスクから起動して「修復」、左上のラジオボタンをクリックして次へ。「コマンドプロンプト」を起動する。
bcdboot c:\windows /l ja-JP
これだと「システムデバイスが見つかりません」と言われて作成できない。深刻である。
次の様に /s オプションでデバイスを選択する必要がある。
bcdboot c:\windows /l ja-JP /s c:
但しこの際に、元の起動ドライブ(例えば先に Windows XP が入っていたドライブ)が接続されていると BIOS の起動メニューでドライブを選択して起動してもブートマネージャーと BCD を作成出来ていても起動できない。
File: \BOOT\BCD
でエラーになる。
恐らくBCDのエントリを作成する際にXPのドライブがシステムドライブとして認識されるとそちらの情報が入るからだろう。
元の起動ドライブ(WindowsXP)を外してbcdboot し今ブートマネージャーとBCD を作ったドライブ(Windows7)で起動させると正常に起動できる。
起動したらWindows XPの入っていたドライブを接続して終了。BIOSで起動順を変更すれば良い。
使い方は bcdboot /? でわかるので、残りの /m オプションを調べて下さい。
以上
Windows XP (D:\) をブートメニューに追加するには bcdedit を使う。オプション /store でストアを指定しない場合は起動に使った BCD のストアを参照するので Windows 7 で通常起動したら「コマンドプロンプト」を右クリックし「管理者で実行」を選んで起動すると良い。勿論、聡明な皆様は bcdboot の直後に既に編集を行っている場合もあるだろう。
新しい ID={ntldr} でストアを作成する。ID は何でも良いのだが、今回は ntldr を一つしか使わないので {ntldr} とした。{nt52} でも良い。
bcdedit /create {ntldr} /d "Windows XP ブートローダー"
作成したストアのデバイスを設定する。
bcdedit /set {ntldr} device partition=D:
作成したストアを一覧の末尾に追加する。
bcdedit /displayorder {ntldr} /addlast
作成したストアを一覧に追加するまでは bcdedit と打ち込んでも表示されないので注意。
但し、Windows XPもWindows 7も起動ドライブだったのでこの方法でWindows XPを起動しようとしてもドライブレターがCにならないので起動できない。(bcdeditで適切なエントリを作成する方法があったら教えてください。)
以上
ついでに言うと、Windows XP から Windows 7 を起動していたので Windows XP のドライブのブートメニューを nt60 から nt52 に変更する事で、Windows XP のブートローダーを直接呼び出すことが出来るようになり、Windows 7 をインストールする前の状態に戻せる。
bootsect /nt52 sys
又は、ドライブレターを確認してから
bootsect /nt52 d:
このようなコマンドを打ち込む際は手違いを防ぐ為に不要なシステムドライブは外しておく事を推奨する。
オプション /force はドライブにロックをかけて排他的に使用することによって確実に変更するためのオプションである。
こちらの作業は以前行ったので(ブート領域を誤って削除する恐怖に脅えながら)安心して行える。
以上
余談だが、私はWindowsXPでSSDをフォーマットした。
WindowsXPでSSDをフォーマットするとパーティション開始オフセットがSSDで扱うには小さく、速度の低下を招く事がある。
WindowsXPでフォーマットする場合、diskpart.exeによるフォーマットが必要になる。
別途記事を書いたのでどうぞ。
WindowsXPでSSDをフォーマットする際にパーティション開始オフセットを手動で設定する(msinfo32)
参考リンク
Windows の起動に関する問題をトラブルシュートし、修復するには、Windows Recovery Environment の Bootrec.exe ツールを使用します。
http://support.microsoft.com/kb/927392/ja
BCDboot のコマンドライン オプション
http://technet.microsoft.com/ja-jp/library/dd744347%28v=ws.10%29.aspx
以前のバージョンの Windows オペレーティング システムをデュアルブート構成でインストールした後、Windows が起動しなくなる
http://support.microsoft.com/kb/919529/ja
Bootsect コマンド ライン オプション
http://technet.microsoft.com/ja-jp/library/cc749177%28v=ws.10%29.aspx
BCD
bcdeditでVista/Windows Server 2008のブートOSメニューを変更する
http://www.atmarkit.co.jp/fwin2k/win2ktips/1110bcdedit/bcdedit.html
その他、気になった情報
Windows 7が起動しなくなったので、ブートセクタを修復してみました
http://tipstour.net/windows/1545
Windows 7 のシステム回復オプションとは
http://windows.microsoft.com/ja-JP/Windows 7/What-are-the-system-recovery-options-in-Windows-7
MBRうっかり消しちゃって再作成が必要な事例 Windows 7編
http://thrownewnullpointerexception.hatenablog.com/entry/20091129/1259437329
install と bootloader(移転)
http://ftlabo.sakura.ne.jp/win/install-bootloader/install-bootloader.html
http://hrn25.sakura.ne.jp/win/install-bootloader/install-bootloader.html
win7 システムの修復(移転)
http://ftlabo.sakura.ne.jp/win/w7-system-repair/w7-system-repair.shtm
リンク・その他の「MBRうっかり消しちゃって再作成が必要な事例 Windows 7編」に辿り着いた元のページを忘れてしまったのだがそこらをすると普通は起動する。
MBR、ブートマネージャの作成。MBR、ブートローダー、ブートマネージャーを別のSSDHDDドライブに移す、移動。