VirtualBoxをいちいち立ち上げるのが面倒なので、windowsのservice + coLinuxみたいに自動起動がしたい。

それには今まで避けてきたlaunchdを使わなくてはいけない。

Mac OS X 10.4(Tiger)から標準になったlaunchdは要はinit + inetd + daemontoolと理解。システム起動時にroot権限で動くLaunchDaemonsとログインしたときにユーザー毎に動くLaunchAgentsがあるそうです。(厳密には少し違うけど)

それぞれ指定のディレクトリにplist(プロパティリスト)というXMLの設定ファイルを作って、launchctlでloadするという流れ。

VirtualBoxはCUIでもVBoxManageコマンドでほとんどの操作が出来るのでLaunchAgentsで、

% VBoxManage startvm "仮想マシン名" --type headless

が動くようにしてやれば良いハズ。

~/Library/LaunchAgents/org.komagata.balloon.virtualbox-debian.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.komagata.balloon.virtualbox-debian</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/VBoxManage</string>
<string>startvm</string>
<string>debian</string>
<string>--type</string>
<string>headless</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>

基本、ProgramArgumentsにargvを渡すだけみたいです。

% launchctl load ~/Library/LaunchAgents/org.komagata.balloon.virtualbox-debian.plist

これで設定が読み込まれたので再起動してみる。

Sun VirtualBox

すると立ち上がってはいるけど何故か"中断"の状態。

OnDemandをfalseにすると立ち上がるが、監視して終了しても自動的に起動する状態になるので、固定でメモリを確保するVirtualBoxでは気軽に落としたりしたいのでちょっと面倒。メモリが2Gなので増設すれば256MBぐらい気にならなくなるかな?

参照:Undocumented Mac OS X:第1回 initを置き換えるlaunchd【前編】 (1/3) - ITmedia エンタープライズ

Comments


Option