VirtualBox

Opened 16 years ago

Closed 15 years ago

Last modified 14 years ago

#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 kleinfelter, 16 years ago

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

comment:2 by Frank Mehnert, 16 years ago

Component: othervirtual disk

comment:3 by Frank Mehnert, 15 years ago

Resolution: fixed
Status: newclosed

Please reopen if this problem persists with a recent version 2.1.4 or later.

comment:4 by Chris Wolf, 14 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:

http://communities.vmware.com/message/1583812#1583812

Note: See TracTickets for help on using tickets.

© 2023 Oracle
ContactPrivacy policyTerms of Use