Difference between revisions of "VirtualBox 4.0 on SME Server v8 beta 6"

From SME Server
Jump to navigationJump to search
m
m
Line 40: Line 40:
 
   <li>Create a symbolic link</li>
 
   <li>Create a symbolic link</li>
  
NOTE: Be careful if you cut-and-paste the command below. In some terminal windows, the '-' in '-s' does not paste correctly.
+
NOTE: Be careful if you cut-and-paste the command below. In some terminal windows, parts of the command does not paste correctly.  
  
 
       <pre>ln –s /usr/src/kernels/’uname  –r’-i686 /lib/modules/`uname -r`/build</pre>
 
       <pre>ln –s /usr/src/kernels/’uname  –r’-i686 /lib/modules/`uname -r`/build</pre>

Revision as of 23:33, 22 August 2011

Maintainer

Computing SOS Pty Ltd

Description

Below are instructions on how to install VirtualBox version 4 on fresh install SME Server v8 beta 6. Plus installing and configuring phpVirtualBox to control (create, edit, remove) your virtual machine on its web interface. In addition, scripts to automatically start the vbox service and the virtual machines in case of power failure can be found at the end of this article.

Requirements

Computer with SME server version 8 beta 6 installed.

Installation

  1. Setup SME Server v8 beta 6.
  2. Do a yum update.
  3. yum update
  4. If any updates were applied,
  5. signal-event post-upgrade
    signal-event reboot
  6. Check your current kernel.
  7. uname -r
  8. Install kernel-devel to get the latest development tree (2.6.18-238.12.1.el5PAE-i686).
  9. Use this command only if you have PAE kernel installed:
    yum install kernel-PAE-devel

    Otherwise,

    yum install kernel-devel
  10. Update SME again
    signal-event post-upgrade
    signal-event reboot
  11. Create a symbolic link
  12. NOTE: Be careful if you cut-and-paste the command below. In some terminal windows, parts of the command does not paste correctly.
    ln –s /usr/src/kernels/’uname  –r’-i686 /lib/modules/`uname -r`/build
  13. Install DKMS
  14. wget http://packages.sw.be/dkms/dkms-2.1.1.2-1.el5.rf.noarch.rpm
    yum install  dkms-2.1.1.2-1.el5.rf.noarch.rpm
  15. Enable fopen on php.ini (line 65) located on /etc/
  16. allow_url_fopen = On
  17. Install VirtualBox v4.0 (At the time of writing, the latest version is v4.1.0).
  18. wget http://download.virtualbox.org/virtualbox/4.1.0/VirtualBox-4.1-4.1.0_73009_rhel5-1.i386.rpm
    yum install VirtualBox-4.1-4.1.0_73009_rhel5-1.i386.rpm -y

    Note: you will get an error message, which you can ignore.

  19. Setup VirtualBox as a service so it starts automatically after a reboot by copying the vboxwebsrv from rc5.d to rc7.d.
  20. cp /etc/rc5.d/S30vboxdrv /etc/rc7.d/.
    cp /etc/rc5.d/S35vboxballoonctrl /etc/rc7.d/.
    cp /etc/rc5.d/S35vboxweb-service /etc/rc7.d/.
  21. Create a vbox.cfg file on your /etc/vbox/.
    nano /etc/vbox/vbox.cfg

    vbox.cfg should have this content.

    VBOXWEB_USER='root'
    VBOXWEB_HOST=127.0.0.1
    VBOXWEB_PORT=18083

    Note: Without the vbox.cfg, vbox services on your rc7.d folder will not start.

  22. Before we install phpVirtualBox, make sure you install SOAP first.
  23. yum install php-soap
  24. Login to the server-manager page and create an ibay for phpvbox. Don’t forget to assign a password.
  25. Install phpVirtualBox
  26. cd /tmp
    
    wget  http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.0-7.zip
    unzip phpvirtualbox-4.0-7.zip
    cd phpvirtualbox-4.0-7
    cp –R * /home/e-smith/files/ibays/phpvbox/html
  27. Create a tmp folder inside the /phpvbox/html folder.
  28. cd /home/e-smith/files/ibays/phpvbox/html
    mkdir tmp
    chmod 777 tmp/
    
  29. Open config.php (located on your /phpvbox/html/ folder) and uncomment some lines & change the tmp location as per below.
  30. cp config.php.example config.php
    nano /home/e-smith/files/ibays/phpvbox/html/config.php
    /* SOAP URL of vboxwebsrv (not phpVirtualBox's URL) */
    var $location = 'http://127.0.0.1:18083/';
    
    // Disable authentication
    var $noAuth = true;
    
    // Host / ip to use for console connections
    //var $consoleHost = '192.168.100.1';
    
    var $enableAdvancedConfig = true;
    
    // Authentication library.
    //var $authLib = 'Builtin';
    
    // Allow VDE network configuration. This must be supported by the underlying VirtualBox installation!
    var $enableVDE = true;
    
    // Path
    var $cachePath = '../tmp';
    
  31. Disable authentication of vboxwebsrv (this is not recommended, but at this stage, this is the only setup that works). Login to the server’s SSH and type this command.
  32. vboxmanage setproperty websrvauthlibrary null
  33. Install VirtualBox extension pack to enable support for USB 2.0 devices, VirtualBox RDP and PXE boot for Intel cards.
  34. wget http://download.virtualbox.org/virtualbox/4.1.0/Oracle_VM_VirtualBox_Extension_Pack-4.1.0-73009.vbox-extpack
    vboxmanage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.1.0-73009.vbox-extpack
  35. Go to http://your_server’s_ip/phpvbox (e.g. http://192.168.100.1/phpvbox) to create our virtual machine.
    • Create a new virtual machine (e.g. vmXP)
    • Enable network card (either NAT or Bridged) so you can connect to your new VM console.
    • Open an RDP client (run->mstsc) then type your server’s IP address e.g. 192.168.100.1.

    Virtual box.jpg

  36. Download VirtualBox Guest Addition from here http://download.virtualbox.org/virtualbox/4.0.8/VBoxGuestAdditions_4.0.8.iso and install it to your newly setup VM.

