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


131

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

Тому я спробував наступну команду змінити його UUID.

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

Я отримую цю помилку.

Помилка синтаксису: недійсний параметр UUID

Як я можу це вирішити?


1
Шляхи, що мають символи пробілу, повинні бути укладені у подвійні лапки, як ви вже виявили.
AB

Відповіді:


171

Правильна команда наступна.

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

Шлях для віртуального диска містить пробіл, тому він повинен бути укладений у подвійні лапки, щоб уникнути його розбору на два параметри.


25
Я дуже хочу, щоб у VirtualBox був якийсь інтерфейс або вікно, яке дозволяє нам це змінити
fedmich

1
Це потрібно цитувати через простір у файловій дорозі.
Кріс Стричинський

Було б непогано, якби інтерфейс VirtualBox дав можливість генерувати новий UUID, коли ви намагалися відкрити вже відомий диск. Чесно кажучи, я не використовую диспетчера дисків ні для чого, я вважаю за краще VirtualBox просто ставитись до віртуальних дисків як до файлових шляхів, а не намагатися ставитися до них як до ресурсів для управління та відстеження.
jrh

34

Для мене працювало наступне:

  1. запустіть VBoxManage Internalcommands sethduuid "файл VDI / VMDK" двічі (перший час - це просто для зручного створення UUID; замість цього ви можете використовувати будь-який інший метод генерації UUID)

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

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

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


1
Я думаю, що ця відповідь корисніше для всіх (включаючи мене), хто хоче скопіювати віртуальну машину.
cbuchart

1
Просто цікаво - чому вам потрібно було змінити машину uuid? Якщо я просто хочу скопіювати диск vmdk з однієї машини на іншу, мені це не потрібно, правда?
Олег Гриб

1
Вам потрібно змінити Machine uuid, якщо ви скопіюєте віртуальний диск на одній машині
borchvm

1
У моєму випадку працювали ідеально - дякую! Мені не потрібно було коригувати UUID машини.
Бенко

1
@FabrizioBertoglio, сподіваємось, у вас є відповідь, - але вам потрібно зупинити послуги vbox будь-якого типу, щоб редагувати ці файли - інакше ви отримаєте той же ole той же ole. Також переконайтесь, що ваш UUID для жорсткого диска SATA <приєднані пристрої> внизу файлу конфігурації відповідає 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.


Ви, мабуть, праві. Я дотримувався вашої інструкції, і у мене все ще помилка Запит запиту на UUID не вдався, навіть якщо жорсткий диск відображається правильно як на file -> Virtual Media Managerналаштуваннях машини, так і на налаштуваннях машини з правильним UUID
Fabrizio Bertoglio

Я не впевнений, яка у вас справа. Те, що я описав вище, саме те, що я зробив, і це працювало для мене на 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 Це може залежати від Host OS, а також Guest OS.
Кен

11

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

Причина в тому, що у вашому шляху є пробіл (ім'я каталогу VirtualBox VMs), який буде відокремлювати команду. Так з’являється помилка.


11

Я шукав в Інтернеті відповідь щодо MAC OS, тому .. рішення є

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

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

1
Супер корисно !!
Addo Solutions

6

Команда виходить з ладу, оскільки в ній є простір в одній з імен папки, тобто "Віртуальних віртуальних вікнах".

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

Якщо в назві папки чи імені файлу немає місця, команда буде працювати навіть без цитування, наприклад, після зміни "VirtualBox VMs" на "VBoxVMs"

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

4

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


4

Те саме рішення, що і @ Al3x для Windows x64, у cmd.exe:

cd %programfiles%\Oracle\VirtualBox

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

Це рандомізує UUID диска. Порада: Клацніть правою кнопкою миші файл .vdi, утримуючи зсув, і виберіть "Скопіювати як шлях", щоб отримати "full/path/to/.vdi"та включити швидке редагування у cmd.exe, а потім клацніть правою кнопкою миші, щоб вставити.


2

Ще одна альтернатива вашому оригінальному рішенню - використовувати символ пробігу \перед пробілом:

VBoxManage internalcommands sethduuid /home/user/VirtualBox\ VMs/drupal/drupal.vhd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.