放浪猫

主にガジェットとかの雑記

Windows10 の最新VirtualBox上でWindows7用のXP Modeを動かす

お久しぶりです、ゆきしろです。

最近NEW XPS13(OS:Windows10Pro)を買いました。

ベゼルが狭くて快適です。

で、ちょっとマイコン触る必要が出てきたので、R8Cマイコンを触り始めました。

すぐに使える!実験・試作用マイコン・モジュール (シリコン・ディスカバリ・シリーズ)

上記書籍を参考に環境構築を行ったわけですが、問題が発生。

開発環境のHEWからボードについているminiUSBを経由してマイコンとの通信を行うのですが、

通信がうまくいかない。

原因はマイコン製造元のRenesasが提供する通信用FoUSB/UARTのソフトウェアがWinXPまでしかサポートしていない。それ以外のHEW環境は動きました。

んじゃWin10上に仮想環境を構築してXP起動してそこに改めて環境作ればよくね?と考え、最初に思いついたのが「Virtual PCのXP Modeを使う方法」。

しかしVirtual PCWindows7向けでして、Windows10からは Hyper-Vに仮想環境が置き換わりました。XP Modeをバラして展開してVHD作成してHyper-Vで読み込ませましたが、XP modeは起動するもののUSBが使えない罠。リモート経由になります。

 

で、Virtual BoxにXP Modeぶち込む作戦に変更。

本来サポート外のため、ここから先は完全に自己責任でお願いします。

主に以下のサイトを参考に。

denspe.blog84.fc2.com

 

とりあえず自分の行った手順をつらつらとメモしていきます。

 

1.Oracleのサイトから最新のVirtualBoxのダウンロード(5.0.16)し、インストールする。

2.マイクロソフトのサイトからXP Modeのダウンロード(WindowsXPMode_ja-jp.exe)

3.WindowsXPMode_ja-jp.exeの末尾に「.cab」を付与して適当な解凍ソフトで解凍。

(sourcesフォルダとxpmmsilauncher.exeとxpmmsilauncher64.exeができる)

4.解凍したsourcesフォルダ下に移動し、テキストファイル「xpminstl.txt」を作る。内容は以下の通り。

msiexec.exe /a "xpminstl32.msi" targetdir="解凍先のフォルダのパス" /qn

 

※XP ModeはWindows7用なのでWindows10にそのままインストールできないので、バッチファイル(.bat)を作成し、XPのイメージが入ったvhdを抽出する。

※32bitの例

msiexec.exe /a "xpminstl32.msi" targetdir="D:\pvbXPMode\sources\XPMode" /qn

 

5.テキストファイル「xpminstl.txt」を「xpminstl.bat」に変更し、実行する。

6.4の「解凍先フォルダのパス」で指定したフォルダにProgram Filesフォルダとxpminstl32.msiが作成されている。

Program Files\Windows XP Mode\Windows XP Mode base.vhdが入っているので、これが仮想マシンのハードディスクになるため、任意の場所にコピーしておく。

7.VirtualBoxを立ち上げ、仮想マシンの新規から新規仮想マシンの作成を行い、セットアップを行う。

 ・仮想マシン名:Windows XP Mode

 ・OS タイプは「オペレーション システム:Microsoft Windows」「バージョン:Windows XP」(標準がこれ)。

 ・メインメモリのサイズ:とりあえず1GBくらい

 ・「仮想ハードディスク」の設定で「既存のハードディスクを使用」を選択し、任意の場所にコピーしたWindows XP Mode base.vhdを指定する。

これで仮想マシンが作成されます。

8.仮想マシンの設定を以下の通りにする

・設定 > 一般 > 高度 >「クリップボードの共有」を「双方向」

・設定 > ディスプレイ> ビデオ> 「ビデオメモリ」を 26MB 以上に設定、「3D アクセラレーションを有効化」と「2D ビデオ アクセラレーションを有効化」にチェックを付けておく。

 

これで一通りの仮想マシン設定はOKです。次に、XPの設定をいじっていきます。

1.VirtualBoxで作成した仮想マシンWindows XP Mode」を起動する

2.XPが立ち上がる。

 ※仮想マシン画面内でのマウスの動きがおかしい場合には、「仮想マシン → マウス統合を無効化」をする。ホストOSに切り替えるときは右Ctrlキーを押す。

