User Tools

Site Tools


virtualbox

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
virtualbox [2010/02/18 08:55] 172.26.0.166virtualbox [2010/02/18 12:48] 172.26.0.166
Line 51: Line 51:
 ---- ----
  
-Two Methods:+How do I get my VirtualBox Guest VM’s to start and stop when the host system reboots, shutdown, or starts.
  
- 1 VBoxTool http://vboxtool.sourceforge.net+Solution / Answer:
  
- 2 Script from http://www.kernelhardware.org/virtualbox-auto-start-vm-centos-fedora-redhat+Create an init.d script so that VirtualBox Guest VM are controlled as a system service. 
 +VBoxTool http://vboxtool.sourceforge.net
  
-===Ubuntu:Debian=== +http://www.kernelhardware.org/virtualbox-auto-start-vm-centos-fedora-redhat
-VBoxTool currently consist only of a set of scriptsWith this scripts, virtual  +
-machines of VirtualBox in a Linux headless server can be controlled. Start, stop,  +
-save, backup and show status of sessions in batch mode from the command line.+
  
-Usage and installation is tested only on Ubuntu. Please report if a specific  +---- 
-function is not working in another environment, say OpenSUSE, Fedora, etc.+Create Config File for vboxcontrol service script
  
-INSTALLATION+<code># mkdir /etc/virtualbox</code 
 +<code># touch /etc/virtualbox/machines_enabled</code> 
 +The file “machines_enabled” located in “/etc/virtualbox” is where we list the names of the Guest VM’s that we want vboxcontrol to control.
  
-Note. Precede commands with 'sudo' when not operated as root.+To get a list of your current Guest VM names execute the following command and notice the name is in ” “: 
 +<file> 
 +$ VBoxManage list vms 
 +"Centos_HDLES_x86_1" {5087b02a-5816-4c76-b302-c13175623023} 
 +"Centos_HDLES_x86_3" {bcae660a-f627-46d6-8c95-9da97363eeea} 
 +"Centos_HDLES_LAMP" {3907173c-cc15-4820-a930-f0bb3c13cb7e}</file> 
 +Add Guest VM’s to “machines_enabled” include one VM name per line 
 +<file> 
 +# vi /etc/virtualbox/machines_enabled 
 +Centos_HDLES_x86_1 
 +Centos_HDLES_x86_3 
 +Centos_HDLES_LAMP</file> 
 +Add VirtualBox VM Service script
  
-* Place the main script script/vboxtool in /usr/local/bin+Create new init.d service script file and give execute permissions
  
-* Make vboxtool executable:  +<code># touch /etc/init.d/vboxcontrol</code> 
-    chmod +x /usr/local/bin/vboxtool+<code># chmod 755 /etc/init.d/vboxcontrol</code> 
 +Copy the following code into file “/etc/init.d/vboxcontrol”
  
-* Place the init script script/vboxtoolinit in /etc/init.d+<code bash> 
 +#! /bin/sh 
 +# vboxcontrol   Startup script for VirtualBox Virtual Machines 
 +
 +# chkconfig: 345 98 02 
 +# description: Manages VirtualBox VMs 
 +# processname: vboxcontrol 
 +
 +# pidfile: /var/run/vboxcontrol/vboxcontrol.pid 
 +
 +### BEGIN INIT INFO 
 +
 +### END INIT INFO 
 +
 +# Version 20090301 by Kevin Swanson <kswan.info> based on: 
 +# Version 2008051100 by Jochem Kossen <jochem.kossen@gmail.com> 
 +# http://farfewertoes.com 
 +
 +# Released in the public domain 
 +
 +# This file came with a README file containing the instructions on how 
 +# to use this script. 
 +#
  
-* Make vboxtoolinit executable:  +# Source function library. 
-    chmod +x /etc/init.d/vboxtoolinit +if [ -f /etc/init.d/functions ] ; then 
-   +. /etc/init.d/functions 
-* Activate the init script vboxtoolinit: +elif [ -f /etc/rc.d/init.d/functions ] ; then 
-    update-rc.d vboxtoolinit defaults 99 10 +/etc/rc.d/init.d/functions 
-   +else 
-* Create a folder /etc/vboxtoolIn here, two config files have to be created, see +exit 1 
-  configuration section below, type 'vboxtool help' for more instructions+fi
-   +
-NoteTo remove vboxtoolinit from autostart: update-rc.d -f vboxtoolinit remove+
  
