VBoxHeadless - Running Virtual Machines With VirtualBox 3.0 On A Headless Fedora 11 Server
Version 1.0
Author: Falko Timme
Follow me on Twitter
This guide explains how you can run virtual machines with Sun VirtualBox 3.0 (released on June 30, 2009) on a headless Fedora 11 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 a Fedora 11 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.0 on our Fedora 11 server, we need root privileges, therefore we run
$ su
Then we install the dependencies for VirtualBox 3.0 as follows:
# yum groupinstall 'Development Tools'
# yum groupinstall 'Development Libraries'
# yum install SDL kernel-devel kernel-headers
Next we pick the right VirtualBox package from http://www.virtualbox.org/wiki/Linux_Downloads; pick the i386 or AMD64 package (depending on your architecture) for Fedora 11 ("Leonidas") (you can find out your architecture by running
# uname -m
The output on my test system is
[root@server1 admin]# uname -m
x86_64
[root@server1 admin]#
which means I must pick the AMD64 package.
)...
... and download it as follows:
# cd /tmp
# wget http://download.virtualbox.org/virtualbox/3.0.0/VirtualBox-3.0.0_49315_fedora11-1.x86_64.rpm
It is possible that the package gets stored as .rpm?xxx instead of just .rpm. To check this, run
# ls -l
[root@server1 tmp]# ls -l
total 43860
-rw-r--r-- 1 root root 44906413 2009-06-30 14:24 VirtualBox-3.0.0_49315_fedora11-1.x86_64.rpm?e=1247145598&h=bd5420531eeb13489ca4560a74bbf532
-rw-r--r--. 1 root root 0 2009-07-09 14:06 yum.log
[root@server1 tmp]#
As you see, my package is named VirtualBox-3.0.0_49315_fedora11-1.x86_64.rpm?e=1247145598&h=bd5420531eeb13489ca4560a74bbf532. Therefore I rename it:
# mv VirtualBox-3.0.0_49315_fedora11-1.x86_64.rpm\?e\=1247145598\&h\=bd5420531eeb13489ca4560a74bbf532 VirtualBox-3.0.0_49315_fedora11-1.x86_64.rpm
(You can use the TAB key to let the shell auto-complete the filename.)
Afterwards, we install VirtualBox 3.0 as follows:
# rpm -ivh VirtualBox-3.0.0_49315_fedora11-1.x86_64.rpm
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.
Type
# exit
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.04 Server VM with 256MB memory and a 10GB hard drive from the Ubuntu 9.04 Server iso image (which I have stored in /home/admin/ubuntu-9.04-server-i386.iso):
$ VBoxManage createvm -name "Ubuntu 9.04 Server" -register
$ VBoxManage modifyvm "Ubuntu 9.04 Server" -memory "256MB" -acpi on -boot1 dvd -nic1 nat
$ VBoxManage createvdi -filename "Ubuntu_9_04_Server.vdi" -size 10000 -register
$ VBoxManage modifyvm "Ubuntu 9.04 Server" -hda "Ubuntu_9_04_Server.vdi"
$ VBoxManage registerimage dvd /home/admin/ubuntu-9.04-server-i386.iso
$ VBoxManage modifyvm "Ubuntu 9.04 Server" -dvd /home/admin/ubuntu-9.04-server-i386.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.04 Server"
(Replace Ubuntu 9.04 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 learn more about VBoxHeadless, take a look at
$ VBoxHeadless --help
and at http://www.virtualbox.org/manual/UserManual.html#id2515738.