This guide explains how you can run virtual machines with Sun VirtualBox 3.1.x on a headless OpenSUSE 11.2 server. Normally you use the VirtualBox GUI to manage your virtual machines, but a server does not have a desktop environment. Fortunately, VirtualBox comes with a tool called VBoxHeadless that allows you to connect to the virtual machines over a remote desktop connection, so there’s no need for the VirtualBox GUI.
I do not issue any guarantee that this will work for you!
1 Preliminary Note
I have tested this on an OpenSUSE 11.2 server (host system) with the IP address 192.168.0.100 where I’m logged in as a normal user (user name admin in this example) instead of as root.
If you only have a root account, but no normal user account, create one as follows (user admin, group admin)…
# groupadd admin
# useradd -d /home/admin -m -g admin -s /bin/bash admin
… create a password for the new user…
# passwd admin
… and log in as that user.
2 Installing VirtualBox
To install VirtualBox 3.1.x on our OpenSUSE 11.2 server, we need root privileges, therefore we run
First we have to find out what kernel we have installed:
# uname -a
server1:/home/admin # uname -a
Linux server1 126.96.36.199-0.1-desktop #1 SMP PREEMPT 2009-10-26 15:49:03 +0100 x86_64 x86_64 x86_64 GNU/Linux
As you see I have the kernel-desktop package installed – if you have the kernel-server package installed, replace desktop with server in the following command.
We install the dependencies for VirtualBox 3.1.x as follows (by installing the kernel-desktop/kernel-server package again, we make sure that we have the latest version installed):
# yast -i kernel-desktop kernel-desktop-devel kernel-source kernel-syms Xerces-c gcc make
If the kernel gets updated, YaST will tell you that you must reboot the system – in this case run:
Log in as the normal user again and then become root:
Next download and register Sun’s public rpm key:
# wget -q http://download.virtualbox.org/virtualbox/debian/sun_vbox.asc -O- | rpm –import –
Now we enable the VirtualBox OpenSUSE repository on our system:
# cd /etc/zypp/repos.d/
# wget http://download.virtualbox.org/virtualbox/rpm/opensuse/11.2/virtualbox.repo
We can now simply install VirtualBox 3.1.x as follows:
# yast -i VirtualBox-3.1
Afterwards make sure that the vboxdrv kernel module is loaded:
# modprobe vboxdrv
The following command makes sure that the vboxdrv kernel module gets loaded automatically whenever you boot the system:
# insserv vboxdrv
Now we must add the user that will run VirtualBox (admin in this example) to the vboxusers group:
# /usr/sbin/usermod -G vboxusers admin
VirtualBox is now installed and ready to be used.
to leave the root account and become a normal user (admin) again.
3 Using VirtualBox On The Command Line
3.1 Creating A VM
To create a VM on the command line, we can use the VBoxManage command. See
$ VBoxManage –help
for a list of available switches and (highly recommended!) take a look at http://www.virtualbox.org/manual/UserManual.html#vboxmanage.
I will now create an Ubuntu 9.10 Server VM with 256MB memory and a 10GB hard drive from the Ubuntu 9.10 Server iso image (which I have stored in /home/ubuntu-9.10-server-amd64.iso):
$ VBoxManage createvm –name “Ubuntu 9.10 Server” –register
$ VBoxManage modifyvm “Ubuntu 9.10 Server” –memory 256 –acpi on –boot1 dvd –nic1 bridged –bridgeadapter1 eth0
$ VBoxManage createhd –filename Ubuntu_9_10_Server.vdi –size 10000 –register
$ VBoxManage storagectl “Ubuntu 9.10 Server” –name “IDE Controller” –add ide
$ VBoxManage storageattach “Ubuntu 9.10 Server” –storagectl “IDE Controller” –port 0 –device 0 –type hdd –medium Ubuntu_9_10_Server.vdi
$ VBoxManage storageattach “Ubuntu 9.10 Server” –storagectl “IDE Controller” –port 1 –device 0 –type dvddrive –medium /home/ubuntu-9.10-server-amd64.iso
3.2 Importing An Existing VM
Let’s assume you have a VM called examplevm that you want to reuse on this host. On the old host, you should have a directory Machines/examplevm in the VirtualBox directory; Machines/examplevm should contain the examplevm.xml file. Copy the examplevm directory (including the examplevm.xml file) to your new Machines directory (if your user name is admin, this is /home/admin/.VirtualBox/Machines – the result should be /home/admin/.VirtualBox/Machines/examplevm/examplevm.xml).
In addition to that copy the examplevm.vdi file from the old VDI directory to the new one (e.g. /home/admin/.VirtualBox/VDI/examplevm.vdi).
Afterwards, you must register the imported VM:
$ VBoxManage registervm Machines/examplevm/examplevm.xml
3.3 Starting A VM With VBoxHeadless
Regardless of if you create a new VM or import and old one, you can start it with the command:
$ VBoxHeadless –startvm “Ubuntu 9.10 Server”
(Replace Ubuntu 9.10 Server with the name of your VM.)
VBoxHeadless will start the VM and a VRDP (VirtualBox Remote Desktop Protocol) server which allows you to see the VM’s output remotely on another machine.
To stop a VM, run
$ VBoxManage controlvm “Ubuntu 9.10 Server” poweroff
To pause a VM, run
$ VBoxManage controlvm “Ubuntu 9.10 Server” pause
To reset a VM, run
$ VBoxManage controlvm “Ubuntu 9.10 Server” reset
To learn more about VBoxHeadless, take a look at
$ VBoxHeadless –help
and at http://www.virtualbox.org/manual/UserManual.html.
4 Connecting To A VM From A Remote Desktop
4.1 Windows XP
You can use the built-in Remote Desktop Connection utility to connect to the VM:
Type in the hostname or IP address of the host (not the guest!):
And voilà, you should be connected to the VM:
On Linux desktops, you can use the rdesktop command to connect to the VM. Open a terminal (on Ubuntu, for example, it’s under Applications > Accessories > Terminal)…
… and type in the following command:
rdesktop -a 16 192.168.0.100
(192.168.0.100 is the host IP address, not the one of the guest – replace it with your own IP address or hostname; -a 16 means 16 bit colour depth.)
And voilà, you should be connected to the VM:
- VirtualBox: http://www.virtualbox.org/
- OpenSUSE: http://www.opensuse.org/