Script ini saya modifikasi dari script nya Kevin Swanson yang ditampilkan disini.
Buat config file untuk vboxcontrol init.d script
# mkdir /etc/virtualbox # touch /etc/virtualbox/machines_enabled
file machines_enabled ini berisi daftar nama dari Guest VM yang akan dijalankan secara otomatis. Daftarnya bisa kita dapatkan dari perintah :
$VBoxManage list vms "Mikrotik3.10" {1e8dfce2-2068-4922-9ce1-86925e31b5cf} "Ubuntu 8.04" {c4050afb-7077-4c60-83e5-898d4ff8508e} "HS-Win" {75d80d99-d9c5-41cf-9e88-1d1c3ef5dd4c}
Sehingga isi file machines_enabled adalah
#nano /etc/virtualbox/machines_enabled "Mikrotik3.10" "Ubuntu 8.04" "HS-Win"
Buat VirtualBox VM init.d script
Buat script init.d baru dan beri permition untuk di eksekusi
# touch /etc/init.d/vboxcontrol # chmod 755 /etc/init.d/vboxcontrol
Kopi script berikut ke /etc/init.d/vboxcontrol
# Startup script for VirtualBox Virtual Machines # # update-rc.d defaults 98 02 # chkconfig: 345 98 02 # description: Manages VirtualBox VMs # processname: vboxcontrol # # pidfile: /var/run/vboxcontrol/vboxcontrol.pid # ### BEGIN INIT INFO # ### END INIT INFO # # Version 20120302 by ahmad basuki base on: # Version 20090301 by Kevin Swanson based on: # Version 2008051100 by Jochem Kossen # http://farfewertoes.com # # Released in the public domain # # This file came with a README file containing the instructions on how # to use this script. # ################################################################################ # INITIAL CONFIGURATION VBOXDIR="/etc/virtualbox" VM_USER="vmadmin" USE_NAT="no" export PATH="${PATH:+$PATH:}/bin:/usr/bin:/usr/sbin:/sbin" if [ -f $VBOXDIR/config ]; then . $VBOXDIR/config fi SU="su $VM_USER -c" VBOXMANAGE="VBoxManage" ################################################################################ # FUNCTIONS # Determine if USE_NAT is set to "yes" use_nat() { if [ "$USE_NAT" = "yes" ]; then return `true` else return `false` fi } log_failure_msg() { echo $1 } log_action_msg() { echo $1 } # Check for running machines every few seconds; return when all machines are # down wait_for_closing_machines() { RUNNING_MACHINES=`$SU "$VBOXMANAGE list runningvms" | wc -l` if [ $RUNNING_MACHINES != 0 ]; then sleep 5 wait_for_closing_machines fi } ################################################################################ # RUN case "$1" in start) if [ -f /etc/virtualbox/machines_enabled ]; then cat /etc/virtualbox/machines_enabled | while read VM; do log_action_msg "Starting VM: $VM ..." $SU "$VBOXMANAGE startvm "$VM" --type headless" RETVAL=$? done touch /var/lock/vboxcontrol fi ;; stop) # NOTE: this stops all running VM's. Not just the ones listed in the # config $SU "$VBOXMANAGE list runningvms" |awk '{ print $1 }' | while read VM; do log_action_msg "Shutting down VM: $VM ..." $SU "$VBOXMANAGE controlvm "$VM" savestate" done rm -f /var/lock/vboxcontrol #wait_for_closing_machines ;; start-vm) log_action_msg "Starting VM: $2 ..." $SU "$VBOXMANAGE startvm "$2" --type headless" ;; stop-vm) log_action_msg "Stopping VM: $2 ..." $SU "$VBOXMANAGE controlvm "$2" savestate" ;; poweroff-vm) log_action_msg "Powering off VM: $2 ..." $SU "$VBOXMANAGE controlvm "$2" poweroff" ;; status) echo "The following virtual machines are currently running:" $SU "$VBOXMANAGE list runningvms" | while read VM; do echo -n "$VM (" echo -n `$SU "VBoxManage showvminfo ${VM%% *}|grep Name:|sed -e 's/^Name:s*//g'"` echo ')' done ;; *) echo "Usage: $0 {start|stop|status|start-vm |stop-vm |poweroff-vm }" exit 3 esac exit 0
tambahkan vboxcontrol ke daftar startup service
# update-rc.d vboxcontrol defaults 98 02
Cara penggunaan:
Menjalankan semua virtual machine yang terdaftar dalam file machines_enabled
#/etc/init.d/vboxcontrol start
Mematikan semua virtual machine yang sedang running
#/etc/init.d/vboxcontrol stop
Melihat status virtual maschine yang running
#/etc/init.d/vboxcontrol status
Menyalakan virtual machine tertentu
#/etc/init.d/vboxcontrol start-vm
Mematikan virtual machine tertentu
#/etc/init.d/vboxcontrol stop-vm
Mematikan power virtual machine tertentu
#/etc/init.d/vboxcontrol poweroff-vm
Pada script asli option stop akan mengirimkan sinyal acpipowerbutton, sedangkan pada host saya option tersebut tidak jalan, sehingga saya menggantinya dengan option savestate.
tambahan script :
#!/bin/bash
# This script starts and stops the VirtualBox virtual machine winxpvb11.
# Use a RDP client to connect to the virtual machine.
case “$1” in
‘start’)
/usr/bin/VBoxHeadless –startvm “Windows Server 2008 SP2 x86” &
;;
‘stop’) /usr/bin/VirtualBox/VBoxManage controlvm “Windows Server 2008 SP2 x86” poweroff
;;
*)
echo “Usage: $0 { start | stop }”
exit 1
;;
esac