最近、プロジェクトで開発環境を VMWare Server 上に構築して利用しています。 一旦イメージを作成すれば面倒なツール・ライブラリ群のインストールを行う必要がなく、 開発環境構築コストが激減しました。
有効利用しているのですが、困った問題が発生しました。 それは社内のセキュリティ上 Windows Update を自動にしてあり、場合によっては自動で再起動されてしまうため、 こつこつ育ててきた screen 上の emacs のバッファが水の泡に(泣)。
と言う訳にはいかないので VMWare Server を幸せに利用する方法を調査しました。 最終目標は「ホストOS起動/終了時にゲストOSをSuspend/Resumeする」です。
まず「任意のタイミングでゲストOSを起動/終了/Suspend/Resumeできるか」を調査し、 次に「それをホストOS起動/終了のタイミングで実施できるか」を調査しました。
その結果、「vmware-cmd」を使い、「Windows の グループ・ポリシーに設定する」ことで、一応私がやりたいことができました。 というわけで、ラフですが調査報告です。
VMWare Server Console で 自動起動/自動終了 の設定を行う事が可能です。ただしこの設定は ホストOSの起動・終了のタイミングでゲストOS の 起動及び終了の設定のみ可能です。 Suspend や Resume ができないので、今回の目的からは使用しませんが一応報告です。
1. Virtual Machine Setting を開く
2. [Options]タブ → Startup/Shutdown を選択
3. Local system account もしくは this user を選択する
4. Startup / Shutdown options を選択する。
On host startup:
Power on virtual machine
On host shutdown:
Shutdown guest operating system
VMWare Server をインストールすると "vmware-cmd" という VMWare の制御用プログラムが、デフォルトであれば "c:\Program Files\VMware\VMware VmPerl Scripting API\vmware-cmd.bat" にインストールされます。 このコマンドを利用して Suspend 及び Resume が可能です。
Suspend 及び Resume はホストOSを再起動した場合でも作業状態を保存してくれるので screen での作業や、こつこつ育てた emacs のバッファも保存可能です。
vmware-cmd を以下のように実行するだけです。
Susupend
vmware-cmd.bat <cfg> suspend
Resume
vmware-cmd.bat <cfg> start
<cfg> は VMWare の構成ファイル(.vmx) を指定します。
e.g.)
vmware-cmd.bat "c:\Program Files\VMware\linux.vmx" suspend
vmware-cmd.bat "c:\Program Files\VMware\linux.vmx" start
「Windows グループ・ポリシー」を利用した設定については(2)に続く。