OracleVirtualBox5.2でWindowsXP Modeを使う
PC設定※OracleVBoxのバージョンアップに伴い新しく記事を書きました。上記リンクを参照してください。(OracleVBox6.0)
とあるお客様の環境において、WindowsXPでのみ動作するアプリケーションがあり、
Windows10が主流になりつつある現状で、WindowsXPがほしいとの依頼があり検討
しました。
最初は、正規なルートでWindowsXPの購入を検討しましたが、業界では、超メジャー商社D○Sに購入できないか打診しましたが、さすがに取り扱いがなく、断念。
次に、Yahooオークションで、XPの正規版を購入して、仮想環境への導入をしましたが、ライセンス認証ができず、30日の認証期限を解除することができませんでした。
インターネット上ではMSのライセンス認証サーバーは既に動いていないようで、MSの電話による自動認証も駄目でした。
Web上でXPモードをVirtualBoxで動かす方法を調べると、VirtualBoxのバージョンが古い物が多く、苦労しましたが以下のページにたどり着けたことは奇跡でした。
参考にさせて頂いたページは
fmnb0516’s blog さんのブログ
です。
導入した環境は以下の通りです。
VirtualBox 5.2
VMLite プラグイン導入なし
XP モードインストールなし
必要なソフトはVirtualBoxと7zipとxedit
LINUX環境(僕は「Linux Mint 18.1 “Serena” Cinnamon」をVBOXにインストールして利用)
(そのままで、ほぼ、インストール出来るのですが、最後の認証のところで引っかかってしまったのでメモを作りました。)
必要なソフトウェアのインストール
以下より7zipとVirtualBox、をダウンロードしてインストールします。
VirtualBoxのインストールはこちら VirtualBoxMania
LinuxMintのインストールはこちら RAGNITE BLUEさんのページ
XP モードのモジュールよりHDDイメージの抽出
MSのサイトよりXPモードのインストーラを取得します。
ダウンロードした[WindowsXPMode_ja-jp.exe]を[]右クリック]->[コンテキストメニュー]->[7-Zip]->[WindowsXPMode_ja-jp\に展開]を選択します。
展開すると以下のように[WindowsXPMode_ja-jp]フォルダが生成されます。
上記フォルダに[xpminst.bat]を作成し、以下の内容で作成します。
set CURRENT=%~dp0 echo %CURRENT% msiexec.exe /a "sources\xpminstl32.msi" targetdir="%CURRENT%XPMode" /qn 上記を実行すると作業ディレクトリに[XPMode]フォルダが作成されます。
※文末にある、targetdir="%CURRENT%XPMode"
黄色の部分を変更することでフォルダ名称を自由に変更することができます。
※※2019/8/16追記※※
上記コマンド実施した際にうまく動作しない場合、Windows+Rでcmdを実行
以下のようにフルパスで指定するとXPModeフォルダを作成できることを確認しました。
c:\windows\system32\msiexec.exe /a C:\WindowsXPMode_ja-jp\sources\xpminstl32.msi targetdir="C:\WindowsXPMode_ja-jp\XPMode" /qn
緑色の部分は、xpminstl32.msiのある場所を指定
紫色の部分は、XPModeフォルダを置き場所を指定。通常はWindowsXPMode_ja-jpの場所を指定すれば良い。
※※追記終了※※
上記の[XPMode]よりフォルダ階層を辿ると以下の位置に[Windows XP Mode base.vhd]ファイルが存在します。
- \WindowsXPMode_ja-jp\XPMode\Program Files\Windows XP Mode\Windows XP Mode base.vhd
[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]が作成されています。
※前作業時にフォルダ名称を変更した場合、文字列中のXPModeの部分を前作業時に指定した
フォルダ名称に変更してください。
上記でHDDイメージの変換は完了です。
仮想マシンの作成
VirtualBoxの[新規]より以下の手順で仮想マシンを作成を開始します。
名前とオペレーティングシステム
[名前(N)]に[winxp]を、[タイプ(T)]に[Microsoft Windows]を、[バージョン(V)]に[Windows XP(32-bit)]を指定します。
※黄色網掛けの文字は自由に変更可能ですが、後の作業にも影響がありますので、留意してください。
メモリーサイズ
デフォルトのメモリサイズは[192MB]とかなり少ないので、[2048MB]=2GBにします(メモリサイズは任意)
VirtualBoxでの操作にもどり[すでにある仮想ハードディスクファイルを使用する(U)]をチェックし、上記で変換した[winxp.vdi]を選択し[作成]を押下します。
仮想マシンの設定
以下の作業は任意になりますが、任意で。
VirtualBoxより[winxp]を選択し、[設定]を押下します。
システム
設定項目より[システム]を選択し、起動順序より[フロッピー]のチェックを外します。
ディスプレイ
設定項目より[ディスプレイ]を選択し、以下を設定。
- [ビデオメモリー]を[128MB]に設定
- [3Dアクセラレーション]にチェック
ネットワーク
設定項目より[ネットワーク]を選択し、割り当てを[NAT]から[ブリッジアダプター]に変更する。
XPのセットアップ
VirtualBoxより[winxp]を選択し、[起動]を押下します。
以降はWindows XP側での操作になります。
※セットアップの途中で固まる場合はメニューの[仮想マシン]->[リセット]を選択してXPをリセットします。
XPの初期設定
ライセンスの同意、時刻、Windowsアップデートの設定などWindowsXPの初期設定を実施します。
とくに必須の手順もないため、任意で設定を行います。
Virtual PC統合コンポーネントのアンインストール
VirtualBoxでXP ModeのWindowsXPを使用する場合、すでに導入済みの[Virtual PC 統合コンポーネント]が入っているとマウス操作など いたるところで変な挙動になる場合が多いので、アンインストールします。
VirtualBox Guest Additionsのインストール
XP ModeのWindowsXPにVirtualBoxの[Guest Additions]をインストールします。
上記を行うことでホスト側とゲスト側でファイルの共有やDirect3Dの有効化が可能になります。
上記をインストールするため、まずWindows XPをセーフモードで起動します。(BIOS画面でF8)
セーフモードで起動後、VirtualBox側で[Guest Additions]のCDを挿入します。
VirtualBoxにて[デバイス]->[Guest Additions CDイメージの挿入...]を選択します。
上記でゲスト側(WindowsXP)のCDドライブに[Guest Additions]のCDが認識されます。
上記CD内の[VBoxWindowsAdditions-x86.exe]を実行します。
基本的にインストーラに従っていれば[Guest Additions]がインストールされます。
途中の[Direct 3D Support]にチェックを入れ忘れないように注意します。
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から0x90BCの値を[Windows_Virtual_XP_F9161D8E7FCC11DDBFAA369856D89593]に書き換えます。
ちなみに[Windows_Virtual_XP_F9161D8E7FCC11DDBFAA369856D89593]を16進数で表すと[57696E646F77735F5669727475616C5F58505F4639313631443845374643433131444442464141333639383536443839353933]になります。
ちなみにバイナリエディタの[xedit]でBIOSファイルを書き換えるとこんな感じになります。
書き換え手順はこちら
BIOSファイルの読み込み
コマンドプロンプトより以下のコマンドを実行します。
コマンドを実行する際は、XP Modeの仮想マシンは停止させておいてください。
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" setextradata "winxp" VBoxInternal/Devices/pcbios/0/Config/BiosRom "[仮想マシンの保存先]\winxp\vboxbios.bin" 上記実施後、VirtualBoxよりXP Modeを起動し、ライセンス認証が済になっていることを確認します。
※コマンドラインの注意点
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" setextradata "winxp" VBoxInternal/Devices/pcbios/0/Config/BiosRom "[仮想マシンの保存先]\winxp\vboxbios.bin"
winxpは仮想マシンの作成時に入力した名前を入力
[仮想マシンの保存先]\winxp\vboxbios.binは、vobxbios.binの場所をフルパスで記載
私の場合は F:\winXP\WindowsXPMode_ja-jp\vms\winxp な感じです。
ライセンス認証確認コマンド
c:\windows\system32\oobe\msoobe /a
この画面が表示されれば認証成功です。
コメント
ゲストXpにipが振られない
ホストWin10とゲストxpの環境でブリッジをしてます。xpでipconfigをしても英語で構成と一文でて終わります。どうしたらipが振られて、外部のプリンター等動かせるのでしょうか。御手数ですがの教授いただきたいです。
2024-08-03 08:35 岡田 URL 編集
IPが割り当てられない件について
コメントありがとうございます。
環境が良く解らないため回答が難しく思います。
当方の環境WIN11 23H2の環境でXPモードを構築してIPの割り当てが出来ないか確認してみることはできますが、WIN10環境がないので、適切な回答ができない可能性はあります。
2024-08-04 18:27 管理人 URL 編集