VDI to VHD/VHDX – Convert VirtualBox VMs to Hyper-V

If you want to use or migrate VirtualBox VMs to Hyper-V on Windows 10 or Windows servers, you can follow this guide. We are not going to talk about straight export and import migration here as both products run on different platforms. We need to convert the hard disk of the virtual machine from VirtualBox, then attach to Hyper-V. In that way, you will get the full working VM migrated.

Microsoft Hyper-V doesn’t support VDI (VirtualBox hard disk file) files, therefore it should be converted to VHD (MS Virtual Disk format) or VHDX. Here, I’m going to show how to convert a running Windows VM from VirtualBox to VHD and attach to Hyper-V or Virtual PC.

We do not need any third party software for this conversion, the built-in VirtualBox command tool can be used. It’s very simple too.

Steps to Convert VDI to VHD (VirtualBox to Hyper-V)

Note: It is recommended to uninstall the VirtualBox guest additions from the VM before starting the migration. It may cause an issue on the Hyper-V platform.

VirtualBox snapshots keep separate VDI files for each machine.  So if you convert the original base VDI file, you will not get the latest state of the virtual machine. Also, you can’t convert snapshot VDI files separately. Therefore it’s recommended to delete snapshots, that will merge current machine’s state to the single original disk file.

We can convert the VDi to VHD in 2 ways,

  1. Using the VirtualBox Media manager
  2. Using the command line tool.

VDI to VHD by VirtualBox Media Manager

1) Click on File in VirtualBox and open Virtual Media Manager.

Open VM Media Manager

Obviously, the VM should be powered off before proceeding further.

2) Select the appropriate disk that is attached to the VM you need to migrate. Click on Copy.

Copy VDI

3) In the next disk copy option, select the VHD file format as output.

Select VHD Format

4) Next screen gives the option to make the disk dynamic or fixed size. If you are familiar with a Virtualization platform, you must be aware of them. For testing and reducing disk usage, you can try dynamically allocated disks, for production and high disk utilizing apps, use the fixed disk option.

5) Select the path of the VHD file and start copying. It will start the copying/cloning the selected VDI file to VHD disk format.

Now you have the VHD file which converted from VDI by using GUI screens.

Convert VDI to VHD in Command Prompt (VirtualBox Tool)

1) Once the prerequisites are met (like uninstalling guest additions, deleting snapshots and powering off the VM), run the following command from the VirtualBox installation location.

vboxmanage clonehd WinXP.vdi F:\winxp.vhd --format VHD

WinXP.vdi – Working VM hard disk

F:\winxp.vhd – Destination and file name of VHD

The above command returned the following error.

VDI to VHD

2) This is because it is attached to one machine and listed in the virtual media manager. Release and remove the disk from virtual media manager (Note – Do not remove the VDI file from physical hard disk).

Run the command again, which returned following successful VDI to VHD conversion message.

convert VDI to VHD

VDI to VHD then VHDX

If you want the latest and recommended file format of Hyper-V which the VHDX, then the converted VHD can be converted to VHDX by using Hyper-V disk utility.

The steps are simple and you can refer to this guide.

So basically you need to convert the VDI to VHD by using VirtualBox tools, then the VHD to VHDX by Hyper-V disk tool.

Attach the Disk to Hyper-V VM

Remember, as mentioned earlier this is not the export-import way. We have just converted the disk in a format that is supported in Microsoft Hyper-V.

a) Create a new VM in Hyper-V. Setup the hardware configuration as you wish, but instead of creating a new virtual hard disk you must attach (browse) the converted VHD or VHDX to the VM configuration.

VDI to VHD

2) Power on the virtual machine. Since the hardware platform (VirtualBox to Hyper-V) is changed for the Operating System, it may install additional drivers and tools for its platform. Restart the VM. Make sure to installation Hyper-V guest additions to get better performance and features.

Here is the screenshot of running same virtual machine on both desktop virtualization software.

desktop virtualization software

It hardly took 5 minutes to convert this working machine (2GB VDI) to Virtual PC. Some blogs and forums mentioned about third-party software to convert VDI to VHD, but it can be done easily by VirtualBox command as shown here.

Do you face any difficulties? Feel free to share. If this information helpful then don’t miss to leave a comment.

