VMWare playerとVirtualBoxでXP Modeを使う

Windows 7 Professional にしたので色々なやり方でXP Modeを入れて比較してみた。(2012/6)
VirtualBox 4.2.x で VBoxDD2.dll を書き換える方法を追記。(2012/11)

結論から言うと
・使い勝手重視ならVMWare playerで vmdk に変換した仮想HDDを使う方法
・速度重視ならVirtualBoxで vdi に変換した仮想HDDを使う方法
のどちらかでしょう

仮想HDDの速度はVirtualBoxが圧倒的に速いがファイルのD&Dができないのが残念。Direct3Dもダメ。
XPの起動時間は VirtualBox 30秒、VMWare 70秒 (キャッシュ効かない初回起動時、ノートPCで)
VirtualBoxはデータ圧縮の効果で実HDDより速くHDBENCHで Read 140MB/s、VMWareは 65MB/s,、実HDDは 75MB/s

結局、動作が軽快なVirtualBoxを採用。


XP Modeの導入方法

まずMicrosoftからXP Modeをダウンロードしてインストール

VMWare playerでXP Modeを使う(普通の方法) ×
VMWare player 4.0 * をダウンロード (VMWare player 4.0.3)
VMware Converter * をダウンロード (VMware VCenter Converter Standalone 5.0.0)
・VMWare playerをインストール後、VMware Converterをサーバーモードでインストール
・VMWare playerからXP Modeをインポート
・仮想マシンを起動する
・VMWare Toolsをインストール

この方法だと仮想HDDが Windows XP Mode base.vhd からの差分なのでかなり遅い。ディスクのユーティリティも使えない。
仮想HDDは0クリア後にNHCで圧縮できるが、Writeが遅いので0クリアに時間がかかり、クリアした分、ファイルサイズが一時的に増加する。
この方法は簡単だが問題が多くて使えない。

VMWare playerで .vhd を .vmdk に変換してXP Modeを使う 
NHCで XP Mode の .vhd を .vmdk に変換
・新規でXPの仮想マシンを作る
・変換した .vmdk に入れ替える(同じ名前で)
・マシン名.vxm に xpmode.enabled = "TRUE" を追加する
・仮想マシンを起動する
・VMWare Toolsをインストール、Virtual PC 総合コンポーネントをアンインストール

Virtual PC 総合コンポーネントを削除するまでマウスで操作できなかったのでキーのみで進めた、途中何度か固まったので仮想マシンのリセットで対処。
今回はWindows XP Mode base.vhdから変換したが、起動済みの .vhd から変換すればもっと楽だろう。

通常のvmdkになったので最適化やコンパクトのユーティリティが使える、仮想HDDは少し速くなった程度。
空き領域の0クリアは非常に高速でファイルも大きくならない。


VirtualBoxでVMLite Pluginを使ってXP Modeを使う ×
VirtualBox 3.1.2をダウンロード
VMLite Workstation Plugをダウンロード(要ユーザー登録)
・VirtualBoxインストール後、VMLite Workstation Pluginをインストール。自動でXP Modeのインポートが始まる。

この方法だと仮想HDDがVHDなのがいまいちなので(これも差分?) 他の方法にする。

VirtualBoxで .vhd を .vdi に変換してXP Modeを使う 
・VMLiteのインストール場所から pcbios.bin を取り出す
・VMLite Workstation Plugin、VirtualBoxをアンインストール
VirtualBox最新版 * をインストール
・NHCで XP Mode の .vhd を .vdi に変換
・変換した .vdi で新規仮想マシンを作る
・pcbios.bin をどこかにコピーする
・C:\ユーザー\ユーザー名\.VirtualBox の VirtualBox.xml の <ExtraData> の所に pcbios.bin のパスを追記。
 <ExtraDataItem name="VBoxInternal/Devices/pcbios/0/Config/BiosRom" value="パス/pcbios.bin"/>
 全角文字はNGなので注意
