#----- VirtualBox command line -----

# Set the directory for the vms.
    VBoxManage setproperty machinefolder /home/user/path/to/vms/

# See info.
    VBoxManage list systemproperties
    VBoxManage list hostinfo
    VBoxManage list bridgedifs
    VBoxManage list ostypes

# Create a vm.
    VBoxManage createvm -name VMNAME

# VM in non standard directory.
    mv /old/path/to/vm/VMNAME.vbox /new/path/to/vm/VMNAME.vbox
    rmdir /old/path/to/vm

# Register the vm.
    VBoxManage registervm /new/path/to/vm/VMNAME.vbox

# Configure the vm.
    VBoxManage modifyvm VMNAME \
        --ostype debian \
        --memory 512 \
        --vram 32 \
        --acpi on \
        --ioapic on \
        --cpus 1 \
        --pae on \
        --accelerate3d off \
        --accelerate2dvideo off \
        --firmware bios \
        --chipset piix3 \
        --boot1 dvd --boot2 none --boot3 none --boot4 none \
        --uart1 off --uart2 off --uart3 off --uart4 off \
        --lpt1 off --lpt2 off \
        --audio none \
        --usb off --usbehci off \
        --teleporter off \
        --tracing-enabled off \
        --usbcardreader off \
        --autostart-enabled off \
        --videocap off \
        --snapshotfolder default \
        --rtcuseutc on \
        --mouse ps2 \
        --keyboard ps2 \
        --clipboard disabled \
        --draganddrop disabled \
        --vrde off \
        --nic1 none --nic2 none --nic3 none --nic4 none --nic5 none --nic6 none --nic7 none --nic8 none \
        --nictype1 Am79C970A --nictype2 Am79C970A --nictype3 Am79C970A --nictype4 Am79C970A \
        --nictype5 Am79C970A --nictype6 Am79C970A --nictype7 Am79C970A --nictype8 Am79C970A \
        --cableconnected1 on --cableconnected2 on --cableconnected3 on --cableconnected4 on \
        --cableconnected5 on --cableconnected6 on --cableconnected7 on --cableconnected8 on \
        --macaddress1 00001D3C5F00 --macaddress2 00001D3C5F01 --macaddress3 00001D3C5F02 --macaddress4 00001D3C5F03 \
        --macaddress5 00001D3C5F04 --macaddress6 00001D3C5F05 --macaddress7 00001D3C5F06 --macaddress8 00001D3C5F07 \

# NIC with NAT.
    VBoxManage modifyvm VMNAME --nic1 nat

# NIC host only.
    VBoxManage modifyvm VMNAME --nic1 hostonly --hostonlyadapter1 vboxnet0

# NIC with udp tunnel.
    VBoxManage modifyvm VMNAME --nic1 generic --nicgenericdrv1 UDPTunnel --nicproperty1 dest=127.0.0.1 --nicproperty1 dport=9000 --nicproperty1 sport=9001

# NIC bridged with real host interface.
    VBoxManage modifyvm VMNAME --nic1 bridged --bridgeadapter1 eth1

# VM serial port to host unix socket.
    VBoxManage modifyvm VMNAME --uart1 0x3f8 4 --uartmode1 server /tmp/uart

# VM serial port to host tcp server socket.
    VBoxManage modifyvm VMNAME --uart1 0x3f8 4 --uartmode1 tcpserver 2000

# See the vm configuration.
    VBoxManage showvminfo VMNAME

# Add SATA controller.
    VBoxManage storagectl VMNAME --name sata --add sata --sataportcount 4 --hostiocache on --bootable on

# Add IDE controller.
    VBoxManage storagectl VMNAME --name ide --add ide --controller PIIX3

# Create a hdd disk.
    VBoxManage createmedium disk --filename hdddisk.vdi --size 2048 --format VDI --variant Standard

# Compact a hdd disk.
    VBoxManage modifymedium hdddisk.vdi --compact

# Change hdd disk uuid.
    VBoxManage internalcommands sethduuid hdddisk.vdi

# Add hdd to vm.
    VBoxManage storageattach VMNAME --storagectl sata --port 0 --type hdd --mtype normal --medium FILENAME.vdi

# Add a cd/dvd to vm.
    VBoxManage storageattach VMNAME --storagectl ide --port 0 --device 0 --type dvddrive --medium FILENAME.iso

# Start the vm.
    VBoxManage startvm VMNAME --type headless

# Extract the cd/dvd.
    VBoxManage storageattach VMNAME --storagectl ide --port 0 --device 0 --type dvddrive --medium none

# Delete the IDE controller.
    VBoxManage storagectl VMNAME --name ide --remove

# Poweroff the vm.
    VBoxManage controlvm VMNAME acpipowerbutton
    VBoxManage controlvm VMNAME poweroff

# Remove a hdd.
    VBoxManage storageattach VMNAME --storagectl sata --port 1 --type hdd --medium none

# Boot from hdd only.
    VBoxManage modifyvm VMNAME --boot1 disk --boot2 none --boot3 none --boot4 none


#----- Serial port to host pipe -----

# Install socat:
    apt-get install socat

# Configure the serial port in the vm.
# Select Host Pipe: /tmp/uart.
# Select create if not exist.
# Start the vm.
# In the host machine:
    socat /tmp/uart -


#---- Mount a hdd vdi -----
apt-get install qemu-kvm
modprobe nbd
qemu-nbd -c /dev/nbd0 HDDFILE.vdi   --> creates /dev/nbd0p1
mount /dev/nbd0p1 /mnt
umount /mnt
qemu-nbd -d /dev/nbd0