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

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

Как я могу это решить?

Ответ 1

Я нашел его

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

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

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

Ответ 2

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

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

  • откройте файл .vbox в текстовом редакторе

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

  • замените UUID, найденный в HardDisk uuid = "{...}" , и в Изображение uuid = "{}" (ближе к концу) с UUID, который вы получили, когда вы запустили sethduuid во второй раз

Ответ 3

Хотя вы решили проблему, я просто размещаю причину здесь для некоторых других с аналогичной проблемой.

Причина в том, что в вашем пути есть пробел (имя каталога VirtualBox VMs), который отделяет команду. Таким образом, появляется ошибка.

Ответ 4

Ошибка команды, поскольку она имеет место в одном из имен папки, то есть виртуальных виртуальных машин.

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

Если в имени папки или имени файла нет места, команда будет работать даже без цитирования, например после изменения "виртуальных виртуальных машин VirtualBox" на "VBoxVMs"

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

Ответ 5

Если вы скопировали диск (файл 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 ver. 5.1.8 работает на Mac OS X El Capitan.

Ответ 6

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

Ответ 7

Я искал в Интернете ответ на MAC OS, поэтому.. решение

cd /Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS/

VBoxManage internalcommands sethduuid "full/path/to/vdi"

Ответ 8

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

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