Jak zmienić identyfikator UUID dysku wirtualnego?

132

Próbuję utworzyć nową maszynę wirtualną z Oracle VirtualBox, używając już istniejącego dysku twardego. Kiedy próbuję wybrać istniejący plik dysku twardego, plik .vhd, wyświetla błąd informujący, że nie można użyć wirtualnego dysku twardego, ponieważ identyfikator UUID już istnieje.

Więc spróbowałem następującego polecenia, aby zmienić jego identyfikator UUID.

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

Otrzymuję ten błąd.

Błąd składniowy: nieprawidłowy parametr UUID

Jak mogę to rozwiązać?

CJAY
źródło
1
Jak już wiesz, ścieżki zawierające spacje powinny być ujęte w podwójne cudzysłowy.
AB

Odpowiedzi:

172

Prawidłowe polecenie jest następujące.

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

Ścieżka do dysku wirtualnego zawiera spację, dlatego musi być ujęta w podwójne cudzysłowy, aby uniknąć jej analizowania jako dwóch parametrów.

CJAY
źródło
26
Naprawdę chciałbym, żeby VirtualBox miał jakiś interfejs użytkownika lub okno, które pozwoliłyby nam to zmienić
fedmich
2
Należy to zacytować ze względu na spację w ścieżce pliku.
Chris Stryczynski
Byłoby miło, gdyby interfejs użytkownika VirtualBox dawał opcję generowania nowego UUID, gdy próbujesz otworzyć dysk, który jest już znany. Szczerze mówiąc, nie używam menedżera dysków do niczego, wolałbym, aby VirtualBox traktował dyski wirtualne jako ścieżki plików, zamiast traktować je jak zasoby do zarządzania i śledzenia.
jrh
34

Pracowały dla mnie:

  1. uruchom dwukrotnie komendy wewnętrzne VBoxManage sethduuid "plik VDI / VMDK" (za pierwszym razem wystarczy wygodnie wygenerować UUID, zamiast tego można użyć dowolnej innej metody generowania UUID)

  2. otwórz plik .vbox w edytorze tekstu

  3. zamień UUID znaleziony w Machine uuid = "{...}" na UUID, który otrzymałeś przy pierwszym uruchomieniu sethduuid

  4. zamień UUID znaleziony w HardDisk uuid = "{...}" i w Image uuid = "{}" (pod koniec) na UUID, który otrzymałeś po uruchomieniu sethduuid po raz drugi

borchvm
źródło
1
Myślę, że ta odpowiedź jest bardziej pomocna dla każdego (w tym dla mnie), który chce skopiować maszynę wirtualną.
cbuchart
1
Tylko się zastanawiałem - dlaczego musisz zmienić uuid maszyny? Jeśli chcę tylko skopiować dysk vmdk z jednej maszyny na drugą, nie potrzebuję tego, prawda?
Oleg Gryb,
1
Musisz zmienić identyfikator użytkownika maszyny, jeśli kopiujesz dysk wirtualny na tę samą maszynę
borchvm
1
W moim przypadku zadziałało idealnie - dzięki! Nie musiałem dostosowywać UUID maszyny.
Benco
1
@FabrizioBertoglio mam nadzieję, że masz swoją odpowiedź - ale musisz zatrzymać wszelkiego rodzaju usługi vbox, aby edytować te pliki - w przeciwnym razie otrzymasz to samo ole to samo ole. Upewnij się również, że identyfikator UUID dysku twardego SATA <podłączone urządzenia> na dole pliku konfiguracyjnego jest zgodny z identyfikatorem UUID dysku twardego w sekcji Dysk twardy na górze pliku konfiguracyjnego. Zanim jednak to zrobisz, zechcesz również dodać swój <Hardware UUID = myMachineUUID>.
Ken,
12

Jeśli skopiowałeś dysk (plik vmdk) z jednego komputera na inny i musisz zmienić identyfikator UUID dysku w kopii, nie musisz zmieniać UUID komputera, jak sugeruje inna odpowiedź.

