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

131

Я пытаюсь создать новую виртуальную машину с Oracle VirtualBox, используя уже существующий жесткий диск. Когда я пытаюсь выбрать существующий файл жесткого диска, файл .vhd, он отображает ошибку, в которой говорится, что виртуальный жесткий диск не может быть использован, поскольку UUID уже существует.

Поэтому я попробовал следующую команду, чтобы изменить его UUID.

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

Я получаю эту ошибку.

Синтаксическая ошибка: недопустимый параметр UUID

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

Cjay
источник
1
Пути, содержащие пробелы, должны быть заключены в двойные кавычки, как вы уже заметили.
AB

Ответы:

171

Правильная команда следующая.

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

Путь к виртуальному диску содержит пробел, поэтому он должен быть заключен в двойные кавычки, чтобы он не анализировался как два параметра.

Cjay
источник
26
Я действительно хочу, чтобы у VirtualBox был какой-нибудь пользовательский интерфейс или окно, которое позволило бы нам это изменить
fedmich
2
Это необходимо указать из-за пробела в пути к файлу.
Chris Stryczynski
Было бы неплохо, если бы пользовательский интерфейс VirtualBox давал возможность генерировать новый UUID, когда вы пытаетесь открыть уже известный диск. Честно говоря, я на самом деле не использую диспетчер дисков для чего-либо, я бы предпочел, чтобы VirtualBox просто рассматривал виртуальные диски как пути к файлам, а не пытался рассматривать их как ресурсы для управления и отслеживания.
младший
34

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

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

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

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

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

borchvm
источник
1
Я думаю, что этот ответ более полезен для всех (включая меня), кто хочет скопировать виртуальную машину.
cbuchart
1
Просто интересно - зачем нужно было менять uuid машины? Если я просто хочу скопировать диск vmdk с одной машины на другую, мне это не нужно, верно?
Олег Гриб
1
Вам необходимо изменить uuid машины, если вы копируете виртуальный диск на ту же машину
borchvm
1
В моем случае отлично сработало - спасибо! Мне не нужно было настраивать UUID машины.
Benco
1
@FabrizioBertoglio, надеюсь, у вас есть свой ответ, но вам нужно остановить любые службы vbox, чтобы редактировать эти файлы - иначе вы получите то же самое старое, то же самое старое. Также убедитесь, что ваш UUID для SATA HardDisk <подключенные устройства> в нижней части файла конфигурации совпадает с UUID для жесткого диска в разделе HardDrive в верхней части файла конфигурации. Прежде чем вы сделаете что-либо из этого, вы также захотите добавить свой <Hardware UUID = myMachineUUID>.
Кен
12

Если вы скопировали диск (файл 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.

Олег Гриб
источник
Вы, наверное, правы. Я выполнил вашу инструкцию, и у меня по-прежнему возникает ошибка Querying UUID Failed, даже если жесткий диск отображается правильно как file -> Virtual Media Managerв настройках машины, так и в настройках с правильным UUID
Фабрицио Бертольо
Я не уверен, в чем ваш случай. То, что я описал выше, именно то, что я сделал, и это сработало у меня на Mac с VB 5.1.8
Олег Гриб
Я решил проблему, выполнив следующие действия: 1. re-installing virtual box using synaptic package managerзатем 2. In the virtual box machine configuration, I did not disable the Floppy disk and EFI Setting. I kept them enabled.Проблема была устранена.
Фабрицио Бертольо
@OlegGryb Это может зависеть от ОС хоста, а также от гостевой ОС.
Кен
11

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

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

Ява Сюй
источник
11

Я искал в Интернете ответ относительно MAC OS, так что ... решение

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

VBoxManage internalcommands sethduuid "full/path/to/vdi"
al3x2ndru
источник
1
Супер полезно !!
Addo Solutions
6

Команда не выполняется, потому что в ней есть место в одном из имен папок, например «VirtualBox VMs.

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

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

VBoxManage internalcommands sethduuid /home/user/VBoxVMs/drupal/drupal.vhd
januarvs
источник
4

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

Энистон
источник
4

То же решение, что и @ Al3x для Windows x64, в cmd.exe:

cd %programfiles%\Oracle\VirtualBox

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

Это рандомизирует UUID диска. Совет от профессионалов: щелкните правой кнопкой мыши файл .vdi, удерживая Shift, и выберите «Копировать как путь», чтобы получить "full/path/to/.vdi"и включить быстрое редактирование в cmd.exe, затем щелкните правой кнопкой мыши, чтобы вставить.

masterxilo
источник
2

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

VBoxManage internalcommands sethduuid /home/user/VirtualBox\ VMs/drupal/drupal.vhd
Whitaker
источник