Come posso modificare l'UUID di un disco virtuale?


131

Sto cercando di creare una nuova macchina virtuale con Oracle VirtualBox, utilizzando un disco rigido già esistente. Quando provo a selezionare il file del disco rigido esistente, un file .vhd, viene visualizzato un errore che indica che il disco rigido virtuale non può essere utilizzato perché l'UUID esiste già.

Quindi ho provato il seguente comando per cambiare il suo UUID.

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

Ottengo questo errore.

Errore di sintassi: parametro UUID non valido

Come posso risolvere questo?


1
I percorsi con caratteri di spazio devono essere racchiusi tra virgolette doppie, come hai già scoperto.
AB,

Risposte:


171

Il comando corretto è il seguente.

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

Il percorso per il disco virtuale contiene uno spazio, quindi deve essere racchiuso tra virgolette doppie per evitare che venga analizzato come due parametri.


25
Vorrei davvero che VirtualBox avesse un'interfaccia utente o una finestra che ci permettesse di cambiarlo
fedmich,

1
Questo deve essere citato a causa dello spazio nel percorso del file.
Chris Stryczynski,

Sarebbe bello se l'interfaccia utente di VirtualBox fornisse l'opzione per generare un nuovo UUID quando si tenta di aprire un disco già noto. Onestamente non uso davvero il gestore del disco per niente, preferirei che VirtualBox trattasse i dischi virtuali come percorsi di file invece di provare a trattarli come risorse da gestire e tracciare.
jrh

34

Per me ha funzionato:

  1. esegui due comandi interni VBoxManage sethduuid "file VDI / VMDK" due volte (la prima volta è solo per generare un UUID in modo conveniente, puoi invece usare qualsiasi altro metodo di generazione UUID)

  2. aprire il file .vbox in un editor di testo

  3. sostituisci l'UUID trovato in Machine uuid = "{...}" con l'UUID che hai ottenuto quando hai eseguito sethduuid la prima volta

  4. sostituisci l'UUID trovato in HardDisk uuid = "{...}" e in Image uuid = "{}" (verso la fine) con l'UUID che hai ottenuto quando hai eseguito sethduuid la seconda volta


1
Penso che questa risposta sia più utile per chiunque (incluso me) che vuole copiare la macchina virtuale.
cbuchart,

1
Mi chiedevo solo: perché hai dovuto cambiare Machine uuid? Se voglio solo copiare il disco vmdk da una macchina all'altra, non ne ho bisogno, giusto?
Oleg Gryb,

1
È necessario modificare l'UUID della macchina se si copia il disco virtuale sulla stessa macchina
borchvm

1
Ha funzionato perfettamente nel mio caso, grazie! Non ho avuto bisogno di regolare l'UUID macchina.
Benco

1
@FabrizioBertoglio si spera che tu abbia la tua risposta - ma devi interrompere i servizi vbox di qualsiasi tipo per modificare quei file - altrimenti otterrai lo stesso ole stesso ole. Assicurarsi inoltre che l'UUID per Hard Disk SATA <dispositivi collegati> nella parte inferiore del file di configurazione corrisponda all'UUID per il disco rigido nella sezione HardDrive nella parte superiore del file di configurazione. Prima di eseguire qualsiasi operazione, è consigliabile aggiungere anche un <UUID hardware = myMachineUUID>.
Ken,

12

Se hai copiato un disco (file vmdk) da una macchina a un'altra e devi modificare l'UUID di un disco nella copia, non è necessario modificare l'UUID macchina come è stato suggerito da un'altra risposta.

Tutto quello che devi fare è assegnare un nuovo UUID all'immagine del disco:

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

e quindi sostituire il vecchio UUID con quello appena generato in due posizioni nel file * .vbox

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

e dentro

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

Ha funzionato per me per VirtualBox ver. 5.1.8 in esecuzione su Mac OS X El Capitan.


Probabilmente hai ragione. Ho seguito le tue istruzioni e ho ancora l'errore Interrogazione UUID non riuscita, anche se il disco rigido viene visualizzato correttamente su file -> Virtual Media Managere sulle impostazioni della macchina con l'UUID corretto
Fabrizio Bertoglio,

Non sono sicuro di quale sia il tuo caso. Quello che ho descritto sopra è esattamente quello che ho fatto e ha funzionato per me su Mac con VB 5.1.8
Oleg Gryb

Ho risolto il problema con i seguenti passaggi: 1. re-installing virtual box using synaptic package managerquindi 2. In the virtual box machine configuration, I did not disable the Floppy disk and EFI Setting. I kept them enabled.Il problema è stato risolto.
Fabrizio Bertoglio,

@OlegGryb Potrebbe dipendere dal sistema operativo host e anche dal sistema operativo guest.
Ken,

11

Anche se hai risolto il problema, ho appena pubblicato il motivo qui per alcuni altri con il problema simile.

Il motivo è che c'è uno spazio nel percorso (nome della directory VirtualBox VMs) che separerà il comando. Quindi appare l'errore.


11

Ho cercato sul web una risposta per quanto riguarda MAC OS, quindi ... la soluzione è

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

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

1
Super utile !!
Addo Solutions

6

Il comando ha esito negativo perché ha spazio in uno dei nomi delle cartelle, ad esempio 'VM VirtualBox.

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

Se non c'è spazio nel nome della cartella o del nome del file, il comando funzionerà anche senza virgolette, ad esempio dopo aver cambiato 'VM VirtualBox' in 'VBoxVMs'

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

4

Anche se questa domanda posta è vecchia, nota che cambiare un UUID su un HDD virtuale in un sistema Windows farà sì che Windows lo consideri come una macchina non attivata (poiché nota la modifica del disco) e chiederà la riattivazione!


4

Stessa soluzione di @ Al3x per Windows x64, in cmd.exe:

cd %programfiles%\Oracle\VirtualBox

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

Questo randomizza l'UUID del disco. Suggerimento pro: fai clic con il pulsante destro del mouse sul file .vdi mentre tieni premuto MAIUSC e seleziona "Copia come percorso" per ottenere "full/path/to/.vdi"e abilitare la modifica rapida in cmd.exe, quindi fai clic con il pulsante destro del mouse per incollare.


2

Un'altra alternativa alla soluzione originale sarebbe quella di utilizzare il carattere di escape \prima dello spazio:

VBoxManage internalcommands sethduuid /home/user/VirtualBox\ VMs/drupal/drupal.vhd
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.