Debian LennyとVMPlayerで、ゲストのsqueezeをCUI起動するメモ

とりあえずlinux上のvmplayerをCUIで起動出来たのでメモ。

■経緯
qemuはCUIで起動出来ます。
ただし、ネットワークアダプタを一瞬でも落とされるのは困りますよね。
(私だけ?)
Virtualboxでも可能なようですが、Win版で懲りてるので使いませんww。
vmplayerがCUIで起動するのがベスト。。。

■対象者
詳しくは調べておらず、「とりあえず出来ました」レベルなので、
以下を試す場合は、壊しても問題の無い、自分で直せる環境を持っている方。

■参考サイト

http://communities.vmware.com/thread/29402

■要件
母艦はDebian Lennyと、VMPlayer3.1.4(linux版)

ゲスト側はDebian squeeze。
インストールからsshサーバまで、インストールとCUI起動に変更済みとする。


「/etc/rc2.d/K30gdm」
もちろん、「/etc/inittab」でランレベルが2であること。


母艦はputtyやXmingでもアクセスされるので、
ディスプレイ番号が被らないように、「:15.0」を割り当てます。


$ ~/xvfbtmp/
$ sudo apt-get install xvfb
$ apropos xvfb

$ vim sshvmstart.sh

#!/bin/bash
VMX="$1"
if [ -z "$VMX" ]; then
echo "Usage: $0 vm.vmx"
exit
fi
XVFB=`ps ax|grep "Xvfb :15" |grep -v grep`
if [ -z "$XVFB" ]; then
echo "Starting Xvfb"
Xvfb :15 -screen 0 1024x768x24 -fbdir ~/xvfbtmp/ &
sleep 20 # To be on the safe side, that Xvfb is up and running
fi
FLAG=0
xdpyinfo -display :15 || FLAG=1
if [ $FLAG -eq 1 ];then
echo "Xvfb Setting error"
return 1
fi
export DISPLAY=:15.0
echo "Starting VM $VMX"
vmplayer "$VMX" &

---
$ chmod +x sshvmstart.sh
$ ./sshvmstart.sh debian\ 6/debian\ 6.vmx 2>$1 | tee xvfb_`date +%Y%m%d%H%M`.log

※1 font関連エラーは、ssh経由で接続するので無視。
※2 「vmx」ファイルにスペースがある場合は、「"」は使用せず、バックスラッシュでエスケープ。
※3 反対に、スクリプト中では、スペースで区切られないように「"」を使用する。
※4 「xdpyinfo」でディスプレイ情報を取得出来なければエラー終了。

vmplayerが起動したかどうかは、「ping」を送り続けていれば分かると思います。
vmplayerを終了する場合には、別の端末から「HUP」シグナルを送ります。

$ ps -A | grep vmplayer | grep -v daemon | awk -F" " '{print $1}' | sudo kill -HUP `xargs`

pkillにするなり、スクリプトにするなりは、お好みで。
特にこの終了方法は、何のログも見ずに決めているので、要注意。
最低限、vmplayer側の設定は、「終了時にサスペンドする」になっているべきです。

下記2つのスクリプトを参照して下さい。

■vmware_rdebian_squeeze.sh.txt
https://docs.google.com/document/d/1LZnrOBrbNYUFsrENdx-WWgzzRke7v8DdpKdnSOWhCzA/edit?hl=ja#

■vmware_rdebian_squeeze-stop.sh.txt
https://docs.google.com/document/d/1RlzUbas1xhKIm04mI-xXUPRinFga-g_3Fu9_Z_tjFd0/edit?hl=ja#