仮想化して現在の環境をバックアップする
今使ってるPC環境、壊れたら戻すのは大変です。仮想化しておきましょう。
ホストとゲスト
ゲストOS|e-wordsより
コンピュータ上に別のコンピュータ環境を用意する「仮想マシン」環境で、仮想マシン上で動作しているOSのこと。
例えば、FreeBSD上で仮想マシン構築用のソフトウェアを動作させておき、作成された仮想マシン上でWindowsが動作している場合、FreeBSDがホストOS、WindowsがゲストOSになる。
コンピュータの管理上は、仮想マシン環境とゲストOSはホストOS上で動作するプログラムという形になっているため、ゲストOSが動作するためにはホストOSが常に起動している必要がある。逆に、ゲストOSがいくら起動や終了を繰り返しても、ホストOSの動作には影響しない。
つまり、仮想マシンのプログラムを動作させている基盤となるOSがホストOS、仮想マシン上で動作しているOSがゲストOS。
手順
=== 仮想化したい環境でやること ===
- Disk2vhd でシステムドライブを*.vhdに
(解説サイト)
http://www.atmarkit.co.jp/ait/articles/1109/08/news111.html
http://www.atmarkit.co.jp/ait/articles/1109/08/news111_2.html
Prepare for use Virtual PCのチェックボックスを外しておく。 - cpuid.exeの結果を保存しておく(※1)
http://www.vector.co.jp/soft/win95/hardware/se097326.html
=== 移行先のホスト ===
- Virtualboxインストール
[公式]https://www.virtualbox.org/
(解説サイト)http://labo.opengroove.com/blog/2013/10/15/virtualboxの導入からosインストールまでのチュートリア/
(解説サイト2)http://pc-karuma.net/windows8-virtualbox-install/ - VBoxManage clonehd --format VDI で*.vhd→*.vdiに(※2)
- 仮想マシンを新規作成。HDイメージに先ほどののvdiを指定
- VBoxManageでcpuidを2.の内容に書き換え(Function0~3)
EDXは関係ない。
(解説サイト)http://d.hatena.ne.jp/cjohn/20100920/1284988988[ミラー]
ex.)こんなバッチを作り、走らせる。数値は手順2を参照。
pushd [Virtualboxのインストールフォルダ―のパス] VBoxManage createvm --name [仮想イメージ名] --ostype [仮想イメージ名のOS名] --register VBoxManage modifyvm [仮想イメージ名] --vram 18 VBoxManage storagectl[仮想イメージ名] --name IDE --controller PIIX4 --add ide --hostiocache on VBoxManage storageattach [仮想イメージ名] --storagectl IDE --device 0 --port 0 --type hdd --medium %1 VBoxManage storageattach [仮想イメージ名] --storagectl IDE --device 1 --port 0 --type dvddrive --medium emptydrive VBoxManage modifyvm [仮想イメージ名] --audio dsound --audiocontroller ac97 VBoxManage modifyvm [仮想イメージ名] --cpuidset 00000000 00000002 756E6547 6C65746E 49656E69 VBoxManage modifyvm [仮想イメージ名] --cpuidset 1 0x000106A5 0x00000800 0x00000209 0x078BF9FF VBoxManage modifyvm [仮想イメージ名] --cpuidset 2 0x55035A01 0x00F0B2E4 0x00000000 0x09CA212C popd pause exit
*[仮想イメージ名]:お好きな名前を
*[仮想イメージ名のOS名]:WindowsXPなど
*vram:ビデオRAMの量。
*8,9,10行目ところが大事。
*Linux,Macでは7行目のところはうまくいかないからGUIからやってください。
*cpuidsetのところ(8,9,10行目)は手順2に結果に合わせる。 - GUIの設定でスナップショットの位置などを起動する前に設定。
- 仮想マシン起動。起動しない場合はプロセッサ数を解除環境に合わせる。
=== ここから仮想マシン ===
- cpuid.exeで2.と同じになってることを確認(※3)
=== ここまで仮想マシン ===
- *.vdiをバックアップ
- ※1
- できれば仮想化したい環境にもVirtualboxをインストールしてVBoxManage list hostcpuidsの結果を取っておくといいかも?
- ※2
- ググるとconverthdを使えとあるが環境によっては失敗する?
変換自体は必須ではないがvhkだと
VBoxManage.exe modifyhd [UUID] --compactが失敗するっぽい - ※3
- 完全には一致しないことあり。謎。
備考
もしかするとライセンス認証を聞いてきて、うまくいかないかもしれない、特に実機がプレインストールの時。その時はVBoxDD2.dll書き換え(SPL認証回避)が必要かも。