3.通常のXPのセットアップと同様、「ライセンス契約」に同意、「地域と言語オプション」の設定、「コンピュータ名」と「Administrator のパスワード」の入力、「日付と時刻」と「タイムゾーン」の設定、と済ませていく。

4.「ネットワークの設定」「最後のタスクの実行」と続き、再起動のために画面が暗転する。ここで仮想マシンの画面が固まって何の操作も受け付けなくなるので、「右 Ctrl キー」でマウスを解放し、仮想マシン画面右上の×マークで「仮想マシンを閉じる」を出し、「仮想マシンの電源オフ」で一度仮想マシンを強制終了させる。

5.再度、VirtualBoxのマネージャ画面から仮想マシンを起動する。

6.「自動更新」の設定画面が出たら、「自動更新を無効にする」を選択しておく。

7.ドライバが入っていないため「新しいハードウェアの検出ウィザード」画面がいくつか出るが、あとで入れるので全部「キャンセル」で画面を閉じる。

8.スタート > コントロールパネル > プログラムの追加と削除 >「Virtual PC統合コンポーネント」を「削除」する。削除完了後、「システムを再起動する必要があります」というメッセージが表示されるので「はい」を押して再起動させる。ここでまた画面が固まるので、「右 Ctrl キー」でマウスを解放し、「仮想マシンの電源オフ」で強制終了させる。

※再起動時の画面が固まる現象はVirtual PC統合コンポーネントに由来するらしいので以降は普通に再起動されるようになります

9.ドライバをインストールするためにOracleのサイトからVirtualBoxと同じバージョンのExtensionPackagesをダウンロードし、インストールする。インストールの方法は以下の別記事にまとめました。

Virtual BoxのExtension Packageインストールで失敗したので手動インストール方法 - 放浪猫

10.ドライバが正常にインストールされれば「新しいハードウェアの検出ウィザード」が表示されなくなります。このままでも使えますが、「30日以内にライセンス認証を行ってください」という警告メッセージが出ます。

XP ModeはSLP 認証といわれる方法でアクティベーションが行われており、これは簡単にいうと、「メモリの特定の位置に特定の文字列が書き込まれていることを確認する」方法です。
そのうち「特定の位置」は、通常 BIOS が読み込まれている場所で、「特定の文字列」は、XP Modeの場合「Windows_Virtual_XP_F9161D8E7FCC11DDBFAA369856D89593」になります。

で、めんどくさいので認証済みにします。(※ここから先はパッケージ版ライセンスお持ちの人を対象としています)

※通常はVBoxDD2.dllを「xedit」などのフリーのバイナリエディタで編集し、

「C4CEB8450250FF76FEE82D7483C40430E4D1E08846FDB8460250FF76FEE8197483C40430E40246FD80D4008846FD31C050B874」を検索して「57696E646F77735F5669727475616C5F58505F4639313631443845374643433131444442464141333639383536443839353933」に置換しますが、VirtualBoxのバージョンが異なるとアドレスの開始位置が変わるので直接の編集は推奨しません。

11.以下のサイトを参考にBIOSファイルを作成します。

fmnb0516’s blog - XP ModeをVirtualBoxで動かす

BIOSファイルのひな形を作成

VirtualBoxUbuntuでもFedoraでもいいので、Linux環境を作成し、 以下のコマンドを実行する。

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

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

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

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

※57696E646F77735F5669727475616C5F58505F4639313631443845374643433131444442464141333639383536443839353933

※ちなみに上記サイトで公開されていたBIOSファイルはVirtualBox5.0.16でも使用できました。

12.BIOSファイルの読み込み

 仮想マシンのXPModeがシャットダウンされて起動していないことを確認し、コマンドプロンプトを起動する。以下のコマンドを実行する

 

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" setextradata "Windows XP Mode" VBoxInternal/Devices/pcbios/0/Config/BiosRom "vboxbios.binが置いてある場所のパス"

 

13.VirtualBoxからXP Modeを起動し、ライセンス認証が済になっていることを確認する。

 

以上でXP側の設定おしまいです。

さて、次回は前述したマイコンとの通信の設定についてまとめます。

長々とお付き合いいただきありがとうございました。

 

つづき↓

hourouneko.hateblo.jp