How to create a VirtualBox VM from command line

A very appreciated feature of VirtualBox is the possibility to be used in a headless environment, without a GUI.

So, today I want to share the workflow I use for creating virtual machines using only the command line.

1. Create the VM

This command uses as base folder the current directory:

VBoxManage createvm --name [MACHINE NAME] --ostype [Os Type, ex: "Debian_64"] --register --basefolder `pwd` 

2. Set memory and network

In this example: 1Gb RAM and 1 network card behind NAT.

VBoxManage modifyvm [MACHINE NAME] --ioapic on                     
VBoxManage modifyvm [MACHINE NAME] --memory 1024 --vram 128       
VBoxManage modifyvm [MACHINE NAME] --nic1 nat 

3. Create the Disk and connect the CD ISO

One 80Gb SATA HD, and one CDROM (with Debian ISO) drive attached to an IDE Controller.

VBoxManage createhd --filename `pwd`/[MACHINENAME]/[MACHINE NAME]_DISK.vdi --size 80000 --format VDI                     
VBoxManage storagectl [MACHINE NAME] --name "SATA Controller" --add sata --controller IntelAhci       
VBoxManage storageattach [MACHINE NAME] --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium  `pwd`/[MACHINE NAME]/[MACHINE NAME]_DISK.vdi                
VBoxManage storagectl [MACHINE NAME] --name "IDE Controller" --add ide --controller PIIX4       
VBoxManage storageattach [MACHINE NAME] --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium `pwd`/debian.iso       
VBoxManage modifyvm [MACHINE NAME] --boot1 dvd --boot2 disk --boot3 none --boot4 none 

4. Set RDP access and start the VM

Remote Desktop enabled on port 10001 (useful for administration on an headless environment).

VBoxManage modifyvm [MACHINE NAME] --vrde on                  
VBoxManage modifyvm [MACHINE NAME] --vrdemulticon on --vrdeport 10001

VBoxHeadless --startvm [MACHINE NAME] 

Script example: automatically create a Debian VM

Here a script that i usually use to deploy a simple Debian VM, automatically download the Debian NetInst ISO.

It’s a really base and readable code that can be simply customized:


[email protected]:VM# ./ TestDebian
 Virtual machine 'TestDebian' is created and registered.
 UUID: 953074b7-0e7e-4d34-82e4-f187cf8fa1f7
 Settings file: '/mnt/data/VM/TestDebian/TestDebian.vbox'
 Medium created. UUID: dd5d2efd-205d-4d9e-b464-d82cb792698c
 Oracle VM VirtualBox Headless Interface 5.1.38
  (C) 2008-2018 Oracle Corporation
  All rights reserved.
  VRDE server is listening on port 10001.


Related posts

  1. How to boot an Encase (E01) image using VirtualBox
  2. How to extract forensic artifacts from Linux swap
  3. Technology Roundup #18
  4. Linux Forensics: Memory Capture and Analysis
  5. Cybersecurity Roundup #15