24 November 2014

Windows 8/XPのパーティションを別ディスクにコピー後、起動しない問題の修正

旅行などの時の持ち出し専用のDell mini 10vのハードディスクの入れ替えのため、LinuxでOSのパーティションをコピーしたところ、起動不能になった。

Windows XPの時は、回復コンソールからfixbootfixmbrコマンドを使ったものだが、Windows 8はほぼ自動化されていて便利…

Windows 8のブートローダを修復

Windows 8セットアップDVDで起動して、

20141124-win8re-01.jpg

セットアップ開始画面で、「コンピュータを修復する」を選ぶ

20141124-win8re-02.jpg

「トラブルシューティング」を選ぶ

20141124-win8re-03.jpg

「詳細オプション」を選ぶ

20141124-win8re-04.jpg

「自動修復」を選ぶ

自動的にブート構成データ(BCD)が修復される。ただし、LinuxのGRUB2がインストール済みのMBRは書き換わらない

Windows XPのBCDエントリを修復

Windows 8を起動して、管理者権限でコマンドプロンプトを開いて

bcdedit
Windows ブート マネージャー
——————–
identifier {bootmgr}
device partition=D:
path \bootmgr
description Windows Boot Manager
locale ja-JP
inherit {globalsettings}
default {current}
resumeobject {12345678-1234-1234-1234-1234567890123}
displayorder {ntldr}
{current}
toolsdisplayorder {memdiag}
timeout 30
 
Windows レガシ OS ローダー
————————
identifier {ntldr}
device undefined
path \ntldr
description Windows XP
 
Windows ブート ローダー
————————
identifier {current}
device partition=C:
path \Windows\system32\winload.exe
description Windows 8 Pro
locale ja-JP
recoverysequence {12345678-1234-1234-1234-1234567890123}
integrityservices Enable
recoveryenabled Yes
osdevice partition=C:
systemroot \Windows
resumeobject {12345678-1234-1234-1234-1234567890123}
bootmenypolicy Standard

赤で示した所が初期化されてしまっているため、ntldrが見つからなくなってしまっている。これを、書き換える。パーティションのドライブ名は、Windows 8が「C:」なので、「D:」とする。(実際は、XPのほうが若い番号のパーティションなのだが…)

bcdedit /set {ntldr} device partition=D: