概要

Web上でXPモードをVirtualBoxで動かす方法を調べると、VMLiteプラグインの導入が必要だったり、

VirtualBoxのバージョンが古かったりするのばっかりなので、導入に苦労しました。

ということでその備忘録を。

導入した環境は以下の通りです。

  • VirtualBox 5.0.12
  • VMLite プラグイン導入なし
  • XP モードインストールなし
  • 必要なソフトはVirtualBoxと7zip

とりあえず参考にさせてもらったサイトは以下の通りです。

上記の認証回避の方法は最新のVirtualBoxでは利用できなかったので、認証に関しては以下のサイトを参考にしました。

必要なソフトウェアのインストール

以下より7zipとVirtualBoxをダウンロードしてインストールします。

インストールに関して特に記載するような事項はないので割愛します。

インストーラに従うだけです。

XP モードのモジュールよりHDDイメージの抽出

MSのサイトよりXPモードのインストーラを取得します。

ダウンロードした[WindowsXPMode_ja-jp.exe]を[]右クリック]->[コンテキストメニュー]->[7-Zip]->[WindowsXPMode_ja-jp\に展開]を選択します。

XPインストーラの展開

展開すると以下のように[WindowsXPMode_ja-jp]フォルダが生成されます。

展開後フォルダ

上記フォルダに[xpminst.bat]を作成し、以下の内容で作成します。

set CURRENT=%~dp0

echo %CURRENT%

msiexec.exe /a "sources\xpminstl32.msi" targetdir="%CURRENT%XPMode" /qn

上記を実行すると作業ディレクトリに[XPMode]フォルダが作成されます。

展開後フォルダ

上記の[XPMode]よりフォルダ階層を辿ると以下の位置に[Windows XP Mode base.vhd]ファイルが存在します。

  • \WindowsXPMode_ja-jp\XPMode\Program Files\Windows XP Mode\Windows XP Mode base.vhd

仮想マシンの作成

VirtualBoxを起動し、WindowsXPの仮想マシンを作成します。

仮想マシンの保存先を確認

VirtualBoxの[ファイル(F)]->[環境設定(P)...]より表示される[環境設定ダイアログ]より、仮想マシンの保存先を確認します。

仮想マシンの保存先

仮想マシンの保存先

自分の環境だと[D:\vms]が仮想マシンの保存先になります。

仮想マシンの作成

VirtualBoxの[新規]より以下の手順で仮想マシンを作成を開始します。

名前とオペレーティングシステム

[名前(N)]に[winxp]を、[タイプ(T)]に[Microsoft Windows]を、[バージョン(V)]に[Windows XP(32-bit)]を指定します。

名前とオペレーティングシステム

メモリーサイズ

デフォルトのメモリサイズは[192MB]とかなり少ないので、[1024MB]にします(メモリサイズは任意)

メモリーサイズ

ハードディスク

ここで一旦、仮想マシンの作成をストップし、[XP モードのモジュールよりHDDイメージの抽出]で抽出したHDDイメージをVirtualBoxで読み込める形式に変換します。

さきほどの[WindowsXPMode_ja-jp]フォルダに[convert.bat]ファイルを以下の内容で作成します。

set CURRENT=%~dp0

echo %CURRENT%

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" internalcommands sethduuid "%CURRENT%XPMode\Program Files\Windows XP Mode\Windows XP Mode base.vhd"

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" clonevdi "%CURRENT%XPMode\Program Files\Windows XP Mode\Windows XP Mode base.vhd" "[仮想マシンの保存先]\winxp\winxp.vdi"

[convert.bat]を実行すると[仮想マシンの保存先]に[winxp\winxp.vdi]が作成されています。

HDD変換

上記でHDDイメージの変換は完了です。

VirtualBoxでの操作にもどり[すでにある仮想ハードディスクファイルを使用する(U)]をチェックし、上記で変換した[winxp.vdi]を選択し[作成]を押下します。

HDD選択1

HDD選択2

VirtualBoxの後します。

上記で実施したHDDイメージの変換処理の後しますを行います。

VirtualBoxより[ファイル(F)]->[仮想メディアマネージャ(V)...]より仮想メディアマネージャを起動します。

仮想メディアマネージャの起動

[仮想メディアマネージャ]より[Windows XP Mode base.vhd]を選択し、[除去]を選択します。

HDDの除去1

途中のダイアログは[除去]->[保持]と選択します。

HDDの除去2

HDDの除去3

仮想マシンの設定

以下の作業は任意になりますが、任意で。

VirtualBoxより[winxp]を選択し、[設定]を押下します。

システム

設定項目より[システム]を選択し、起動順序より[フロッピー]のチェックを外します。

フロッピーの除去

ディスプレイ

設定項目より[ディスプレイ]を選択し、以下を設定。

  • [ビデオメモリー]を[128MB]に設定
  • [3Dアクセラレーション]にチェック

