Tentativo di aprire una configurazione VM con lo stesso UUID di una macchina virtuale esistente


26

Quando provo ad aggiungere due macchine virtuali VirtualBox che sono state originariamente copiate (tramite una semplice copia di file) dalla stessa fonte, aggiungendo la seconda ricevo il messaggio

Failed to open virtual machine [...]
Trying to open a VM config [...] which has the same UUID as an existing virtual machine.

(Sì, le macchine avrebbero dovuto essere clonate invece di una semplice copia di file, ma a questo punto è troppo tardi.)

Risposte:


40

È possibile utilizzare VBoxManage internalcommands sethduuid <VDI/VMDK file>(Esegui dalla directory di installazione di VBox) per modificare l'UUID HD, ma questo ha due carenze: non aggiorna il .vboxfile e non cambia l'UUID della macchina (non ho trovato alcun modo per farlo con VBoxManage ), solo l'UUID HD.

Il seguente ha funzionato per me (Win 7, la versione più recente di VirtualBox):

  1. eseguito VBoxManage internalcommands sethduuid <VDI/VMDK file> due volte (la prima volta è solo per generare comodamente un UUID, è possibile utilizzare qualsiasi altro metodo di generazione UUID)
  2. aprire il .vboxfile in un editor di testo
  3. sostituisci l'UUID trovato <Machine uuid="{...}"con l'UUID che hai ottenuto sethduuidalla prima esecuzione
  4. sostituisci l'UUID trovato dentro <HardDisk uuid="{...}"e dentro <Image uuid="{}"(verso la fine) con l'UUID che hai ottenuto quando hai eseguito sethduuidla seconda volta

Successivamente è possibile aggiungere la macchina virtuale. Non è una soluzione molto pulita, ma non sembra causare alcun problema.


1
Questo ha funzionato per me, ma avevo anche un DVD "inserito" nella VM che stavo copiando manualmente. Quando ho modificato il mio file .vbox, ho dovuto cambiare <DVDImages>...</DVDImages>solo <DVDImages />per "espellere" il DVD con l'UUID duplicato.
JPhi1618,

Notare che se la VM ha istantanee dovrete anche fare gli stessi passi sui file vdi nella cartella "Istantanee".
Laurent,

6

Ho trovato un modo più semplice per farlo.

Clonare la macchina virtuale esistente. Questo crea una nuova versione con presumibilmente un nuovo uuid, ma sotto tutti gli altri aspetti è la stessa macchina.

Quindi copia quello che vuoi aggiungere, al tuo \ utente (il tuo nome) \ Virtual Box VM \ (o dovunque sia la posizione per le tue macchine virtuali) e sovrascrivi tutti i file esistenti lì, per sostituire la macchina esistente.

Avrei eseguito il backup della macchina esistente prima nel caso, prima di farlo, ma ha funzionato bene qui. Utilizzato per tornare a un backup precedente di una macchina virtuale mantenendo la clonazione della versione esistente.


se hai abbastanza spazio su disco, questo è il modo più semplice, grazie Robert.
sddk,

Se qualcuno lo fa, dovrebbe assicurarsi che il file vbox abbia un tag uuid hardware che corrisponda al computer uuid :: <hardware uuid = "{...}">, quindi possono cambiare il disco rigido e il computer senza eventuali problemi. <hardware uuid = "{...}">
StixO

2

Mi rendo conto che questo è un vecchio post, ma ho riscontrato questo errore. L'ho risolto da:

  1. Apri Virtual Box Manager
  2. Fare clic con il tasto destro sulla macchina virtuale in Virtual Box Manager
  3. Fai clic su "Rimuovi"
  4. Apparirà un pop-up. Scegli "Rimuovi solo" che rimuoverà semplicemente tutte le tracce della scatola virtuale dal Virtual Box Manager
  5. Chiudi il Virtual Box Manager
  6. Utilizzando il file manager di Linux, selezionare la cartella contenente la macchina virtuale
  7. Elimina (o sposta) tutto TRANNE il file del disco rigido virtuale .vmdk
  8. Apri Virtual Box Manager
  9. Fai clic su "Macchina"
  10. Fai clic su "Nuovo"
  11. Assegna un nome alla nuova macchina (ho usato lo stesso nome usato in origine)

    NOTA: il nome della macchina diventerà il nome della directory che conterrà la macchina virtuale, quindi scegliere con saggezza e notare anche che se si desidera che il file .vmdk risieda nella nuova directory, saranno necessari ulteriori passaggi in Virtual Box Manager

  12. Seleziona il tipo e la versione corretti per la macchina virtuale che aveva riscontrato il problema e fai clic su "Avanti"
  13. Seleziona la dimensione della memoria che desideri assegnare alla macchina virtuale e fai clic su "Avanti"
  14. Seleziona "Usa il file del disco rigido virtuale esistente" e selezionalo sfogliando fino alla sua posizione
  15. Seleziona "Crea"

Seguire semplicemente le istruzioni da lì e quindi avviare la macchina virtuale.

Tutto funziona bene, non è necessaria la riattivazione di Windows o ecc.


1

È inoltre possibile clonare la macchina esistente, quindi accedere alle impostazioni e modificare l'archiviazione per utilizzare il file .vmdk precedentemente copiato.


1

Se non è possibile avviare a causa di questo errore, è sufficiente 'Rimuovi ...' la voce da 'Oracle VM VirtualBox Manager' . Questo eliminerà il conflitto e sarai quindi in grado di aprire la VM dalla sua nuova posizione.

... A quel punto puoi eseguire un clone se è quello che intendi. Nel mio caso, non sono stati richiesti ulteriori sforzi poiché non avevo più bisogno della posizione originale della VM.


Questa è di gran lunga la soluzione più semplice, e non solo, funziona.
shmu,

-1

L'utente TGR ha capito bene, ma ho dovuto apportare un'ulteriore modifica: nel vbox XML dovevo cambiare l'immagine uuid in modo che corrispondesse all'Uuid del disco rigido (il secondo UUID generato nella riga di comando)

<StorageControllers>
   <StorageController ...>
     <AttachedDevice ...>
       <Image uuid="{ [second UUID] }"/>

-1

Ho trovato un modo più semplice di qualsiasi altro. Devi solo eliminare la macchina virtuale dall'interfaccia di Virtual Box (se ti chiede se vuoi eliminare i file della VM, rispondi NO! O perderai la VM). Quindi vai al file .vbox e aprilo (con Virtual Box). Dovrebbe funzionare perché hai eliminato l'UUID (mentre hai eliminato la VM). Almeno ha funzionato per me...

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.