Erstellen Sie einen Klon von VirtualBox Machine, der nach der Installation von Windows keine erneute Aktivierung von Windows verursacht


14

In den meisten Anleitungen zur Installation von Windows auf VirtualBox als Vorlage für schnelle Windows-Jobs wird empfohlen , vor der Installation von Windows einige Schritte zur Vorbereitung der virtuellen Maschine auszuführen (die beste Anleitung, die ich gefunden habe: grahamrhay.wordpress.com ; eine weitere recht gute Anleitung: www .windowstablettv.com ). Leider habe ich diese Anleitungen vor der Installation und Aktivierung von Windows auf der VM, die ich als Vorlage verwenden wollte, nicht gelesen.

Ich möchte wissen, wie ich meine bereits aktive VM so klonen kann, dass keine erneute Aktivierung von Windows erforderlich ist.

In der VM-Definitionsdatei der Vorlage (der VBOX- oder XML-Datei für die VM) hat der /VirtualBox/Machine/HardwareKnoten (XPath ID) kein uuidAttribut. Wenn ich jedoch versuche, VBoxManage modifyvm <uuid|name> --hardwareuuid <uuid>eine neue UUID für die Vorlagen-VM festzulegen, verliert die Vorlagen-VM ihren Aktivierungsstatus! (Zum Glück hatte ich eine Sicherungskopie der Vorlage erstellt.) Um mein Ziel zu erreichen, kann ich diesen Anleitungen nicht einfach folgen und so tun, als hätte ich Windows noch nicht installiert.

Antworten:


11

Zum Glück bemerkte ich etwas an all meinen virtuellen Maschinen, das ich nicht vorbereitet hatte, wie diese Anleitungen beschrieben hatten.

Ich lief VBoxManage showvminfo <uuid|name>und bemerkte, dass der UUIDWert mit dem Hardware UUIDWert übereinstimmte , was mich zu der Vermutung führte, dass die VM den Wert "Maschinen-UUID" als Wert für "Hardware-UUID" verwenden würde , wenn eine VM-Definition kein uuidAttribut im /VirtualBox/Machine/HardwareKnoten hätte. Für meine Vorlagen-VM gab es also eine "Hardware-UUID", die ich verwenden konnte. Ich musste nur herausfinden, wie ich es auf alle Klone übertragen konnte, die ich machen würde.

Um sicherzustellen, dass die UUID übertragen wird, können Sie einen von zwei Ansätzen wählen:

  • Sie können die VM-Definitionsdatei der Vorlage direkt bearbeiten. Die "Hardware-UUID" wird nur an Klone übertragen, wenn /VirtualBox/Machine/Hardwarediese das uuidAttribut hat. Kopieren Sie das /VirtualBox/Machine uuidAttribut und fügen Sie es dem /VirtualBox/Machine/Hardware uuidAttribut hinzu. Wahrscheinlich möchten Sie die VirtualBox-Maschinendatenbank danach neu initialisieren, indem Sie einen von Ihnen ausgeführten VirtualBox-Prozess schließen / beenden. (VBoxSVC verweilt manchmal unter Windows. Möglicherweise müssen Sie es über den Task-Manager beenden.)
  • Sie können Ihre Vorlage klonen und eine neue Vorlagen-VM erstellen. Anschließend können Sie VBoxManage modifyvm <uuid|name> --hardwareuuid <uuid>die "Hardware-UUID" der neuen Vorlage auf die "Maschinen-UUID" / "Hardware-UUID" der Originalvorlage setzen. Ich sage, Sie müssen die VM klonen, um eine neue Vorlagen-VM zu erstellen, denn wenn Sie versuchen, die "Hardware-UUID" mit diesem Befehl in der ursprünglichen Vorlage festzulegen, wird das uuidAttribut dem /VirtualBox/Machine/HardwareKnoten nicht hinzugefügt , da dies immer noch impliziert werden kann von der "Maschinen-UUID" und kopiert diesen Wert daher nicht in einen von ihm erstellten Klon.

Es ist nicht klar, von welcher VM Sie im ersten Punkt sprechen. es ist auch besser zu benutzenVBoxManage modifyvm --hardwareuuid <uuid>
CharlesB

2
Der modifyvmBefehl legt das /VirtualBox/Machine/HardwareKnotenattribut nicht fest uuid, wenn Sie eine UUID mit demselben Wert wie das /VirtalBox/MachineKnotenattribut der VM übergeben uuid. Sie müssen die VBOX-Datei direkt bearbeiten.
Palswim

3

