Как изменить UUID в виртуальной коробке
Я пытаюсь создать новую виртуальную машину в виртуальном поле, используя уже существующий жесткий диск, но когда я пытаюсь выбрать существующий файл жесткого диска (a .VHD-файл), он отображает ошибку, что виртуальный жесткий диск не может использоваться, поскольку UUID уже существует.
поэтому я попробовал команду:
VBoxManage internalcommands sethduuid /home/user/VirtualBox VMs/drupal/drupal.vhd
чтобы изменить UUID для .vhd-файл. Но потом я получаю эту ошибку:
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
Как я могу решить это?
8 ответов
Я нашел его
если я использую "" в конце он будет работать
наконец, вот команда
VBoxManage internalcommands sethduuid "/home/user/VirtualBox VMs/drupal/drupal.vhd"
для меня сработало следующее:
run VBoxManage internalcommands sethduuuid "VDI / VMDK file" дважды (в первый раз просто удобно генерировать UUID, вместо этого вы можете использовать любой другой метод генерации UUID)
открыть .VBOX файл в текстовом редакторе
замените UUID, найденный в машина uuid=" {...}" С UUID вы получили, когда вы побежали sethduuid первый раз
замените UUID, найденный в жесткий диск uuid=" {...}" и изображение uuid=" {}" (ближе к концу) с UUID вы получили, когда вы запустили sethduuid во второй раз
хотя вы решили проблему, я просто разместил причину здесь для некоторых других с аналогичной проблемой.
причина в том, что в вашем пути есть пробел (имя каталога VirtualBox VMs
), который отделит команду. Таким образом, появляется ошибка.
Если вы скопировали диск (файл vmdk) с одной машины на другую и вам нужно изменить UUID диска в копии, вам не нужно менять UUID машины, как было предложено другим ответом.
все, что вам нужно сделать, это назначить новый UUID образу диска:
VBoxManage internalcommands sethduuid your-box-disk2.vmdk
UUID changed to: 5d34479f-5597-4b78-a1fa-94e200d16bbb
а затем замените старый UUID на вновь сгенерированный в двух местах в вашем *.файл vbox
<MediaRegistry>
<HardDisks>
<HardDisk uuid="{5d34479f-5597-4b78-a1fa-94e200d16bbb}" location="box-disk2.vmdk" format="VMDK" type="Normal"/>
</HardDisks>
и
<AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0">
<Image uuid="{5d34479f-5597-4b78-a1fa-94e200d16bbb}"/>
</AttachedDevice>
это сработало для меня для VirtualBox версия. 5.1.8 работает на Mac OS X El Capitan.
Я искал в интернете ответ относительно MAC OS, поэтому .. решение
cd /Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS/
VBoxManage internalcommands sethduuid "full/path/to/vdi"
команда завершается неудачно, потому что она имеет место в одном из имен папки, т. е. ' VirtualBox VMs.
VBoxManage internalcommands sethduuid /home/user/VirtualBox VMs/drupal/drupal.vhd
Если нет места в имени папки или имени файла, то команда будет работать даже без его цитирования, например, после изменения "VirtualBox VMs" в "VBoxVMs"
VBoxManage internalcommands sethduuid /home/user/VBoxVMs/drupal/drupal.vhd
хотя этот вопрос задан старый, обратите внимание, что изменение UUID на виртуальном HDD в системе windows заставит windows рассматривать его как неактивированную машину (поскольку она замечает изменение диска) и попросит реактивацию !
Другой альтернативой вашему исходному решению было бы использование escape-символа \
до места:
VBoxManage internalcommands sethduuid /home/user/VirtualBox\ VMs/drupal/drupal.vhd