Как изменить UUID в виртуальном окне


Я пытаюсь создать новую виртуальную машину в виртуальном поле, используя уже существующий жесткий диск, но когда я пытаюсь выбрать существующий файл жесткого диска (a .vhd file), он отображает ошибку, что виртуальный жесткий диск не может быть использован, потому что 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 106

8 ответов:

Я нашел его

если я использую "" в конце концов, это будет работать

наконец, вот команда

VBoxManage internalcommands sethduuid "/home/user/VirtualBox VMs/drupal/drupal.vhd"

для меня сработало следующее:

  1. выполнить VBoxManage internalcommands sethduuid "VDI / VMDK file" дважды (в первый раз просто удобно генерировать UUID, вместо этого вы можете использовать любой другой метод генерации UUID)

  2. открыть .vbox файл в текстовом редакторе

  3. замените UUID, найденный в Machine uuid=" {...}" С UUID вы получили, когда вы побежали sethduuid первый раз

  4. замените UUID, найденный в жесткий диск uuid=" {...}" и Image 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 file

<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 виртуальных машин.

VBoxManage internalcommands sethduuid /home/user/VirtualBox VMs/drupal/drupal.vhd

Если в имени папки или файла нет места, то команда будет работать даже без кавычек, например, после изменения 'VirtualBox VMs' в 'VBoxVMs'

VBoxManage internalcommands sethduuid /home/user/VBoxVMs/drupal/drupal.vhd

несмотря на то, что этот вопрос задан старый, обратите внимание, что изменение UUID на виртуальном жестком диске в системе windows заставит windows рассматривать его как неактивированную машину (поскольку она замечает изменение диска) и попросит о повторной активации !

Другой альтернативой вашему оригинальному решению было бы использовать escape-символ \ до места:

VBoxManage internalcommands sethduuid /home/user/VirtualBox\ VMs/drupal/drupal.vhd