Dieses Powershell-Skript erledigt die Arbeit:

  1. Klonen Sie den Computer, der bereits aktiviert ist.
  2. Schließen Sie die Virtualbox-Prozesse über den Task-Manager.
  3. Führen Sie dieses Skript aus und ändern Sie die Variablen an Ihre Werte.

Denken Sie daran, dass bei den Namen der virtuellen Maschinen zwischen Groß- und Kleinschreibung unterschieden wird.

$ORIGVirtualMachineName="BaseDevWin7"
$clonedVirtualMachineName="DevWin7a"
$vboxDir="c:\Program Files\Oracle\VirtualBox"
cd $vboxDir
$uid=$($($(.\VBoxManage.exe showvminfo $ORIGVirtualMachineName|select-string "Hardware UUID:").ToString()).Split())[4]
.\VBoxManage modifyvm $clonedVirtualMachineName --hardwareuuid $uid

2

Dank der obigen Hinweise habe ich erfolgreich einen Computer mit Win7-Gast geklont, der auf einem Kubuntu-Host zu Testzwecken ohne erneute Aktivierung ausgeführt wird.

Mein Computer war bereits aktiviert und hatte (wie oben beschrieben) tatsächlich keine Hardware-UUID.

Für mich sieht es so aus, als ob die MACHINE-UUID nur für die Virtualbox-Verwaltung vorgesehen ist, während die HARDWARE-UUID von der Windows-Aktivierungslogik verwendet wird. Wenn keine Hardware-UUID vorhanden ist, stellt Virtualbox dem Gast die Computer-UUID zur Verfügung, dh Microsoft kennt die Computer-UUID.

So hat es in meinem Fall ohne erneute Aktivierung gut funktioniert: 1) Kopieren Sie die virtuelle Maschine (Ordner) mit dem normalen Dateibrowser. 2) Öffnen Sie die .vbox-Datei in einem einfachen Texteditor. 3) Da für die "Hardware" kein UUID-Attribut vorhanden war, kopieren Sie das UUID-Attribut des Computers (z. B. uuid = "{xxx11111-2222-3333-4444-xxxxxxxxxxxx}") in den Eintrag "Hardware". 4) Generieren Sie eine neue UUID für den Computer, z. B. mit uuidgenerator.net. 5) Überschreiben Sie den UUID-Maschinenwert mit dem generierten UUID-Wert. => Fertig.

Um beide Computer in VB Manager parallel zu verwalten, ist es schwieriger:
1. Benennen Sie die Festplatten-VDI-Datei der Klone um.
2. Geben Sie in der Befehlszeile über den Befehl "VBoxManage internalcommands sethduuid .vdi" eine neue UUID für die Festplatte ein. VBManager legt eine neue UUID fest und zeigt sie an.
3. Fügen Sie im VB Manager den neuen Computer hinzu. Bearbeiten Sie den Computer, indem Sie die neue Festplattendatei hinzufügen (und entfernen Sie das Original-VDI, falls noch vorhanden).

Jetzt haben Sie eindeutige IDs für alle virtuellen Maschinen und Festplatten. Sie können beide Computer im VB Manager parallel verwalten.


1

Klonen Sie die Maschine vollständig. Starten Sie es nicht.

Über die Befehlszeile:

VBoxManage modifyvm "Name der geklonten VM" --hardwareuuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Verwenden Sie als UUID die Computer-ID (oder die Hardware-ID, falls vorhanden) des Originalcomputers.

Um die UUID zu erhalten, verwenden Sie:

VBoxManage showvminfo "Ursprünglicher VM-Name"

Das sollte funktionieren. Auf Windows 10-Gast getestet, bereits aktiviert.


Dies funktioniert in den meisten Fällen, außer wenn die UUID mit dem Attribut des VM- /VirtalBox/MachineKnotens übereinstimmt uuid, wie aus der Frage und einem anderen Kommentar hervorgeht.
Palswim

0

Die obige Antwort funktioniert! Ich habe es auf einer Windows 10-Vorlage getestet.

"Klonen Sie den Computer vollständig. Starten Sie ihn nicht. Über die Befehlszeile: VBoxManage modifyvm" Name der geklonten VM "--hardwareuuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Verwenden Sie als UUID die Computer-ID (oder Hardware-ID, falls vorhanden) aus der Originalcomputer Um die UUID zu erhalten, verwenden Sie: VBoxManage showvminfo "Name der Original-VM"

Das sollte funktionieren. Auf Windows 10-Gast getestet, bereits aktiviert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.