16 thoughts on “VDI to VHD/VHDX – Convert VirtualBox VMs to Hyper-V”

  1. HI ,
    This is a Good tool. This works fine. Only issue i have faced when running this without uninstalling Guest Additions. (Not always but some time ). So better to uninstall that as mentioned above.

    Good show Dinesh !!! 🙂

    • @G,
      Thanks for your comment and keep reading my blog.
      Yes, I never took chance without removing guest additions. Its always better to remove guest additions from any software (VMware, VB, VPC) before conversion.

  2. Hi Dinesh, i had a problem regarding this. When i put in the command, it says it says invalid parameters “F:\Windows Xp”…. what to do…..

  3. Is the below command applies to mac too? I have virtual box on Mac, planning to move t Virtual PC. since you all moved to virtual PC, is it better than virtual box?

    Thanks,

    • This is just for the people who want to move the VirtualBox VM to Virtual PC, I don’t say virtual PC is better than VirtualBox. VirtualBox is much better than virtual pc.
      I think vboxmange command will be same in Mac host also, I’m not sure.
      Please check in helps and process.

      Good luck.

  4. Hey, great guide but how do you get the command prompt to recognize the command “vboxmanage”? Sorry, I’m a bit slow and I need help :(. Thanks you so much!!

  5. Hi, thanks for the very nice guide, however I have this error message in cmd

    ‘vboxmanage.exe’ is not recognized as an internal or external command, operable program or batch file.

    thanks for the help

    • mark,
      You need to add virtualbox working folder (C:\Program Files\Oracle\VirtualBox) to PATH under Environment Variables in Advanced Settings of Windows System.

      Or you run the command from where its located ( again its under VirtualBox program folder)

      • Thanks a lot, i was able to convert ubuntu.vdi to ubuntu.vhd with the following command in C:\Program Files\Oracle\VirtualBox>

        vboxmanage clonehd “C:\Userx\username\.Virtualbox\filename.vdi” “C:\Userx\username\.Virtualbox\filename.vhd” –format VHD

        However, it was not good enough to run ubuntu 10 on WVPC as mouse, keyboard, and other integration cannot be connected ^_^

        Thanks a lot again for the knowledge you’ve shared to us ^_^ More Power!!! ^_^

  6. I always get this error:

    VBoxManage.exe: error: Cannot register the hard disk ‘C:\Program Files\Oracle\Vi
    rtualBox\test.vdi’ {ba4b0377-907f-470f-80ae-13e5f27a8137} because a hard disk VBoxManage.exe: error: Cannot register the hard disk ‘C:\Program Files\Oracle\Vi
    rtualBox\test.vdi’ {ba4b0377-907f-470f-80ae-13e5f27a8137} because a hard disk ‘C
    :\FreeBSD 7.1\FreeBSD 7.1.vdi’ with UUID {ba4b0377-907f-470f-80ae-13e5f27a8137}
    already exists
    VBoxManage.exe: error: Details: code E_INVALIDARG (0x80070057), component Virtua
    lBox, interface IVirtualBox, callee IUnknown
    Context: “OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, AccessMode_ReadW
    rite, pMedium.asOutParam())” at line 209 of file VBoxManageDisk.cpp’ with UUID {ba4b0377-907f-470f-80ae-13e5f27a8137}
    already exists
    VBoxManage.exe: error: Details: code E_INVALIDARG (0x80070057), component Virtua
    lBox, interface IVirtualBox, callee IUnknown
    Context: “OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, AccessMode_ReadW
    rite, pMedium.asOutParam())” at line 209 of file VBoxManageDisk.cpp

    Even if I delete C:\FreeBSD 7.1\FreeBSD 7.1.vdi’ the error shows up…

  7. i have made a Batch file and put this in it (for me the vdi file is into C:\temp\virtualbox):

    @echo off
    cd C:\program files\oracle\virtualbox
    vboxmanage clonehd C:\temp\virtualbox\serversd02.vdi C:\temp\virtualbox\servervd02.vhd –format VHD
    pause
    exit

  8. is it possible to use this tool for converting FROM Microsoft VPC to VirtualBox? We have couple of pc’s who are failing to run XP Mode and we need to run some software that’s not compatible with Windows 7, so I’m hoping to use an image from a machine that does run an XPMode vm file (.vhd)

Leave a Comment