作成日: 2007/03/04

VMware の仮想マシンを Virtual PC に移行する

概要

Virtual PC 2007 が http://www.microsoft.com/japan/windows/virtualpc/default.mspx で公開されています。ホスト OS として Vista も対象となっていたので、さっそくダウンロードしてみたのですが、 ゲスト OS を新規にインストールし環境をゼロから構築するのが面倒で、 既存の VMware 上にインストールしてある仮想マシンを Virtual PC で利用できないかとネットを探していると、 http://searchservervirtualization.techtarget.com/tip/0,289483,sid94_gci1225164,00.html で VMware の仮想マシンを Virtual PC に移行する方法が紹介されていました。

以下では上記サイトで紹介されている方法を元に VMware の仮想マシンを Virtual PC に移行してみました。
なお、移行元は VMware 5.5.3 build-34685、移行先は Virtual PC 2007 (6.0.156.0)、 移行する仮想マシンのゲスト OS は Windows XP Professional SP 2、ホスト OS は Windows Vista です。

仮想ディスクの変換ツールのダウンロード

仮想ディスクの変換ツールを http://vmtoolkit.com/ からダウンロードします。 [VMDK(VMWare) to VHD Converter] というのが VMware の 仮想ディスクを Virtual PC 用に変換するツールです。 なお、ダウンロードにはアカウントが必要で、ページの右上にある [Join] から入るとアカウント作成ページがあります。

ダウンロードした Vmdk2Vhd-1.0.13.zip (2007年3月4日時点) を展開すると、VmdkConvert というフォルダが作成され、 その下に Vmdk2Vhd.exe と関連の dll が作成されます。

VmdkConvert フォルダに展開された Vmdk2Vhd.exe
ゲスト OS の仮想ディスク一式をコピーする

仮想ディスクの変換前にゲスト OS から VMware tools をアンインストールし、hal.dll、ntoskrnl.exe をデフォルトの状態に戻し、さらに、 いくつかのレジストリ値を変更しますので、失敗した時に備えオリジナルの仮想ディスクは別に取っておくことをお勧めします。

私の環境では、移行したいゲスト OS は [D:\My Virtual Machines\Windows XP Professional] 下に保存されていますので、 これを丸ごと [D:\My Virtual Machines\Windows XP Professional for Migrate] としてコピーし、コピーしたものを変換に使うことにしました。

コピーした仮想ディスク一式
ゲスト OS を起動する

VMware を起動してメニューから [ファイル] - [開く] を選び、 表示されるファイルダイアログで、さきほどコピーしたゲスト OS を指定します。 ゲスト OS が仮想マシンとして追加されたら、起動します。

※まったくの余談ですが、VMware 5 は Vista には正式対応していませんが、一応動きます。 ただ、私の環境では、ゲスト OS の初回起動時にほぼフリーズしたような状態が 2 分ほど続きます。 その後は普通に使えるのですが、、、原因は不明です。。。

コピーした環境を仮想マシンに追加する

UUID をどうするかたずられますので、適当に(?)答えてください。私は [既存の UUID を保存する] を選びました。

UUID をたずねられる
VMware tools をアンインストールする

ゲスト OS が起動したら、管理者としてログオンし、ゲスト OS 上から VMware tools をアンインストールします。

VMware tools をアンインストールする

VMware tools アンインストール後にシステムを再起動するかたずねられますので、[はい] をクリックして再起動してください。

再起動するかたずねられる
再ログイン後に表示される検索ウィザードをキャンセルする

再起動したゲスト OS に管理者としてログオンします。しばらくすると [新しいハードウェアの検出ウィザード] のメッセージボックスが表示されますが、[キャンセル] をクリックしてください。

新しいハードウェアの検出ウィザード

さらに、しばらく待っていると [システム設定の変更] のメッセージボックスが表示され、再起動するかたずねられますが、 [いいえ] をクリックしてください。

システムの再起動
hal.dll、ntoskrnl.exe をデフォルトの状態に戻す

ゲスト OS のインストール CD もしくはサービスパックを適用している場合サービスパックのインストールメディアから hal.dll、ntoskrnl.exe を展開してシステムの hal.dll、ntoskrnl.exe を上書きします。 私の環境では、ゲスト OS は XP の SP2 ですので、ゲスト OS 上で、SP2 のセットアッププログラムを起動し、 テンポラリとして展開されたファイルから hal.dll、ntoskrnl.exe を取得することにしました。

SP2 のファイルを展開中

ファイルの展開が終わると、[Windows XP Service Pack 2 セットアップウィザード] が起動しますので、 ウィザードを表示したまま、コマンドプロンプトを開いて、カレントディレクトリを [展開されたディレクトリ\i386] に移動します。ここではファイルが [C:\8b38ab821ac2815620a0eb45] に展開されましたので、 [C:\8b38ab821ac2815620a0eb45\i386] へ移動しています。
※セットアップウィザードをキャンセルしてしまうと、展開されたファイルが消されてしまう可能性がありますので、 表示したままにしてください。

Windows XP Service Pack 2 セットアップウィザード コマンドプロンプト

