FC2ブログ

      OracleVirtualBox5.2でWindowsXP Modeを使う

      PC設定
      11 /06 2017
      新しい設定記事はこちら

      ※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\に展開]を選択します。

      s1.png

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

      s2.png

      上記フォルダに[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の場所を指定すれば良い。
      ※※追記終了※※

      s3.png

      上記の[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の部分を前作業時に指定した
      フォルダ名称に変更してください。

      s4.png

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

      

      仮想マシンの作成

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

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

      [名前(N)]に[winxp]を、[タイプ(T)]に[Microsoft Windows]を、[バージョン(V)]に[Windows XP(32-bit)]を指定します。
      黄色網掛けの文字は自由に変更可能ですが、後の作業にも影響がありますので、留意してください。

      ws000001_result.png

      メモリーサイズ

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

      ws000002_result.png

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

      ws000003_result.png

      HDD選択2


      仮想マシンの設定

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

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

      システム

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

      ws00000001_result.png

      ディスプレイ

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

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

      ディスプレイ設定

      ネットワーク

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

      ws000004_result.png

      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から0x90BCの値を[Windows_Virtual_XP_F9161D8E7FCC11DDBFAA369856D89593]に書き換えます。

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

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

      書き換え手順はこちら

      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 な感じです。

      ws000006_result.png

      ライセンス認証確認コマンド
      c:\windows\system32\oobe\msoobe /a


      ws000007_result.png

      ws000009_result.png

      この画面が表示されれば認証成功です。



      コメント

      非公開コメント

      ゲストXpにipが振られない

      コメント失礼します。
      ホストWin10とゲストxpの環境でブリッジをしてます。xpでipconfigをしても英語で構成と一文でて終わります。どうしたらipが振られて、外部のプリンター等動かせるのでしょうか。御手数ですがの教授いただきたいです。

      IPが割り当てられない件について

      岡田さま
      コメントありがとうございます。
      環境が良く解らないため回答が難しく思います。
      当方の環境WIN11 23H2の環境でXPモードを構築してIPの割り当てが出来ないか確認してみることはできますが、WIN10環境がないので、適切な回答ができない可能性はあります。

      chiky7

      40半ばで初めて、派遣社員になってみた独身男です。2018年3月一杯で派遣社員を卒業してアルバイト生活を送っています。半年間は配送のアルバイトをやってきました。今、新しいアルバイトを始める予定です。
      パソコン関連、仮想通貨投資や健康について書いていきます。
      日記は苦手なので不定期です。