Wie ändere ich die UUID einer virtuellen Festplatte?

131

Ich versuche, eine neue virtuelle Maschine mit Oracle VirtualBox unter Verwendung einer bereits vorhandenen Festplatte zu erstellen. Wenn ich versuche, die vorhandene Festplattendatei, eine VHD-Datei, auszuwählen, wird ein Fehler angezeigt, der besagt, dass die virtuelle Festplatte nicht verwendet werden kann, da die UUID bereits vorhanden ist.

Also habe ich den folgenden Befehl versucht, um seine UUID zu ändern.

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

Ich bekomme diesen Fehler.

Syntaxfehler: Ungültiger UUID-Parameter

Wie kann ich das beheben?

CJAY
quelle
1
Pfade mit Leerzeichen sollten, wie Sie bereits festgestellt haben, in doppelte Anführungszeichen gesetzt werden.
AB

Antworten:

171

Der richtige Befehl ist der folgende.

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

Der Pfad für die virtuelle Festplatte enthält ein Leerzeichen. Daher muss er in doppelte Anführungszeichen gesetzt werden, um zu vermeiden, dass er als zwei Parameter analysiert wird.

CJAY
quelle
25
Ich wünschte wirklich, VirtualBox hätte eine Benutzeroberfläche oder ein Fenster, in dem wir dies ändern können
fedmich
1
Dies muss aufgrund des Speicherplatzes im Dateipfad angegeben werden.
Chris Stryczynski
Es wäre schön, wenn die VirtualBox-Benutzeroberfläche die Option zum Generieren einer neuen UUID geben würde, wenn Sie versuchen, eine bereits bekannte Festplatte zu öffnen. Ehrlich gesagt verwende ich den Festplattenmanager nicht wirklich für irgendetwas. Ich würde VirtualBox lieber nur virtuelle Festplatten als Dateipfade behandeln, anstatt zu versuchen, sie wie Ressourcen zum Verwalten und Verfolgen zu behandeln.
JRH
34

Folgendes hat bei mir funktioniert:

  1. Führen Sie die internen VBoxManage-Befehle sethduuid "VDI / VMDK-Datei" zweimal aus (das erste Mal ist nur das bequeme Generieren einer UUID, Sie können stattdessen jede andere UUID-Generierungsmethode verwenden).

  2. Öffnen Sie die .vbox-Datei in einem Texteditor

  3. Ersetzen Sie die in Machine uuid = "{...}" gefundene UUID durch die UUID, die Sie beim ersten Ausführen von sethduuid erhalten haben

  4. Ersetzen Sie die UUID in HardDisk uuid = "{...}" und in Image uuid = "{}" (gegen Ende) durch die UUID, die Sie erhalten haben, als Sie sethduuid das zweite Mal ausgeführt haben

borchvm
quelle
1
Ich denke, diese Antwort ist hilfreicher für alle (einschließlich mir), die die virtuelle Maschine kopieren möchten.
Cbuchart
1
Ich frage mich nur - warum mussten Sie die Maschinen-UUID ändern? Wenn ich nur eine vmdk-Festplatte von einem Computer auf einen anderen kopieren möchte, brauche ich das nicht, oder?
Oleg Gryb
1
Sie müssen die Computer-
UUID
1
Hat in meinem Fall perfekt funktioniert - danke! Ich musste die Maschinen-UUID nicht anpassen.
Benco
1
@FabrizioBertoglio hoffentlich haben Sie Ihre Antwort - aber Sie müssen vbox-Dienste jeglicher Art beenden, um diese Dateien zu bearbeiten - andernfalls erhalten Sie dieselbe alte gleiche alte. Stellen Sie außerdem sicher, dass Ihre UUID für SATA-Festplatte <angeschlossene Geräte> unten in der Konfigurationsdatei mit der UUID für die Festplatte im Abschnitt Festplatte oben in der Konfigurationsdatei übereinstimmt. Bevor Sie dies tun, sollten Sie jedoch auch eine <Hardware UUID = myMachineUUID> hinzufügen.
Ken
12