ここで、下記のコマンドを実行し、hal.dll と ntoskrnl.exe を展開して、システムにあるそれぞれのファイルを上書きします。

expand hal.dl_ %windir%\system32\hal.dll

expand ntoskrnl.ex_ %windir%\system32\ntoskrnl.exe

ファイルを展開する

展開が済んだら、コマンドプロンプトを閉じ、[Windows XP Service Pack 2 セットアップウィザード] をキャンセルしてください。 テンポラリとしての展開先ディレクトリはセットアップウィザードが終了する際に自動的に削除されるはずですが、 もし、セットアップウィザード終了後も展開先ディレクトリが削除されない場合、手動で削除して構いません。
※展開先ディレクトリをコマンドプロンプトやエクスプローラで開いているとウィザード終了後も削除されずに残ることがあるようです。

Virtual PC での起動時に問題になりそうなドライバを無効にする

VMware tools の残骸と思われるドライバのファイルがシステム内に残っており レジストリ上で無効になっていませんので、これらを無効にするため、紹介ページに掲載されているスクリプトを実行します。
※VMware 以外のドライバも含まれているようですが、詳細はよくわかりません。 ただ、少なくともいくつかのドライバをレジストリで無効として設定しています。 なお、紹介ページに掲載されている内容をファイルにしておきましたので、これをゲスト OS 上で展開して使ってください。

prepvm.zip (732 バイト)

展開した prepvm.vbs を実行すると、レジストリ値が変更された後 [The system is prepared for imaging and will now shutdown.] と書かれたメッセージボックスが表示され、 [OK] をクリックするとシャットダウンするらしいのですが、待てど暮らせどシャットダウンしない場合、 手動でシャットダウンしてください。

ドライバが無効にされ、シャットダウンする(はず)

仮想マシンがシャットダウンしたら、VMware も終了してください。

仮想ディスクを変換する

先にダウンロードして展開しておいた、Vmdk2Vhd.exe を起動します。 変換元の VMware の仮想ディスクを選択するファイルダイアログが表示されますので、先ほどシャットダウンした 仮想ディスクを選択して [開く] をクリックしてください。

変換元の VMware の仮想ディスクを選択する

変換ツールのダイアログが表示されますので、[Destination Vhd] の [save as] をクリックし、 変換先の Virtual PC の仮想ディスクを指定します。
私の環境では [D:\My Virtual Machines\Windows XP Professional(VPC)] というフォルダを作成し、 その下に [Windows XP Professional.vhd] として変換先ファイルが作成されるよう指定しました。

変換先の VMware の仮想ディスクを選択する

[convert] をクリックして変換を開始します。変換元のディスクサイズにもよりますが、 私の環境では約 9G バイトの VMware 仮想ディスクの変換に 20 分程度かかりました。

変換ツールによって変換中

変換が終わると、続けて他のディスクを変換するかたずねられるので、[いいえ] をクリックして変換ツールを終了します。

変換終了
変換後の仮想ディスクを Virtual PC で起動する

Virtual PC を起動します。[新しいバーチャルマシンウィザード] ダイアログが表示されますので [次へ] をクリックします。

新しいバーチャルマシンウィザードの開始

[オプション] では [バーチャルマシンの作成] を選択します。

オプション

[バーチャルマシンの名前と場所] では新しいバーチャルマシンの名前と場所を設定します。
私の環境では [参照] をクリックして [D:\My Virtual Machines\Windows XP Professional(VPC)] 下に [Windows XP Professional] として作成するよう指定しました。

バーチャルマシンの名前と場所

[オペレーティングシステム] では使用するオペレーティングシステムを指定します。
私の環境では [Windows XP] を指定しました。

オペレーティングシステム

[メモリ] では仮想マシンに搭載するメモリサイズを指定します。
私の環境では [RAM の調整] を指定して、512M バイトに指定しました。

メモリ

[バーチャルハードディスクオプション] では仮想ディスクを指定します。
私の環境では [既存のバーチャルハードディスク] を指定しました。

バーチャルハードディスクオプション

[バーチャルハードディスクの場所] では既存の仮想ディスクを指定します。
私の環境では [参照] をクリックして先ほど変換した [D:\My Virtual Machines\Windows XP Professional(VPC)\Windows XP Professional.vhd] を指定しました。

バーチャルハードディスクの場所

[新しいバーチャルマシンウィザードの完了] になりますので [完了] をクリックしてウィザードを終了します。

新しいバーチャルマシンウィザードの完了

[Virtual PC コンソール] にウィザードで作成した仮想マシンが表示されますので、[起動] をクリックします。

Virtual PC コンソール

変換した仮想ディスクを使って OS が起動しました。
※XP の場合、ハードウェアが大幅に変更されたとみなされるため使い続けるためにはアクティベーションが必要になります。

起動した Windows XP

デバイスのインストールなどが完了し、再起動をうながされるので、再起動します。

デバイスのインストールが完了し再起動前の Windows XP

再起動後には解像度などが自由に変更できるようになります。

再起動後の Windows XP

有益な情報を提供されているサイト SearchServerVirtualization.com と VMware の仮想ディスクを Virtual PC 用に変換するツールを提供されているサイト vmToolkit に感謝感謝でした。