・仮想マシンを起動する
・Guest Additionをインストール、Virtual PC 総合コンポーネントをアンインストール

最初マウスで操作できないのでキーのみで進め、途中で固まったので仮想マシンのリセットで対処。
(今回はWindows XP Mode base.vhdから変換)

仮想HDDの速度が速くて快適、VMWare playerで vmdk 変換したものより遙かに速い。例えばXPの起動ではVirtualBoxの方が2倍以上も速い、圧倒的。
ただしVirtualBoはファイルをD&Dできないなど使い勝手の悪い所が多く残念(共有使うしかない)  せっかく仮想HDDが高速なのにもったいない。
Direct3Dには一応対応しているが、性能が悪く使い物にならない。VMWare playerはDirect3Dもそこそこ使える。

VBoxDD2.dllを書き換えてXP Modeを使う 
この方法ならVMLiteを使わなくてよく、手間もかからない。
・VirtualBox 4.1.x をインストール
・NHCで XP Mode の Windows XP Mode base.vhd を .vdi に変換
・変換した .vdi で新規仮想マシンを作る
・VBoxDD2.dllを書き換える
・仮想マシンを起動する
・Guest Additionをインストール、Virtual PC 総合コンポーネントをアンインストール

VBoxDD2.dllの書き換え方法
C4 CE B8 45 02 50 FF 76 FE E8 2D 74 83 C4 04 30 E4 D1 E0 88 46 FD B8 46 02 50 FF 76 FE E8 19 74 83 C4 04 30 E4 02 46 FD 80 D4 00 88 46 FD 31 C0 50 B8 74
を検索し
57 69 6E 64 6F 77 73 5F 56 69 72 74 75 61 6C 5F 58 50 5F 46 39 31 36 31 44 38 45 37 46 43 43 31 31 44 44 42 46 41 41 33 36 39 38 35 36 44 38 39 35 39 33
に書き換える ( 文字は Windows_Virtual_XP_F9161D8E7FCC11DDBFAA369856D89593 )
元情報

書き換えはBZで文字の貼り付けが簡単、バイト値の検索は #C4 CE B8 (最初リードオンリーなので注意)

VirtualBox 4.2.x の場合
VBoxDD2.dllの書き換える場所が 00 で埋められているので、メモリ上で F908A になる場所を探して書き換えた。(HWDirect使用)
VirtualBox 4.2.6 の場合
書き換える場所は 00 の始まる場所から 0x355 足したアドレスになっているので
BZで #B8 FF 5D で検索すると
10B10   B8 FF 5D 1F CB 00 00 00 - 00 00 00 00 00 00 00 00
となって 00 が始まるのは 0x10B15 なので 0x355 足して
書き換える場所は 10E6A〜

VBoxDD2

各バージョンの書き換え位置
10E5A〜 4.2.0 4.2.4  4.2.16
10E6A〜 4.2.6 4.2.12


仮想HDDのファイルサイズ縮小
・空き領域を0クリアする (ツールは dkclearSDelete など)
・VMWare playerではディスクのユーティリティを使う
・VirtualBoxでは
 "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyvdi ファイル名 compact
 NHCでも圧縮できる
XP ModeのHDDは127Gと大きすぎるのでEASEUS Partition Masterなどでパーティションを縮小しておく。

VMWareでは仮想マシンをコピーしても動くが、VirtualBoxではCloneの作成が必要なので注意。

マルチコア化
・C:\Windows\Driver Cache\i386\sp3.cab の中の halaacpi.dll halmacpi.dll を C:\Windows\system32 にコピー
・コア数を増やす
・boot.ini に
 multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional (ACPI/APIC)" /noexecute=optin /fastdetect /hal=halaacpi.dll
 を追加して再起動し追加した方を選択
・XP起動後しばらくして再起動を促されるので再起動
・今度は通常のWindowsを選択
・boot.ini に追加した行を削除


[もどる]