Wszystko, co musisz zrobić, to przypisać nowy UUID do obrazu dysku:

VBoxManage internalcommands sethduuid your-box-disk2.vmdk
UUID changed to: 5d34479f-5597-4b78-a1fa-94e200d16bbb

a następnie zamień stary UUID na nowo wygenerowany w dwóch miejscach w pliku * .vbox

<MediaRegistry>
  <HardDisks>
    <HardDisk uuid="{5d34479f-5597-4b78-a1fa-94e200d16bbb}" location="box-disk2.vmdk" format="VMDK" type="Normal"/>
  </HardDisks>

i w

    <AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0">
      <Image uuid="{5d34479f-5597-4b78-a1fa-94e200d16bbb}"/>
    </AttachedDevice>

U mnie zadziałało dla VirtualBox ver. 5.1.8 działający w systemie Mac OS X El Capitan.

Oleg Gryb
źródło
Prawdopodobnie masz rację. Postępowałem zgodnie z twoją instrukcją i nadal mam błąd Querying UUID Failed, nawet jeśli dysk twardy wyświetla się poprawnie zarówno w file -> Virtual Media Managerustawieniach maszyny, jak i na nich z prawidłowym UUID
Fabrizio Bertoglio
Nie jestem pewien, jaka jest twoja sprawa. To, co opisałem powyżej, jest dokładnie tym, co zrobiłem i zadziałało na Macu z VB 5.1.8
Oleg Gryb
Rozwiązałem problem, wykonując następujące czynności: 1. re-installing virtual box using synaptic package managernastępnie 2. In the virtual box machine configuration, I did not disable the Floppy disk and EFI Setting. I kept them enabled.Problem został rozwiązany.
Fabrizio Bertoglio
@OlegGryb Może to zależeć od systemu operacyjnego hosta, a także systemu gościa.
Ken
11

Chociaż rozwiązałeś problem, po prostu zamieszczam tutaj powód kilku innych z podobnym problemem.

Powodem jest spacja w twojej ścieżce (nazwa katalogu VirtualBox VMs), która oddziela polecenie. Więc pojawia się błąd.

Java Xu
źródło
11

Przeszukałem sieć w poszukiwaniu odpowiedzi dotyczącej MAC OS, więc ... rozwiązaniem jest

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

VBoxManage internalcommands sethduuid "full/path/to/vdi"
al3x2ndru
źródło
1
Super pomocny !!
Addo Solutions
6

Polecenie nie powiedzie się, ponieważ ma miejsce w jednym z nazw folderów, tj. „Maszyny wirtualne VirtualBox.

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

Jeśli nie ma miejsca w nazwie folderu lub nazwie pliku, to polecenie zadziała nawet bez cytowania go, np. Po zmianie „VirtualBox VMs” na „VBoxVMs”

VBoxManage internalcommands sethduuid /home/user/VBoxVMs/drupal/drupal.vhd
januarvs
źródło
4

Mimo że to pytanie jest stare, pamiętaj, że zmiana UUID na wirtualnym dysku twardym w systemie Windows spowoduje, że system Windows potraktuje go jako maszynę nieaktywną (ponieważ zauważy zmianę dysku) i poprosi o reaktywację!

Aniston
źródło
4

To samo rozwiązanie co @ Al3x dla Windows x64, w cmd.exe:

cd %programfiles%\Oracle\VirtualBox

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

To powoduje losowanie identyfikatora UUID dysku. Wskazówka dla profesjonalistów: kliknij prawym przyciskiem myszy plik .vdi, trzymając wciśnięty klawisz Shift, i wybierz „Kopiuj jako ścieżkę”, aby uzyskać "full/path/to/.vdi"i włączyć szybką edycję w cmd.exe, a następnie kliknij prawym przyciskiem myszy, aby wkleić.

masterxilo
źródło
2

Inną alternatywą dla oryginalnego rozwiązania byłoby użycie znaku ucieczki \przed spacją:

VBoxManage internalcommands sethduuid /home/user/VirtualBox\ VMs/drupal/drupal.vhd
Whitaker
źródło