可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I am trying to create a new VM in virtual box using an already-existing hard disk, but when I try to select the existing hard disk file (a .vhd file), it displays an error that the virtual hard disk cannot be used because the UUID already exists.
So I tried the command:
VBoxManage internalcommands sethduuid /home/user/VirtualBox VMs/drupal/drupal.vhd
to change the UUID for .vhd file. But then I get this error:
sethduuid <filepath> [<uuid>]
Assigns a new UUID to the given image file. This way, multiple copies
of a container can be registered.
WARNING: This is a development tool and shall only be used to analyse
problems. It is completely unsupported and will change in
incompatible ways without warning.
Syntax error: Invalid UUID parameter
How can i resolve this?
回答1:
I found it
if i use " " at the end it will work
finally here is the command
VBoxManage internalcommands sethduuid "/home/user/VirtualBox VMs/drupal/drupal.vhd"
回答2:
The following worked for me:
run VBoxManage internalcommands sethduuid "VDI/VMDK file" twice (the first time is just to conveniently generate an UUID, you could use any other UUID generation method instead)
open the .vbox file in a text editor
replace the UUID found in Machine uuid="{...}" with the UUID you got when you ran sethduuid the first time
replace the UUID found in HardDisk uuid="{...}" and in Image uuid="{}" (towards the end) with the UUID you got when you ran sethduuid the second time
回答3:
Though you have solved the problem, I just post the reason here for some others with the similar problem.
The reason is there's an space in your path(directory name VirtualBox VMs
) which will separate the command. So the error appears.
回答4:
I have searched the web for an answer regarding MAC OS, so .. the solution is
cd /Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS/
VBoxManage internalcommands sethduuid "full/path/to/vdi"
回答5:
If you've copied a disk (vmdk file) from one machine to another and need to change a disk's UUID in the copy, you don't need to change the Machine UUID as has been suggested by another answer.
All you need to do is to assign a new UUID to the disk image:
VBoxManage internalcommands sethduuid your-box-disk2.vmdk
UUID changed to: 5d34479f-5597-4b78-a1fa-94e200d16bbb
and then replace the old UUID with the newly generated one in two places in your *.vbox file
<MediaRegistry>
<HardDisks>
<HardDisk uuid="{5d34479f-5597-4b78-a1fa-94e200d16bbb}" location="box-disk2.vmdk" format="VMDK" type="Normal"/>
</HardDisks>
and in
<AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0">
<Image uuid="{5d34479f-5597-4b78-a1fa-94e200d16bbb}"/>
</AttachedDevice>
It worked for me for VirtualBox ver. 5.1.8 running on Mac OS X El Capitan.
回答6:
The command fails because it has space in one of the folder name,
i.e. 'VirtualBox VMs.
VBoxManage internalcommands sethduuid /home/user/VirtualBox VMs/drupal/drupal.vhd
If there is no space at folder name or file name, then the command will work even without quoting it,
e.g. after changing 'VirtualBox VMs' into 'VBoxVMs'
VBoxManage internalcommands sethduuid /home/user/VBoxVMs/drupal/drupal.vhd
回答7:
Even though this question asked is old, note that changing a UUID on a virtual HDD in a windows system will make windows treat it as a not activated machine (as it notices the disk change) and will ask for reactivation !
回答8:
Another alternative to your original solution would be to use the escape character \
before the space:
VBoxManage internalcommands sethduuid /home/user/VirtualBox\ VMs/drupal/drupal.vhd
回答9:
Same solution as @Al3x for Windows x64, in cmd.exe
:
cd %programfiles%\Oracle\VirtualBox
VBoxManage internalcommands sethduuid "full/path/to/.vdi"
This randomizes the UUID of the disk. Pro tip: Right click the .vdi file while holding shift and select "Copy as path" to obtain "full/path/to/.vdi"
and enable quick edit in cmd.exe, then right click to paste.