Automatically Start Virtual Machine

  1. Edit your vbox file on /etc/sysconfig/
  2. nano /etc/sysconfig/vbox

    vbox code should look like this:

    # Virtual box machines to autostart
    # Example to start 2 machines
    #       VBOX_AUTOSTART = "MachineName1 MachineName2"
    
    VBOX_AUTOSTART="vmXP"
    
  3. Edit your vbox file located on /etc/init.d/
  4. #!/bin/sh
    #
    # chkconfig: - 91 35
    # description: Starts and stops vbox autostart VMs.
    
    ### BEGIN INIT INFO
    # Provides: vbox
    # Required-Start: $network $named $vboxdrv
    # Required-Stop: $network $named
    # Default-Start:
    # Default-Stop: 0 1 2 3 4 5 6
    # Short-Description: Autostart some Virtual Box VMs
    # Description: Autostart some Virtual Box VMs that are mentioned in /etc/sysconfig/vbox file
    # Written by Alex Amiryan
    ### END INIT INFO
    
    . /etc/rc.d/init.d/functions
    
    MANAGE_CMD=vboxmanage
    
    [ -r /etc/sysconfig/vbox ] && . /etc/sysconfig/vbox
    
    prog=$"Virtual Box Machines"
    
    start()
    {
            echo -n $"Starting $prog: "
            RETVAL=0
    
            for vbox_name in ${VBOX_AUTOSTART}
            do
                SERVS=1
                echo -n "${vbox_name} "
                daemon $MANAGE_CMD startvm "${vbox_name}" -type headless >/dev/null 2>&1
                RETVAL=$?
                [ "$RETVAL" -eq 0 ] || break
            done
            if [ -z "$SERVS" ]; then
                echo -n "no virtual machines configured "
                failure
                RETVAL=6
            else
                if [ "$RETVAL" -eq 0 ]; then
                    success $"vbox startup"
                    touch /var/lock/subsys/vbox
                else
                    failure $"vbox start"
                fi
            fi
            echo
            return "$RETVAL"
    }
    
    stop()
    {
            echo -n $"Shutting down $prog: "
            for vbox_name in ${VBOX_AUTOSTART}
            do
                echo -n "${vbox_name} "
                runuser root -c "$MANAGE_CMD -q controlvm "${vbox_name}" savestate" >/dev/null 2>&1
            done
            RETVAL=$?
            [ "$RETVAL" -eq 0 ] && success $"vbox shutdown" || \
                failure $"vbox shutdown"
            echo<
            [ "$RETVAL" -eq 0 ] && rm -f /var/lock/subsys/vbox
            return "$RETVAL"
    }
    
    status()
    {
            for vbox_name in ${VBOX_AUTOSTART}
            do
                echo -n "${vbox_name} "
                $MANAGE_CMD showvminfo "${vbox_name}"|grep "^State:\s*.*$"
            done
    }
    
    case "$1" in
      start)
            start
            ;;
      stop)
            stop
            ;;
      restart|force-reload)
            stop
            start
            ;;
      status)
            status
            ;;
      *)
            echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|status}" >&2
            exit 3
            ;;
    esac