Here's the easy way
Unless you have some specific why you'd install a GuestOS using virt-install, here's the 'easy' way to do it without virt-install.
I have a working VM with Windows 7 installed. Here's how I created it.
Step 1: Create the virtual disk image
qemu-img create -f qcow2 vdisk.img 100g
This creates a virtual disk in the qcow2 format. Setting the partition size to 100g (gigabytes) will not allocate 100gb of physical hard disk space. The virtual partition will only take as much space as the data it contains. The 100g just makes it so you'll (hopefully) never need to increase the size. Increasing a qcow2 image's default size is still a pain in the a** to do.
Step 2: Install the OS
If you're using an actual physical cd-rom to load the OS, use the following command.
sudo kvm -m 750 -cdrom /dev/sr0 -boot d vdisk.img
If you're using a disk image to load the OS, use this command.
sudo kvm -m 750 -cd-rom /path/to/image/image.iso -boot d vdisk.img
Here's the breakdown of the commands:
- kvm - calls the kernel virtual machine (obvious)
- -m 750 - allocates 750mb of memory for the virtual machine
- -cd-rom sets up the cd-rom. For a physical disk use same disk as your HostOS. For a image, provide a path to the image file.
- -boot d boots the virtual machine from the cd-rom
I set the memory footprint for the initial load to 750 to be conservative so I can be sure that the install finishes without running out of memory. For subsequent loads I usually set it to 512.
Note: AFIAK, the kvm command only works in more recent versions of Debian/Ubuntu or their derivatives. If it doesn't work the equivalent (and more common) command is qemu-system-x86_64 or qemu-kvm for 32 bit.
After you've gone through the whole install process the VM should reboot into a working OS.
To load the VM again just launch this command:
kvm -m 512 vdisk.img
With whatever command line switches you need to mount additional physical disks, hardware, etc. To find info on command line switches check kvm --help.
If you don't understand the difference between 'paravirtualization' and 'native virtualization' Matthias' has already made a great explanation of the differences.
For a more 'in depth' explanation of this process read this article.
Best Answer
This was solved by my friend.
In addition to spice-vdagentd (daemon, started at boot time) also spice-vdagent (client) needs to be started.
Unity had spice-vdagent in startup applications, so added the same command to Awesome startup.