How to create and start VirtualBox VM without GUI

Suppose you want to create and run virtual machines (VMs) on VirtualBox. However, a host machine does not support X11 environment, or you only have access to a terminal on a remote host machine. Then how can you create and run VMs on such a host machine without VirtualBox GUI? This can be a common situation for servers where VMs are managed from remotely.

In fact, VirtualBox comes with a suite of command line utilities, and you can use the VirtualBox command line interfaces (CLIs) to manage VMs on a remote headless server. In this tutorial, I will show you how to create and start a VM without VirtualBox GUI.

Prerequisite for starting VirtualBox VM without GUI

First, you need to install VirtualBox Extension Pack. The Extension Pack is needed to run a VRDE remote desktop server used to access headless VMs. Its binary is available for free. To download and install VirtualBox Extension Pack:

$ wget http://download.virtualbox.org/virtualbox/4.2.12/Oracle_VM_VirtualBox_Extension_Pack-4.2.12-84980.vbox-extpack
$ sudo VBoxManage extpack install ./Oracle_VM_VirtualBox_Extension_Pack-4.2.12-84980.vbox-extpack

Verify that the Extension Pack is successfully installed, by using the following command.

$ VBoxManage list extpacks
Extension Packs: 1
Pack no. 0:   Oracle VM VirtualBox Extension Pack
Version:      4.2.12
Revision:     84980
Edition:      
Description:  USB 2.0 Host Controller, VirtualBox RDP, PXE ROM with E1000 support.
VRDE Module:  VBoxVRDP
Usable:       true 
Why unusable: 

Create a VirtualBox VM from the command line

I assume that the VirtualBox' VM directory is located in "~/VirtualBox\ VMs".

First create a VM. The name of the VM is "testvm" in this example.

$ VBoxManage createvm --name "testvm" --register

Specify the hardware configurations of the VM (e.g., Ubuntu OS type, 1024MB memory, bridged networking, DVD booting).

$ VBoxManage modifyvm "testvm" --memory 1024 --acpi on --boot1 dvd --nic1 bridged --bridgeadapter1 eth0 --ostype Ubuntu

Create a disk image (with size of 10000 MB). Optionally, you can specify disk image format by using "--format [VDI|VMDK|VHD]" option. Without this option, VDI image format will be used by default.

$ VBoxManage createvdi --filename ~/VirtualBox\ VMs/testvm/testvm-disk01.vdi --size 10000

Add an IDE controller to the VM.

$ VBoxManage storagectl "testvm" --name "IDE Controller" --add ide

Attach the previously created disk image as well as CD/DVD drive to the IDE controller. Ubuntu installation ISO image (found in /iso/ubuntu-12.04.1-server-i386.iso) is then inserted to the CD/DVD drive.

$ VBoxManage storageattach "testvm" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium ~/VirtualBox\ VMs/testvm/testvm-disk01.vdi
$ VBoxManage storageattach "testvm" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /iso/ubuntu-12.04.1-server-i386.iso

Start VirtualBox VM from the command line

Once a new VM is created, you can start the VM headless (i.e., without VirtualBox console GUI) as follows.

$ VBoxHeadless --startvm "testvm" &

The above command will launch the VM, as well as VRDE remote desktop server. The remote desktop server is needed to access the headless VM's console.

By default, the VRDE server is listening on TCP port 3389. If you want to change the default port number, use "-e" option as follows.

$ VBoxHeadless --startvm "testvm" -e "TCP/Ports=4444" &

If you don't need remote desktop support, launch a VM with "--vrde off" option.

$ VBoxHeadless --startvm "testvm" --vrde off &

Connect to headless VirtualBox VM via remote desktop

Once a VM is launched with remote desktop support, you can access the VM's console via any remote desktop client (e.g., rdesktop).

To install rdesktop on Ubuntu or Debian:

$ sudo apt-get install rdesktop

To install rdesktop on CentOS, RHEL or Fedora, configure Repoforge on your system, and then run the following.

$ sudo yum install rdesktop

To access a headless VM on a remote host machine, run the following.

$ rdesktop -a 16 <IP_address_host_machine>

If you use a custom port number for a remote desktop server, run the following instead.

$ rdesktop -a 16 <IP_address_host_machine:port_number>

Once rdesktop is successfully connected to the VM via remote desktop, you will see the initial installation screen.


Subscribe to Xmodulo

Do you want to receive Linux FAQs, detailed tutorials and tips published at Xmodulo? Enter your email address below, and we will deliver our Linux posts straight to your email box, for free. Delivery powered by Google Feedburner.

The following two tabs change content below.
Dan Nanni is the founder and also a regular contributor of Xmodulo.com. He is a Linux/FOSS enthusiast who loves to get his hands dirty with his Linux box. He likes to procrastinate when he is supposed to be busy and productive. When he is otherwise free, he likes to watch movies and shop for the coolest gadgets.
Your name can also be listed here. Write for us as a freelancer.

11 thoughts on “How to create and start VirtualBox VM without GUI

  1. The remote desktop does not work. I installed Virtualbox in a remote machines. logged in to that machine with ssh. then I created a VM following the steps as given above. Everything went alright. I could run the headless VM from the command line in a remote machine. But I could not access the VM I created. That means, I could not connect to a headless VM.
    Is there any way to connect to the headless VM from a remote machine (In my setting, Virtualbox is installed in a remote machine, and I can only access it through ssh)?

    • Verify the following on the remote server:
      1) VRDE server is running okay.
      2) There is no firewall blocking access to the TCP port that VRDE is running on.

      If nothing still works, you could run VirtualBox GUI over ssh.

  2. Thank you very much it was just what I need to start fun with VirtualBox.
    Some other useful commands:

    to stop/poweroff a VM:
    $ VBoxManage controlvm "testvm" poweroff

    to check an already created VM:
    $ VBoxManage showvminfo "testvm"

  3. thanks a lot for this guide. In case anyone else is having an issue with there not being any ethernet controllers inside the VM once you RDP into it (I was having some problems when connecting to a win7 vm) try setting up an additional network adapter:

    VBoxManage modifyvm "testvm" --nic2 nat --nictype2 82540EM

    This should get you online once inside the VM.

    (I specified --nictype2 82540EM b/c using windows, --nictype2 Am79C973 might be fine as well)

  4. I followed all the steps what you did, but while giving iso path,its showing error "Could not get the storage format of the medium". Can anybody help me to resolve this issue ??

    Thanks in advance !!

  5. Thank you very much Dan Nani, this is good tutorial i followed it and finaly i can view installation VM from rdesktop :)

  6. thank you for this really great tutorial. the steps helped me create a vm without GUI. I'm now one step closer to becoming a command line addict.

Leave a comment

Your email address will not be published. Required fields are marked *

Current ye@r *