無印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で接続して同じように対応できるはずです。

まぁ、そうそう無いことだとは思いますが、もし遭遇したら解決の足しになるかと思います。