-CONFIGURATION+################################################################################ 
 +# INITIAL CONFIGURATION 
 +VBOXDIR="/etc/virtualbox" 
 +VM_USER="vmadmin" 
 +USE_NAT="no"
  
-Note. Configuration from vboxtool does *not* taking place on *running* sessions,  +export PATH="${PATH:+$PATH:}/bin:/usr/bin:/usr/sbin:/sbin"
-so save or stop all sessions before issueing the autostart command.+
  
-* Create /etc/vboxtool/machines.conf: +if [ -f $VBOXDIR/config ]; then 
-    <session name>,<VRDP-port>+$VBOXDIR/config 
 +fi
  
-  The VRDP-port enables RDP-clients like rdesktop to connect. It may be left blank.+SU="su $VM_USER -c" 
 +VBOXMANAGE="VBoxManage -nologo"
  
-* Create /etc/vboxtool/vboxtool.conf: +################################################################################ 
-    vbox_user='<user name>'+# FUNCTIONS
  
-* Issue the following command: +# Determine if USE_NAT is set to "yes" 
-    vboxtool autostart+use_nat() { 
 +if [ "$USE_NAT" = "yes" ]; then 
 +return `true` 
 +else 
 +return `false` 
 +fi 
 +}
  
-  VBoxTool will configure sessions (VRDP-port). By now, session(s) should be up and  +log_failure_msg() 
-  running and configured.+echo $1 
 +}
  
-* Check if sessions or running, with the assumed vrdp-port: +log_action_msg() { 
-    vboxtool show +echo $1 
 +}
  
-  Show only the running sessions: +# Check for running machines every few seconds; return when all machines are 
-    vboxtool showrun+# 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 
 +}
  
-* Check if sessions configured in /etc/vboxtool/machines.conf are be automatically  +################################################################################ 
-  started at reboot. Reboot your system, check with: vboxtool showrun+# RUN 
 +case "$1" in 
 +start) 
 +if [ -f /etc/virtualbox/machines_enabled ]; then
  
-UPGRADING FROM 0.2+cat /etc/virtualbox/machines_enabled | while read VM; do 
 +log_action_msg "Starting VM: $VM ..." 
 +$SU "$VBOXMANAGE startvm "$VM" -type vrdp" 
 +RETVAL=$? 
 +done 
 +touch /var/lock/subsys/vboxcontrol 
 +fi 
 +;; 
 +stop) 
 +# NOTE: this stops all running VM's. Not just the ones listed in the 
 +# config 
 +$SU "$VBOXMANAGE list runningvms" | while read VM; do 
 +log_action_msg "Shutting down VM: $VM ..." 
 +$SU "$VBOXMANAGE controlvm "$VM" acpipowerbutton" 
 +done 
 +rm -f /var/lock/subsys/vboxcontrol 
 +wait_for_closing_machines
  
-Sorry for breaking things here, but it's all in the name of naming consistency...+;; 
 +start-vm) 
 +log_action_msg "Starting VM: $2 ...
 +$SU "$VBOXMANAGE startvm "$2" -type vrdp" 
 +;; 
 +stop-vm) 
 +log_action_msg "Stopping VM: $2 ..." 
 +$SU "$VBOXMANAGE controlvm "$2" acpipowerbutton" 
 +;; 
 +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 <VM 
 +name>|stop-vm <VM name>|poweroff-vm <VM name>}" 
 +exit 3 
 +esac
  
-- Config folder is moved from /etc/vbox to /etc/vboxtool. Rename this folder. +exit 0 
-- Main script 'vbox' is renamed to 'vboxtool'+</code> 
 +Add vboxcontrol service to chkconfig registry
  
-USAGE+<code># chkconfig --add vboxcontrol</code> 
 +Tell chkconfig to create symlinks for runlevels and activate service vboxcontrol
  
-After installation, type 'vboxtool help' for more info.+<code># chkconfig vboxcontrol on</code>
  
-KNOWN ISSUES 
  
-- Backup is not working as expected when using snapshots. When a snapshot is  
-  present, the main vdi file is not copied, even if it's different from  
-  previous backups. Problem is that once a snapshot is made, the main vdi  
-  (according to info from 'VBoxManage showvminfo') is pointing to the snapshot  
-  vdi instead of the expected, chained main vdi in the vdi folder. 
-  (Tracker #2132265) 
- 
-MORE HELP 
- 
-- Type: 'vboxtool help' 
-- See http://vboxtool.sourceforge.net for more details.     
- 
-=== Fedora :Redhat : CentOS === 
----