#1504 closed defect (fixed)
Virtualbox 1.6 appears to be corrupting VMDK files
Reported by: | nzchris73 | Owned by: | |
---|---|---|---|
Component: | virtual disk | Version: | VirtualBox 1.6.0 |
Keywords: | Cc: | ||
Guest type: | other | Host type: | other |
Description
After upgrading to Virtualbox 1.6 I got the following error in Event Viewer when trying to mount the VMDK file used as a secondary HDD for one of my machines. I created a new VMDK file and tried it again but got the same result. After reverting back to 1.5.6 VMDK files worked ok. Windows XP SP3 host running Windows XP client.
Command ""C:\Program Files\VMware\VMware DiskMount Utility\vmware-mount.exe" V: "E:\Virtual Machines\UBCD4WIN\Windows XP Professional.vmdk" /y" failed with COM error: 0x80004005 (last partition extends past end of disk (2609:1023))
Change History (4)
comment:1 by , 17 years ago
comment:2 by , 17 years ago
Component: | other → virtual disk |
---|
comment:3 by , 16 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Please reopen if this problem persists with a recent version 2.1.4 or later.
comment:4 by , 15 years ago
Since I am having this problem even with VirtualBox 3.1.2, I want to add some additional information. Not only does VirtualBox add three disk description entries prefixed with, ddb.geometry.bios, but VB also adds three more lines with the prefix, ddb.uuid, so those should be removed as well.
If your VMDK file is of type=0 (monolithicSparse), then you can't just edit the file because the ASCII disk descriptor is sandwiched between binary sections of the VMDK. In that case, for monolithicSparse type VMDK files, use this script:
#!/bin/sh # Strip out VirtualBox seetings from VMDK file # dd if=$1 bs=512 count=1 of=vm.hdr && \ dd if=$1 bs=512 skip=1 count=2 of=vm.ddesc && \ cat vm.ddesc | grep -a -v ddb.uuid.image \ | grep -a -v ddb.uuid.modification \ | grep -a -v ddb.uuid.parent \ | grep -a -v ddb.uuid.parentmodification \ | grep -a -v ddb.geometry.biosCylinders \ | grep -a -v ddb.geometry.biosHeads \ | grep -a -v ddb.geometry.biosSectors > vm.novb.ddesc && \ dd if=vm.novb.ddesc conv=sync,notrunc of=vm.new.ddesc bs=512 count=2 && \ dd if=$1 bs=512 skip=3 of=vm.nohdr && \ cat vm.hdr vm.new.ddesc vm.nohdr > $1.fixed
After the script is run, the original VMDK (with added VB settings) is left intact and a copy of the VMDK file is made whose name is suffixed with ".fixed", which you'll need to rename to boot with VMware.
If you want a procedure to be able to boot the VMDK with either VirtualBox or VMware, then you can reconfigure the guest OSs grub to not search for it's root device by UUID, as I outline in detail here:
Some of the time there is a work-around available. If you're using a virtual disk with a descriptor file plus a data file (e.g. foo.vmdk and foo-flat.vmdk), VirtualBox adds three lines to the descriptor file.
To make the vmdk mountable again by vmware-mount, delete the 3 lines that begin with ddb.geometry.bios from the descriptor file.
Details are available at http://www.kleinfelter.com/vbox-vmdk