!!! VirtualBox 4.1.2

[{TableOfContents }]


\\I started looking at VirtualBox again, to assess it as a feasible low-cost virtualization solution.\\
I have been running my (2) servers on older laptops running in a closet at home. The laptops runs Ubuntu 8.04 (LTS) with an [OpenVZ|http://openvz.org] kernel.

Since this is getting rather old now (almost 4 years), and every now and then you want to have something new (the only difference between a man and a box is the price of his toy) and I had some (not disclosed) issues with backups, I thought let's see if VirtualBox is any good here.

!! My wishlist/requirements.

__1) - (recent) Ubuntu Guest OS__

I first had a look at the [http://openvz.org] site, but concluded that running a recent Ubuntu server is not a "default route".\\
Since my hardware also 

__2) - Easy Full Server Backup (off site)__

vbox clonehd ?

__3) - Easy re-sizing of disk images__

vbox modifyhd resize ?...

__4) - Remote console access__

vrde stuff with extension packs....

__5) - No Graphical (X) server required__

VBoxHeadless...

__6) - Capable of running 5 guests__

2 is minimal required...

__7) - Misc management capabilites__

stats , NATing, live migration ?

__8) - No dependency on hardware virtualization capabilities__


!! Resources
* [VirtualBox Home|http://www.virtualbox.org]
* [Downloads|https://www.virtualbox.org/wiki/Downloads]
* [User Manual|https://www.virtualbox.org/manual/UserManual.html]
* [Command Syntax|https://www.virtualbox.org/manual/ch08.html#idp5741680]

!! The Journey

Installation is smooth, o my testbed btw is my HP Dual Core 2GB laptop with {{Linux Mint 12 Lisa}}.
So simple installation with synaptic. 
\\But after a couple of hours you discover that you also need the [Extensions Pack|http://download.virtualbox.org/virtualbox/4.1.8/Oracle_VM_VirtualBox_Extension_Pack-4.1.8-75467.vbox-extpack], simply download and Startup VirtualBox => File => Preferences => Extensions. I needed the extensions to get VRDE to work, so I could startup a VM from the cmdline (so without a GUI) and get a VRDP session with it (using vinagre as vrdp client)
\\So the GUI now works fine, and we play a bit with creating VMs (Ubuntu 11.10 server), cloning, snapshot's, and this all works fine.

__TIP: Use VM names without blanks__


! Creating and modifying a VM

After fiddling a bit, I found the following command was good to create a VM:\\
%%(background-color : #d3ee03 )VBoxManage createvm --name Ubuntu2 --ostype Linux --register %%
%%small 
{{{
metskem@gneisenau ~ $ VBoxManage createvm --name Ubuntu2 --ostype Linux --register 
Virtual machine 'Ubuntu2' is created and registered.
UUID: 9e527adc-ddc4-41b9-8b9e-9e730f8b49a1
Settings file: '/home/metskem/VirtualBox VMs/Ubuntu2/Ubuntu2.vbox'
}}} %%

Let's see what the default attributes are after we have only created a VM, this is done with the {{showvminfo}} cmd: \\

%%(background-color : #d3ee03 )VBoxManage showvminfo Ubuntu2 %%

%%small 
{{{
metskem@gneisenau ~ $ VBoxManage showvminfo Ubuntu2
Name:            Ubuntu2
Guest OS:        Other Linux
UUID:            949c6764-b229-462b-9175-57ac6e9976b8
Config file:     /home/metskem/VirtualBox VMs/Ubuntu2/Ubuntu2.vbox
Snapshot folder: /home/metskem/VirtualBox VMs/Ubuntu2/Snapshots
Log folder:      /home/metskem/VirtualBox VMs/Ubuntu2/Logs
Hardware UUID:   949c6764-b229-462b-9175-57ac6e9976b8
Memory size:     128MB
Page Fusion:     off
VRAM size:       8MB
CPU exec cap:    100%
HPET:            off
Chipset:         piix3
Firmware:        BIOS
Number of CPUs:  1
Synthetic Cpu:   off
CPUID overrides: None
Boot menu mode:  message and menu
Boot Device (1): Floppy
Boot Device (2): DVD
Boot Device (3): HardDisk
Boot Device (4): Not Assigned
ACPI:            on
IOAPIC:          off
PAE:             off
Time offset:     0 ms
RTC:             local time
Hardw. virt.ext: on
Hardw. virt.ext exclusive: on
Nested Paging:   on
Large Pages:     off
VT-x VPID:       on
State:           powered off (since 2011-12-31T12:12:45.649000000)
Monitor count:   1
3D Acceleration: off
2D Video Acceleration: off
Teleporter Enabled: off
Teleporter Port: 0
Teleporter Address: 
Teleporter Password: 
NIC 1:           MAC: 080027707CC7, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny
NIC 1 Settings:  MTU: 0, Socket (send: 64, receive: 64), TCP Window (send:64, receive: 64)
NIC 2:           disabled
NIC 3:           disabled
NIC 4:           disabled
NIC 5:           disabled
NIC 6:           disabled
NIC 7:           disabled
NIC 8:           disabled
Pointing Device: PS/2 Mouse
Keyboard Device: PS/2 Keyboard
UART 1:          disabled
UART 2:          disabled
Audio:           disabled
Clipboard Mode:  Bidirectional
VRDE:            disabled
USB:             disabled

USB Device Filters:

<none>

Available remote USB devices:

<none>

Currently Attached USB Devices:

<none>

Shared folders:  <none>

VRDE Connection:    not active
Clients so far:     0

Guest:

Configured memory balloon size:      0 MB
OS type:                             Linux
Additions run level:                 0

Guest Facilities:

No active facilities.
}}}
%%

Before you start creating things, you have to think about ''"how do I ever clean up the mess I created? "'', so the question here is, how do I delete the VM again? 
Well that can be done with the {{unregister}} subcommand:\\

%%(background-color : #d3ee03 )VBoxManage unregistervm Ubuntu2 --delete %%
%%small
{{{
%%(background-color : #d3ee03 )
}}}
%%

I use the --delete option to really get rid of everything including harddisks, saved states and log files, simply I don't want to find anything of it anymore. (I reran the {{createvm}} subcommand again after deleting is.)


Now we are happy with most of the default, but a few changes would be nice, so we go to the subcommand {{modifyvm}} :\\
%%(background-color : #d3ee03 ) VBoxManage modifyvm Ubuntu2 --memory=256 --hwvirtex=off --hwvirtexexcl=off --vtxvpid=off --boot1=dvd --boot2=disk --boot3=none --nic1=bridged --bridgeadapter1=wlan0 --nicpromisc1=allow-all --vrde=on --vrdeport=13389  %%

%%small
{{{
VBoxManage modifyvm Ubuntu2 --memory=256 --hwvirtex=off --hwvirtexexcl=off --vtxvpid=off --boot1=dvd --boot2=disk --boot3=none --nic1=bridged --bridgeadapter1=wlan0 --nicpromisc1=allow-all --vrde=on --vrdeport=13389
}}}
%%


The {{modifyvm}} subcommand gives no output if it succeeds, if you want to see the result, issue the {{showvminfo}} command again.



! Creating and attaching storage devices

Now  before we can boot the thing, we need a bootable ISO image, and a harddisk that can be used for installation.

I downloaded an Ubuntu 11.10 ISO in {{/home/metskem/iso/ubuntu-11.10-server-i386.iso}}.

First we have to define 2 controllers :

%%(background-color : #d3ee03 ) VBoxManage storagectl Ubuntu2 --name='IDE Controller' --add=ide --controller=PIIX4 --bootable=on %% \\
%%(background-color : #d3ee03 ) VBoxManage storagectl Ubuntu2 --name='SATA Controller' --add=sata --controller=IntelAhci --bootable=on
%%

The result with {{showvminfo}} :
%%small
{{{
metskem@gneisenau ~ $ VBoxManage showvminfo Ubuntu2|grep Storage
Storage Controller Name (0):            IDE Controller
Storage Controller Type (0):            PIIX4
Storage Controller Instance Number (0): 0
Storage Controller Max Port Count (0):  2
Storage Controller Port Count (0):      2
Storage Controller Bootable (0):        on
Storage Controller Name (1):            SATA Controller
Storage Controller Type (1):            IntelAhci
Storage Controller Instance Number (1): 0
Storage Controller Max Port Count (1):  30
Storage Controller Port Count (1):      30
Storage Controller Bootable (1):        on
}}}
%%

Now let us attach the ISO image as a DVD drive with the {{storageattach}} subcommand:\\
%%(background-color : #d3ee03 ) VBoxManage storageattach Ubuntu2 --storagectl='IDE Controller' --port=1 --device=1 --type=dvddrive --medium=/home/metskem/iso/ubuntu-11.10-server-i386.iso %%

And also this can be listed, this time with the {{list}} subcommand: \\
%%(background-color : #d3ee03 ) VBoxManage list dvds %%
%%small
{{{
metskem@gneisenau ~ $ VBoxManage list dvds
UUID:        32feb261-654c-4562-8115-7b25e5aff798
Format:      RAW
Location:    /home/metskem/iso/ubuntu-11.10-server-i386.iso
State:       created
Type:        readonly
Usage:       Ubuntu2 (UUID: df6e7d7d-3e48-43f9-8358-126a89428fe3)
}}}
%%


And now the hard disk, but we first have to create a hard disk, that can be done with the {{createhd}} subcommand: \\
%%(background-color : #d3ee03 ) VBoxManage createhd --filename '/home/metskem/VirtualBox VMs/Ubuntu2/Ubuntu2Disk.vdi' --size=5000   %%

%%small
{{{
metskem@gneisenau ~ $ VBoxManage createhd --filename '/home/metskem/VirtualBox VMs/Ubuntu2/Ubuntu2Disk.vdi' --size=5000 
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Disk image created. UUID: daeb6941-e194-47ab-99a3-af74700b7e99
}}}
%%

Watch out, this hdd is not yet "registered" with VirtualBox, you first have to attach it to a VM with the {{storageattach}} subcommand:\\
%%(background-color : #d3ee03 ) VBoxManage storageattach Ubuntu2 --storagectl='SATA Controller' --port=1 --device=0 --type=hdd --medium='/home/metskem/VirtualBox VMs/Ubuntu2/Ubuntu2Disk.vdi' %%

This command gives no output if it succeeds. You can now list the available hdds with the {{list}} subcommand:

%%small
{{{
metskem@gneisenau ~ $ VBoxManage list hdds
UUID:        daeb6941-e194-47ab-99a3-af74700b7e99
Parent UUID: base
Format:      VDI
Location:    /home/metskem/VirtualBox VMs/Ubuntu2/Ubuntu2Disk.vdi
State:       created
Type:        normal
Usage:       Ubuntu2 (UUID: df6e7d7d-3e48-43f9-8358-126a89428fe3)
}}}
%%

! Starting the thing

Now everything looks ready for the first boot, so use the {{startvm}} subcommand to boot : \\
%%(background-color : #d3ee03 )VBoxManage startvm Ubuntu2 --type=headless %%

%%small
{{{
metskem@gneisenau ~ $ VBoxManage startvm Ubuntu2 --type=headless
Waiting for VM "Ubuntu2" to power on...
VM "Ubuntu2" has been successfully started.
}}}
%%

Now to get the console, you have to use an RDP client (I used vinagre), and connect to localhost:13389, you should see a console with an Ubuntu LiveCD booting. %%small (I had the issue that my screen was larger than the window...but this was a normal Ubuntu install and I accepted all defaults) %%


!! Backing up the VM

!! Resizing HD

!! Misc..


!! Summary of commands

<summarize all handy VBoxManage cmds here........>