How do I migrate currently installed Ubuntu to a Virtual Machine?

Solution 1:

It's not much different from machine-to-machine disk copy. Try using Clonezilla.

Before running clonezilla to make a partition image, I'd run e2fsck -f then resize2fs -M to make the original partition to the smallest, so that when you are moving the partition to the VM, you can make it to any size you want. Note that, though I've done resize2fs -M many times and successful, it can go wrong. So be sure to have a backup.

I'd install a new Ubuntu in a VM so that you can do the partition as you like, then overwrite the partition from the original partition image created by Clonezilla. That way, you know the bootstrap works in the VM, and you are replacing the partition.

Once the partition is restored, while still in Clonezilla resize2fs (with no option) makes the file system to fit to the partition map (aka enlarged to the max).

This is how I usually transfer system from one system to other, reglardless of VM or non-VM.

Solution 2:

You can image your Ubuntu install from a live CD using dd. You can then boot the raw image with most any virtualization technology or convert the raw image.

As you are doing so you may run into problems, especially if you installed the ATI drivers, and so as advised it may be better to simply do a fresh install.

Assuming your Ubuntu is installed to /dev/sda , from a live CD run dd

dd if=/dev/sda1 of=/storage/ubuntu.img bs=1024 

The final ubuntu.img will be as large as your Ubuntu install and will need to be stored on a separate partition or external storage.

You can boot the raw image as a hard disk or convert it to a virtualbox (or other) image

VBoxManage convertdd ubuntu.img ubuntu.vdi