【Linux】Virtualbox で XPモード を動かす
少し古い話題ですが、Virtualbox で XP Mode を動かせるんですよね。
Windows を用いなくても出来そうだったので、Linux上で行う操作をまとめてみます。
ちなみに、Linux上で XP Mode を動かすのはライセンス違反に当たります。やらないように。
※ Linuxのみでも XP Mode を動かせるんじゃね?という妄想記事です。
はじめに
Virtualbox で XP Mode を動かすっていうと、Windows上での操作ばっかりなんですよね。まぁ、それ以外はライセンス違反なんで当たり前なんですけど。
しかし、当然 Linux にも Virtualbox はあるわけで、wine というWindowsエミュもあるのでイメージファイルの抽出もできないことはないだろう。
準備
Linux上で行うにあたり必要になるものは以下であろう。
- Virtualbox
- XP Mode のインストーラー
- p7zip-full
- wine
Virtualbox
Virtualbox で XP Mode を動かすのだから当然必要。
インストール方法は検索すればいくらでも出てくる。
バージョンは 5.2 でいいだろう。
Debian 9 Stretch でインストールする場合(ざっくり)。
$ wget https://www.virtualbox.org/download/oracle_vbox_2016.asc
$ wget https://www.virtualbox.org/download/oracle_vbox.asc
$ sudo apt-key add oracle_vbox_2016.asc
$ sudo apt-key add oracle_vbox.asc
$ sudo sh -c "echo 'deb https://download.virtualbox.org/virtualbox/debian stretch contrib' >> /etc/apt/sources.list.d/virtualbox.list"
$ sudo apt-get update
$ sudo apt-get install -y virtualbox-5.2
XP Mode のインストーラー
こいつから XP Mode のイメージファイルを抽出するので当然必要。
今現在は、まだ以下からダウンロードすることができる。
Download Windows XP Mode from Official Microsoft Download Center
ホームディレクトリ(~)にでも保存しておけばよいだろう。
以降、'~/WindowsXPMode_ja-jp.exe' に保存したと想定して書きます。
p7zip-full
XP Mode のインストーラーを展開(解凍)するのに 7za コマンドを使うのでインストールしておこう。
$ sudo apt-get install -y p7zip-full
もしかしたら、デフォでインストール済かもしれない。
wine
XP Mode のインストーラー展開後、msi ファイルを展開するのに wine が必要。
バージョンは何でもよいだろう。エミュ環境は 32bit の方が都合が良さそうだが、64bit ですでに構築していても大丈夫だと思われる。
$ sudo apt-get install -y wine
今回は以下のコマンドで 32bit 環境を作ったと想定して進める。
$ WINEARCH=win32 winecfg
Virtualbox で動く XP Mode のイメージファイル作成
Linux上で XP Mode を動かす妄想を始めます。
XP Mode のイメージファイル抽出
まず XP Mode のインストーラーを展開(解凍)する(カレントディレクトリ下に展開される)。
$ 7za x ~/WindowsXPMode_ja-jp.exe
展開されて出てきた sources ディレクトリ内の xpminstl32.msi を展開する。
$ msiexec /a ./sources/xpminstl32.msi /qn
'err:mscoree:LoadLibraryShim error reading registry key for installroot'
などと表示されるだろうが気にしない。
目的のファイル(イメージファイル)は 'Windows XP Mode base.vhd' だ。
きっと '~/.wine/drive_c/Program Files/Windows XP Mode/' 内に存在するだろう。
目的のファイルをホームディレクトリ(~)に移動する。その際ファイル名にスペースがあると面倒なのでファイル名も変更しておく。
$ mv ~/.wine/drive_c/Program\ Files/Windows\ XP\ Mode/Windows\ XP\ Mode\ base.vhd ~/Windows_XP_Mode_base.vhd
その他のファイルは不要なので削除しておく。
$ rm -rf ~/.wine/drive_c/Program\ Files/Windows\ XP\ Mode
イメージファイルを変換
上記で抽出したイメージファイル(vhd)を Virtualbox用(vdi) に変換する必要がある。
vboxmange コマンドで行う。Virtualboxをインストールしていれば使える。
$ vboxmanage clonehd ~/Windows_XP_Mode_base.vhd ~/Windows_XP_Mode_base.vdi --format vdi
ホームディレクトリ(~)内に'Windows_XP_Mode_base.vdi'が出来るはずだ。
XP Mode 仮想マシン
Virtualbox の仮想マシン作成で「すでにある仮想ハードディスクファイルを使用する」を選択。
上記で作成したイメージファイルを指定してあげればいい。
これについては検索すればいくらでも出てくる。
XP Mode 起動時やるべきこと
仮想マシンを起動すると、XPのセットアップが起動するが Virtual PC統合コンポーネント が悪さをしてちょいちょいフリーズする。
何度もリセットしながら進める以外ない。セットアップが終わったら即座に Virtual PC統合コンポーネント をアンインストールするべきだろう。
そして再起動時に F8 連打でセーフモードに入り Virtualbox の Guest Additions をインストールしておこう。
アクティベーション
bios内の特定の位置に特定の文字列があれば認証されるらしい。
Virtualboxに対応する bios が必要そうなのでVirtualbox内に Linux をインストールして抜き出す。
Virtualbox内のLinuxで以下コマンド。
$ head -c 1048576 /dev/mem | tail -c 65536 > vboxbios.bin
上記で作成した vboxbios.bin を何とかしてホストのLinuxにもってくる。
バイナリエディタで vboxbios.bin を書き換える。この程度ならvimでもいけるだろう。
$ vim -b vboxbios.binのパス
:%!xxd vim内のコマンド
# 0x908A(09080行)からの値を以下に書き換え
# 5769 6E64 6F77
# 735F 5669 7274 7561 6C5F 5850 5F46 3931
# 3631 4438 4537 4643 4331 3144 4442 4641
# 4133 3639 3835 3644 3839 3539 33
:%!xxd -r vim内のコマンド
:wq vim内のコマンド
XP Mode の仮想マシンが vboxbios.bin を読み込むようにする。
$ vboxmanage setextradata 'XP Mode 仮想マシン名' VBoxInternal/Devices/pcbios/0/Config/BiosRom 'vboxbios.binの絶対パス'
上記の vboxmange コマンドが気に食わない場合は XP Mode 仮想マシンのディレクトリ内にある *.vbox ファイルを編集する。
テキストエディタで開いて <ExtraData> 内に書き込めばいい。
以下の赤字のように書けばいい。
~ 省略 ~
<ExtraData>
~ 省略 ~
<ExtraDataItem name="VBoxInternal/Devices/pcbios/0/Config/BiosRom" value="vboxbios.binの絶対パス"/>
</ExtraData>
~ 省略 ~
XP Mode の仮想マシンを起動してコマンドプロンプトで以下のコマンドで認証の確認ができるらしい。
c:\windows\system32\oobe\msoobe /a
おわりに
今更XPに需要があるようには思いませんが、セキュリティ面では不満はあるものの軽量で使いやすいOSでしたよね。
今ではXPで動くソフトも減ったのではないでしょうか?
ちなみに私が初めてパソコンを購入したときはXPでした。
何かの参考になれば幸いです。