Comment changer l'UUID d'un disque virtuel?

131

J'essaye de créer une nouvelle machine virtuelle avec Oracle VirtualBox, en utilisant un disque dur déjà existant. Lorsque j'essaie de sélectionner le fichier du disque dur existant, un fichier .vhd, il affiche une erreur indiquant que le disque dur virtuel ne peut pas être utilisé car l'UUID existe déjà.

J'ai donc essayé la commande suivante pour changer son UUID.

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

J'obtiens cette erreur.

Erreur de syntaxe: paramètre UUID non valide

Comment puis-je résoudre ça?

CJAY
la source
1
Les chemins comportant des espaces doivent être placés entre guillemets, comme vous l'avez déjà découvert.
AB

Réponses:

171

La commande correcte est la suivante.

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

Le chemin du disque virtuel contient un espace, il doit donc être placé entre guillemets pour éviter qu'il ne soit analysé comme deux paramètres.

CJAY
la source
25
Je souhaite vraiment que VirtualBox ait une interface utilisateur ou une fenêtre qui nous permet de changer cela
fedmich
1
Cela doit être indiqué en raison de l'espace dans le chemin du fichier.
Chris Stryczynski
Ce serait bien si l'interface utilisateur de VirtualBox offrait la possibilité de générer un nouvel UUID lorsque vous essayez d'ouvrir un disque déjà connu. Honnêtement, je n'utilise pas vraiment le gestionnaire de disque pour quoi que ce soit, je préfère que VirtualBox traite simplement les disques virtuels comme des chemins de fichiers au lieu d'essayer de les traiter comme des ressources à gérer et à suivre.
jrh
34

Ce qui suit a fonctionné pour moi:

  1. exécutez les commandes internes de VBoxManage sethduuid "fichier VDI / VMDK" deux fois (la première fois est juste de générer facilement un UUID, vous pouvez utiliser n'importe quelle autre méthode de génération d'UUID à la place)

  2. ouvrez le fichier .vbox dans un éditeur de texte

  3. remplacez l'UUID trouvé dans Machine uuid = "{...}" par l'UUID que vous avez obtenu lorsque vous avez exécuté sethduuid la première fois

  4. remplacez l'UUID trouvé dans HardDisk uuid = "{...}" et dans Image uuid = "{}" (vers la fin) par l'UUID que vous avez obtenu lorsque vous avez exécuté sethduuid la deuxième fois

Borchvm
la source
1
Je pense que cette réponse est plus utile pour quiconque (moi y compris) qui souhaite copier la machine virtuelle.
cbuchart
1
Je me demande juste - pourquoi avez-vous besoin de changer l'uuid de la machine? Si je veux simplement copier le disque vmdk d'une machine sur une autre, je n'en ai pas besoin, non?
Oleg Gryb
1
Vous devez changer l'uuid de la machine si vous copiez le disque virtuel sur la même machine
borchvm
1
A fonctionné parfaitement dans mon cas - merci! Je n'ai pas eu besoin d'ajuster l'UUID de la machine.
Benco
1
@FabrizioBertoglio j'espère que vous avez votre réponse - mais vous devez arrêter les services vbox de tout type afin de modifier ces fichiers - sinon vous obtenez le même ole même. Assurez-vous également que votre UUID pour le disque dur SATA <périphériques connectés> en bas du fichier de configuration correspond à l'UUID du disque dur dans la section HardDrive en haut du fichier de configuration. Avant de faire quoi que ce soit, vous souhaiterez également ajouter un <UUID matériel = myMachineUUID>.
Ken le
12

Si vous avez copié un disque (fichier vmdk) d'une machine à une autre et devez changer l'UUID d'un disque dans la copie, vous n'avez pas besoin de changer l'UUID de la machine comme cela a été suggéré par une autre réponse.

Tout ce que vous avez à faire est d'attribuer un nouvel UUID à l'image disque:

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

puis remplacez l'ancien UUID par le nouvellement généré à deux endroits dans votre fichier * .vbox

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

et en

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

Cela a fonctionné pour moi pour VirtualBox ver. 5.1.8 fonctionnant sous Mac OS X El Capitan.

Oleg Gryb
la source
Vous avez probablement raison. J'ai suivi vos instructions et j'ai toujours l'erreur Querying UUID Failed, même si le disque dur apparaît correctement à la fois sur file -> Virtual Media Manageret sur les paramètres de la machine avec le bon UUID
Fabrizio Bertoglio
Je ne sais pas quel est votre cas. Ce que j'ai décrit ci-dessus est exactement ce que j'ai fait et cela a fonctionné pour moi sur Mac avec VB 5.1.8
Oleg Gryb
J'ai résolu le problème avec les étapes suivantes: 1. re-installing virtual box using synaptic package manageralors 2. In the virtual box machine configuration, I did not disable the Floppy disk and EFI Setting. I kept them enabled.Le problème a été résolu.
Fabrizio Bertoglio
@OlegGryb Cela peut dépendre du système d'exploitation hôte et également du système d'exploitation invité.
Ken
11

Bien que vous ayez résolu le problème, je viens de poster la raison ici pour certains autres avec le problème similaire.

La raison en est qu'il y a un espace dans votre chemin (nom du répertoire VirtualBox VMs) qui séparera la commande. Donc l'erreur apparaît.

Java Xu
la source
11

J'ai cherché sur le Web une réponse concernant MAC OS, donc .. la solution est

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

VBoxManage internalcommands sethduuid "full/path/to/vdi"
al3x2ndru
la source
1
Super utile !!
Addo Solutions
6

La commande échoue car il y a de l'espace dans l'un des noms de dossier, c'est-à-dire «VirtualBox VMs.

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

S'il n'y a pas d'espace au niveau du nom du dossier ou du nom du fichier, la commande fonctionnera même sans le citer, par exemple après avoir changé 'VirtualBox VMs' en 'VBoxVMs'

VBoxManage internalcommands sethduuid /home/user/VBoxVMs/drupal/drupal.vhd
januarvs
la source
4

Même si cette question posée est ancienne, notez que changer un UUID sur un disque dur virtuel dans un système Windows fera que Windows le traitera comme une machine non activée (car il remarquera le changement de disque) et demandera la réactivation!

aniston
la source
4

Même solution que @ Al3x pour Windows x64, en cmd.exe:

cd %programfiles%\Oracle\VirtualBox

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

Cela randomise l'UUID du disque. Conseil de pro: Faites un clic droit sur le fichier .vdi tout en maintenant la touche Maj enfoncée et sélectionnez "Copier comme chemin" pour obtenir "full/path/to/.vdi"et activer l'édition rapide dans cmd.exe, puis cliquez avec le bouton droit pour coller.

masterxilo
la source
2

Une autre alternative à votre solution originale serait d'utiliser le caractère d'échappement \avant l'espace:

VBoxManage internalcommands sethduuid /home/user/VirtualBox\ VMs/drupal/drupal.vhd
Whitaker
la source