Wenn Sie eine Festplatte (VMDK-Datei) von einem Computer auf einen anderen kopiert haben und die UUID einer Festplatte in der Kopie ändern müssen, müssen Sie die UUID des Computers nicht ändern, wie dies in einer anderen Antwort vorgeschlagen wurde.

Sie müssen dem Festplatten-Image lediglich eine neue UUID zuweisen:

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

und ersetzen Sie dann die alte UUID an zwei Stellen in Ihrer * .vbox-Datei durch die neu generierte

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

und in

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

Es hat bei mir für VirtualBox ver funktioniert. 5.1.8 unter Mac OS X El Capitan.

Oleg Gryb
quelle
Du hast vermutlich recht. Ich habe Ihre Anweisungen befolgt und habe immer noch den Fehler, dass die Abfrage der UUID fehlgeschlagen ist, auch wenn die Festplatte sowohl auf file -> Virtual Media Managerals auch in den Computereinstellungen mit der richtigen UUID korrekt angezeigt wird
Fabrizio Bertoglio
Ich bin mir nicht sicher, was dein Fall ist. Was ich oben beschrieben habe, ist genau das, was ich getan habe und es funktionierte für mich auf einem Mac mit VB 5.1.8
Oleg Gryb
Ich habe das Problem mit den folgenden Schritten gelöst: 1. re-installing virtual box using synaptic package managerDann wurde 2. In the virtual box machine configuration, I did not disable the Floppy disk and EFI Setting. I kept them enabled.das Problem behoben.
Fabrizio Bertoglio
@OlegGryb Es kann vom Host-Betriebssystem und auch vom Gast-Betriebssystem abhängen.
Ken
11

Obwohl Sie das Problem gelöst haben, poste ich hier nur den Grund für einige andere mit dem ähnlichen Problem.

Der Grund dafür ist, dass sich in Ihrem Pfad ein Leerzeichen befindet (Verzeichnisname VirtualBox VMs), das den Befehl trennt. Der Fehler tritt also auf.

Java Xu
quelle
11

Ich habe im Internet nach einer Antwort bezüglich MAC OS gesucht, also ist die Lösung

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

VBoxManage internalcommands sethduuid "full/path/to/vdi"
al3x2ndru
quelle
1
Super hilfreich !!
Addo Solutions
6

Der Befehl schlägt fehl, weil er Speicherplatz in einem der Ordnernamen hat, dh 'VirtualBox-VMs.

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

Wenn unter Ordnername oder Dateiname kein Leerzeichen vorhanden ist, funktioniert der Befehl auch ohne Anführungszeichen, z. B. nachdem 'VirtualBox-VMs' in 'VBoxVMs' geändert wurden.

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

Auch wenn diese Frage alt ist, beachten Sie, dass das Ändern einer UUID auf einer virtuellen Festplatte in einem Windows-System dazu führt, dass Windows sie als nicht aktivierte Maschine behandelt (da es den Festplattenwechsel bemerkt) und nach einer Reaktivierung fragt!

Aniston
quelle
4

Gleiche Lösung wie @ Al3x für Windows x64, in cmd.exe:

cd %programfiles%\Oracle\VirtualBox

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

Dadurch wird die UUID der Festplatte zufällig ausgewählt. Pro-Tipp: Klicken Sie mit der rechten Maustaste auf die .vdi-Datei, während Sie die Umschalttaste gedrückt halten, und wählen Sie "Als Pfad kopieren", um "full/path/to/.vdi"die schnelle Bearbeitung in cmd.exe zu erhalten und zu aktivieren. Klicken Sie dann mit der rechten Maustaste, um sie einzufügen .

masterxilo
quelle
2

Eine andere Alternative zu Ihrer ursprünglichen Lösung wäre die Verwendung des Escape-Zeichens \vor dem Leerzeichen:

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