Create a run control script: /etc/init.d/rc.vm
Use chkconfig to start the service on boot:
chkconfig add rc.vm
chkconfig rc.vm on
chkconfig rc.vm on
Start and Stop individual VMs with:
service rc.vm startvm Meego-dev
service rc.vm stopvm Meego-dev
service rc.vm stopvm Meego-dev
VMs are accessible over RDP using ports 9000+
Edit rc.vm to include:
#!/bin/sh
### BEGIN INIT INFO
# Provides: rc.vm
# Required-Start: $network $syslog $vboxdrv
# Required-Stop: $network $syslog
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: VirtualBox Virtual Machine autostart
### END INIT INFO
VM=("WinXP-VM" "Embedded-Linux-Yocto-VM" "Meego-dev" "SELX")
case "$1" in
start)
for ((i=0; i<${#VM[@]}; i+=1))
do
echo "Starting VM: ${VM[$i]}"
/usr/bin/VBoxHeadless --startvm ${VM[$i]} --vrde=on --vrdeproperty "TCP/Ports"=$[9000+$i] 2>/dev/null &
sleep 3
done
;;
stop)
for ((i=0; i<${#VM[@]}; i+=1))
do
echo "Stopping VM: ${VM[$i]}"
/usr/bin/VBoxManage controlvm ${VM[$i]} poweroff 2>/dev/null
done
;;
status)
/usr/bin/VBoxManage list runningvms 2>/dev/null
;;
stopvm)
if [ $# -gt 1 ]; then
for ((i=0; i<${#VM[@]}; i+=1))
do
if [ "$2" = ${VM[$i]} ]; then
echo "Stopping VM: ${VM[$i]}"
/usr/bin/VBoxManage controlvm ${VM[$i]} poweroff 2>/dev/null
fi
done
fi
;;
startvm)
if [ $# -gt 1 ]; then
for ((i=0; i<${#VM[@]}; i+=1))
do
if [ "$2" = ${VM[$i]} ]; then
echo "Stopping VM: ${VM[$i]}"
/usr/bin/VBoxHeadless --startvm ${VM[$i]} --vrde=on --vrdeproperty "TCP/Ports"=$[9000+$i] 2>/dev/null &
fi
done
fi
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
;;
esac
No comments:
Post a Comment