yumetodoの旅とプログラミングとかの記録

旅や登山の記録やプログラミング関連の話とかフリーソフト紹介とか

仮想化して現在の環境をバックアップする

今使ってるPC環境、壊れたら戻すのは大変です。仮想化しておきましょう。

メリット:移植は自由自在、例えMacLinux上にももっていける
デメリット:ホスト環境はそれなりのスペックが要求される

ホストとゲスト

ゲストOS|e-wordsより
コンピュータ上に別のコンピュータ環境を用意する「仮想マシン」環境で、仮想マシン上で動作しているOSのこと。
例えば、FreeBSD上で仮想マシン構築用のソフトウェアを動作させておき、作成された仮想マシン上でWindowsが動作している場合、FreeBSDがホストOS、WindowsがゲストOSになる。
コンピュータの管理上は、仮想マシン環境とゲストOSはホストOS上で動作するプログラムという形になっているため、ゲストOSが動作するためにはホストOSが常に起動している必要がある。逆に、ゲストOSがいくら起動や終了を繰り返しても、ホストOSの動作には影響しない。

つまり、仮想マシンのプログラムを動作させている基盤となるOSがホストOS、仮想マシン上で動作しているOSがゲストOS。

手順

=== 仮想化したい環境でやること ===

    1. 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チェックボックスを外しておく。
    2. cpuid.exeの結果を保存しておく(※1)
      http://www.vector.co.jp/soft/win95/hardware/se097326.html

=== 移行先のホスト ===

    1. Virtualboxインストール
      [公式]https://www.virtualbox.org/
      (解説サイト)http://labo.opengroove.com/blog/2013/10/15/virtualboxの導入からosインストールまでのチュートリア/
      (解説サイト2)http://pc-karuma.net/windows8-virtualbox-install/
    2. VBoxManage clonehd --format VDI で*.vhd→*.vdiに(※2)
    3. 仮想マシンを新規作成。HDイメージに先ほどののvdiを指定
    4. 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に結果に合わせる。
    5. GUIの設定でスナップショットの位置などを起動する前に設定。
    6. 仮想マシン起動。起動しない場合はプロセッサ数を解除環境に合わせる。

=== ここから仮想マシン ===

    1. cpuid.exeで2.と同じになってることを確認(※3)

=== ここまで仮想マシン ===

  1. *.vdiをバックアップ
    ※1
    できれば仮想化したい環境にもVirtualboxをインストールしてVBoxManage list hostcpuidsの結果を取っておくといいかも?
    ※2
    ググるとconverthdを使えとあるが環境によっては失敗する?
    変換自体は必須ではないがvhkだと
    VBoxManage.exe modifyhd [UUID] --compactが失敗するっぽい
    ※3
    完全には一致しないことあり。謎。

備考

もしかするとライセンス認証を聞いてきて、うまくいかないかもしれない、特に実機がプレインストールの時。その時はVBoxDD2.dll書き換え(SPL認証回避)が必要かも。

参考リンク