I would like to make a VirtualBox .vdi image out of my hard drive.

I've found howto's online that describe doing this by first usind DD to create a .raw image, then using VBoxManage to convert the .raw to a .vdi. SO if my HD is 1 TB, this process (temporarily) requires 2TB of space, to store both the .raw and .vdi.

I only have a bit more than 1TB of free space. Is there a way to create a .vdi image of a hard drive, without first having to create a .raw image?

  • This is risky, but if you have your hard drive that you want to P2V, then you could create the image on your spare drive with about 1TB Free. Then format your original drive and copy the RAW file to the original drive. Then convert the RAW to VDI back onto your main drive. However, if it gets screwed up (could happen) then you're stuck with a RAW Image and no original. – kobaltz Jul 2 '13 at 1:03
  • @kolbatz I considered this, but I thought that it had a high chance of failure. When I image the hard drive, the resulting .raw file is the size of the hard drive. But before copying the file back to the original drive, I need to give the drive a filesystem. This involves writing some metadata to the drive, leaving not enough space to hold the drive-sized file. – SuperElectric Jul 2 '13 at 4:30
up vote 42 down vote accepted

You can directly create an image with VBoxManage convertfromraw. First unmount the device, then:

VBoxManage convertfromraw /dev/sda MyImage.vdi --format VDI

Replace /dev/sda with whatever disk or partition you want to clone.

You may need to do this as root to gain access to the device. If so, then you should change ownership of the finished image.

  • 2
    Works beautifully and out of the box on OSX when you have VirtualBox installed. Thanks for pointing to this solution – JosFabre Apr 16 '16 at 15:32

I tried the accepted solution but for me it failed:

# VBoxManage convertfromraw /dev/sdg /path/to/file.vdi --format VDI
Converting from raw image file="/dev/sdg" to file="/path/to/file.vdi"...
Creating dynamic image with size 0 bytes (0MB)...
VBoxManage: error: Cannot create the disk image "/path/to/file.vdi": VERR_INVALID_PARAMETER

Maybe it couldn't detect the size because the disk was attached through USB?

So instead I got the size of the disk with fdisk -l

Disk /dev/sdg: 160.0 GB, 160041885696 bytes

And then I used the stdin form of convertfromraw

# dd if=/dev/sdg | VBoxManage convertfromraw stdin /path/to/file.vdi 160041885696 --format VDI
Converting from raw image file="stdin" to file="/path/to/file.vdi"...
Creating dynamic image with size 160041885696 bytes (152628MB)...

There are other safer ways to create a file of your current system that Virtualbox can work with. Vdi's are virtualbox specific files and are usually only generated by VB from a fresh virtual hard disk install.

You have many other options.

I recently used disk2vhd to create a .VHD (Microsoft Virtual Hard Disk) that Virtualbox imported beautifully. (Although it was an XP system) I don't think it works well with other OS's.

Alternatively there is Vmwares converter tool that can export your system to a variety of formats that virtualbox as well as other platforms can use. There are open standards for this kind of thing.

http://www.vmware.com/products/converter/features.html

  • 2
    Why are these methods "safer" in your opinion? – andcoz Feb 25 '17 at 11:44
  • disk2vhd uses a volume snapshot, which means it can be used to clone a system while it's running. – mwfearnley Oct 17 '17 at 14:41

protected by Community Feb 22 '17 at 17:58

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.