無印WindowsXPの稼働中PCを仮想PCに移す(2) BSODからの復活
Acronis TrueImageとVirtualPC2007とVMWare Converterを駆使して、WindowsXPの物理マシンからVMWareで稼働可能なファイルが作成できました。
さて、どうなるかな?
仮想マシンで動かしてみます。
おぉ、動いている!!
と思った次の瞬間、Blue Screenが…..おい。
STOP:0x0000007Bのエラーが表示されています。
Blue Screen of Death(BSOD)って奴ですな。
調べてみたら、マイクロソフトのサポートに事例がありました。
「Windows XP のシステム ディスクを他のコンピューターに移動した後に STOP 0x0000007B エラーが表示される」
さて、これに書いてあるとおりに移行前のPCで設定をして、バックアップを取るとことができない状況なので、このBSODから復活させる方法を考えました。
すでに開発環境で使っている仮想PCのWindowsXPがあります。
これに、今回作った仮想ディスクをマウントさせて、レジストリ操作とファイルのコピーをしたらどうか。
まず、すでに手元にある仮想PCの設定で「追加」で今回移行した仮想ディスクを追加します。
そして、仮想PCを起動します。
追加したディスクが新しいドライブ(例えばE:とかF:とか)で見れるようになります。
なってなかったら、再起動してみください。
では、レジストリの設定をしましょう。
regedit でレジストリエディタを起動します。
HKEY_LOCAL_MACHINEをマウスで選択して、メニューのファイルから「ハイブの読み込み」を選択します。
ここでファイルを選択するのですが、追加した仮想ディスクのドライブにあるWindows\system32\configにあるsystemというファイルを選択します。
キー名を聞いてきますので、ここは適当に入力しますが日本語は止めておきましょう。
今回は、MOVEとしておきました
これで、仮想化したPCのレジストリがいじれます。
次に、先ほどのマイクロソフトサポートのページに書いてあるように、「********** ここからコピーします。**********」の部分を切り出して保存したMergeide.regを適用するのですが、このファイルを一部変更する必要があります。
キーが
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
になっていますが、今回ハイブの読み込みで取り込んだ先に反映させたいので、
HKEY_LOCAL_MACHINE\MOVE\ControlSet001
に変更します。
SYSTEMのままだと、今稼働している仮想PCに適用されてしまうので、先ほど名前を付けたMOVEに変えます。
CurrentControlSetは、あればそのままでも良いのですが、たぶん無いと思います。(一度も起動してないのでCurrentはないですから)
その場合、ControlSet001とControlSet002があるはずなので、ControlSet001に追加されるよう変更します。
これを一括置換したMergeide.regを右クリックして表示されるメニューの「結合」をします。
結合したら、メニューから「ハイブのアンロード」をしてレジストリ作業は終了です。
次はファイルの準備です。
追加したディスクのWindows\system32\Driversに以下の4ファイルがあるか確認します。
Atapi.sys
Intelide.sys
Pciide.sys
Pciidex.sys
なければ、WINDOWS\Driver Cache\i386にあるDriver.cab からファイルを抽出します。
コマンドで expand driver.cab -F:ファイル名 出力先 で抽出できます。
ここまで作業を終えたら、仮想PCはシャットダウンします。
そして、移行した仮想PCの電源をON!!
さて…今度はエラー無しで起動してきました。
PCが変わったので、ライセンス認証を要求されます。
ライセンス認証して起動してきました。
Windowsが稼働している実機同士の移行の場合は、ディスクを取り出してUSBで接続して同じように対応できるはずです。
まぁ、そうそう無いことだとは思いますが、もし遭遇したら解決の足しになるかと思います。