ディスプレイ設定

ネットワーク

設定項目より[ネットワーク]を選択し、割り当てを[NAT]から[ブリッジアダプター]に変更する。

ネットワーク設定

XPのセットアップ

VirtualBoxより[winxp]を選択し、[起動]を押下します。

以降はWindows XP側での操作になります。

※セットアップの途中で固まる場合はメニューの[仮想マシン]->[リセット]を選択してXPをリセットします。

XPの初期設定

ライセンスの同意、時刻、Windowsアップデートの設定などWindowsXPの初期設定を実施します。

とくに必須の手順もないため、任意で設定を行います。

XPの初期設定1

XPの初期設定2

XPの初期設定3

XPの初期設定4

XPの初期設定5

Virtual PC統合コンポーネントのアンインストール

VirtualBoxでXP ModeのWindowsXPを使用する場合、すでに導入済みの[Virtual PC 統合コンポーネント]が入っているとマウス操作など いたるところで変な挙動になる場合が多いので、アンインストールします。

Virtual PC統合コンポーネントのアンインストール

VirtualBox Guest Additionsのインストール

XP ModeのWindowsXPにVirtualBoxの[Guest Additions]をインストールします。

上記を行うことでホスト側とゲスト側でファイルの共有やDirect3Dの有効化が可能になります。

上記をインストールするため、まずWindows XPをセーフモードで起動します。(BIOS画面でF8)

セーフモード

セーフモードで起動後、VirtualBox側で[Guest Additions]のCDを挿入します。

VirtualBoxにて[デバイス]->[Guest Additions CDイメージの挿入...]を選択します。

GuestAdditionsの挿入

上記でゲスト側(WindowsXP)のCDドライブに[Guest Additions]のCDが認識されます。

GuestAdditionsの認識

上記CD内の[VBoxWindowsAdditions-x86.exe]を実行します。

VBoxWindowsAdditions-x86

基本的にインストーラに従っていれば[Guest Additions]がインストールされます。

途中の[Direct 3D Support]にチェックを入れ忘れないように注意します。

Direct3DSupport

Windows認証の実施

上記の導入後の状態だとライセンス認証が未認証になっています。

ライセンス未認証

XP Modeではライセンス認証の方式としてBIOSのある領域に以下の文字列が埋め込まれているかどうかでランセンス認証をおこなっているようです。

  • アドレス:0x908A
  • 文字列:Windows_Virtual_XP_F9161D8E7FCC11DDBFAA369856D89593

ということで、ライセンス認証を回避するため、上記を満たすためのbiosイメージを作成しXP Modeの仮想マシンに読み込ませます。

BIOSファイルの作成

まずBIOSファイルのひな形を作成します。

VirtualBoxにUbuntuでもFedoraでもいいので、Linux環境を作成し、 以下のコマンドを実行します。

head -c 1048576 /dev/mem | tail -c 65536 > vboxbios.bin

上記で作成した[vboxbios.bin]ファイルをFTPでもSCPでもいいのでホスト側にダウンロードし、 以下に配置します。

  • [仮想マシンの保存先]\winxp\vboxbios.bin

BIOSファイルの書き換え

上記の[vboxbios.bin]をバイナリエディタで開き、0x908Aからの値を[Windows_Virtual_XP_F9161D8E7FCC11DDBFAA369856D89593]に書き換えます。

ちなみに[Windows_Virtual_XP_F9161D8E7FCC11DDBFAA369856D89593]を16進数で表すと[57696E646F77735F5669727475616C5F58505F4639313631443845374643433131444442464141333639383536443839353933]になります。

ちなみにバイナリエディタの[xedit]でBIOSファイルを書き換えるとこんな感じになります。

BIOS書き換え

とりあえず、上記を実施したBIOSファイルを以下に配置しましたので、自己責任で勝手にご使用ください。

DropBox

BIOSファイルの読み込み

コマンドプロンプトより以下のコマンドを実行します。

コマンドを実行する際は、XP Modeの仮想マシンは停止させておいてください。

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" setextradata "winxp" VBoxInternal/Devices/pcbios/0/Config/BiosRom "[仮想マシンの保存先]\winxp\vboxbios.bin"

上記実施後、VirtualBoxよりXP Modeを起動し、ライセンス認証が済になっていることを確認します。

ライセンス認証

最後に

恐らくVirtualBoxのバージョンアップにも対応できる方式だと思うのと、BIOSファイルは一度作成してしまえば流用可能なので

現状でXP ModeをVirtualBoxで動かす場合の方法は上記が一番いいのではないかと思います。

サポート切れのXPなので今更感はありますが、とりあえず備忘録として。

とりあえず自分は古いエロゲを動かす環境としてXPはまだまだ必要なので。。。