2007年02月22日

VMware で複数のゲストを順番に実行する方法について

VMware でいろんなディストリビューションのカーネルをコンパイルしていますが、一度に全てのゲストを並列実行させられるだけのCPUもメモリも無いので、1個ずつ順番に行っています。しかし、コンパイルが終わったゲストをシャットダウンして次のゲストを起動するために人手が必要になってしまっては夜間バッチができません。

幸い、 VMware には -x と -q という起動オプションが存在しているため、以下の条件を満たせば自動的に切り替えできます。

条件は、以下の2点です。
(1)ゲストの起動時に「ハードウェアが見つからない」などのダイアログが表示されないようになっていること。
(2)ゲストが poweroff コマンドによって電源断できること。

準備としては、ゲストを起動して、バッチコマンド(例えば rpmbuild や make-kpkg )を開始した直後にサスペンドさせます。バッチコマンドが始まった瞬間に応答が遅くなってしまうのを避けるために、バッチコマンドの開始前に sleep 10 とかを入れておくとサスペンド操作がスムーズに行くかもしれません。また、バッチコマンドの終了後に poweroff が実行されるようにしておきます。これをゲストの数だけ繰り返します。

準備ができたら、全ての VMware を閉じます。

その後、仮想マシンを順番に実行させるスクリプトを作成します。

Linux の場合はこんな感じです。(runvmware.sh)

#! /bin/sh
for i in "$@"
do
  vmware -x -q $i
done

chmod 755 runvmware.sh; ./runvmware.sh /var/vmware/*/*.vmx みたいに使います。

Windows の場合はこんな感じです。(runvmware.bat)

@ECHO OFF
FOR /F "usebackq tokens=2 delims==-" %%I IN (`FTYPE VMware.Document`) DO SET VMware=%%I
:START
IF "%1"=="" GOTO END
START "" /WAIT %VMware% -x -q %1
SHIFT
GOTO START
:END

コンテキストメニューの「送る」に登録するか、 runvmware.bat の上に *.vmx をドラッグ&ドロップして使います。

VMware Player の場合は -x と -q は不要ですので、 VMware Player しかインストールされていない環境ならば START "" /WAIT %1 のように省略できます。
VMware Player では右上のXボタンを押して閉じると自動的にサスペンドしてくれるので便利ですねぇ。

posted by 熊猫さくら at 05:47| Comment(0) | TrackBack(0) | Linux
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/3392253
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック