Utwórz klon VirtualBox Machine, który nie spowoduje ponownej aktywacji systemu Windows po zainstalowaniu systemu Windows

14

Większość poradników dotyczących instalowania systemu Windows na VirtualBox jako szablonu dla szybkich zadań systemu Windows mówi, aby przed zainstalowaniem systemu Windows wykonać kilka kroków w celu przygotowania maszyny wirtualnej (najlepszy przewodnik, który znalazłem: grahamrhay.wordpress.com ; inny dość dobry przewodnik: www .windowstablettv.com ). Niestety nie przeczytałem tych przewodników przed instalacją i aktywacją systemu Windows na maszynie wirtualnej, której chciałem użyć jako szablonu.

Chcę wiedzieć, jak sklonować moją już aktywną maszynę wirtualną w taki sposób, aby nie wymagała ponownej aktywacji z systemu Windows.

Przeglądając szablon pliku definicji maszyny wirtualnej (plik VBOX lub XML maszyny wirtualnej), /VirtualBox/Machine/Hardwarewęzeł (identyfikator XPath) nie ma uuidatrybutu. Ale jeśli spróbuję użyć VBoxManage modifyvm <uuid|name> --hardwareuuid <uuid>do ustawienia nowego identyfikatora UUID dla szablonu maszyny Wirtualnej, wówczas maszyna wirtualna szablonu traci status aktywacji! (Na szczęście wykonałem kopię zapasową szablonu.) Aby więc osiągnąć cel, nie mogę po prostu postępować zgodnie z tymi instrukcjami, udając, że nie zainstalowałem jeszcze systemu Windows.

palswim
źródło

Odpowiedzi:

11

Na szczęście zauważyłem coś o wszystkich moich maszynach wirtualnych, których nie przygotowałem zgodnie z tymi przewodnikami.

Uruchomiłem VBoxManage showvminfo <uuid|name>i zauważyłem, że UUIDwartość odpowiada Hardware UUIDwartości, co prowadzi mnie do przypuszczenia, że ​​jeśli jakakolwiek definicja maszyny wirtualnej nie miałaby uuidatrybutu w /VirtualBox/Machine/Hardwarewęźle, wówczas maszyna wirtualna użyłaby wartości „Machine UUID” jako wartości „Hardware UUID”. Tak więc dla mojej szablonu maszyny Wirtualnej miał „Sprzętowy UUID”, którego mogłem użyć; Musiałem tylko znaleźć sposób na przeniesienie go na dowolne klony, które stworzę.

Aby zapewnić transfer UUID, możesz zastosować jedną z dwóch metod:

  • Możesz edytować szablon pliku definicji maszyny wirtualnej bezpośrednio. „Sprzętowy identyfikator UUID” zostanie przeniesiony do klonów tylko wtedy, gdy /VirtualBox/Machine/Hardwarema uuidatrybut. Skopiuj więc /VirtualBox/Machine uuidatrybut i dodaj go do /VirtualBox/Machine/Hardware uuidatrybutu. Prawdopodobnie po tym zechcesz ponownie zainicjować bazę danych maszyn VirtualBox, zamykając / zabijając każdy uruchomiony proces VirtualBox. (VBoxSVC czasami utrzymuje się w systemie Windows; może być konieczne zabicie go z Menedżera zadań).
  • Możesz sklonować szablon i utworzyć nową maszynę wirtualną do szablonu, a następnie użyć go, VBoxManage modifyvm <uuid|name> --hardwareuuid <uuid>aby ustawić „UUID sprzętu” nowego szablonu na „UUID urządzenia” / „UUID urządzenia” oryginalnego szablonu. Mówię, że musisz sklonować maszynę wirtualną, aby utworzyć nową maszynę wirtualną z szablonem, ponieważ jeśli spróbujesz ustawić „Hardware UUID” za pomocą tego polecenia w oryginalnym szablonie, nie doda on uuidatrybutu do /VirtualBox/Machine/Hardwarewęzła, ponieważ nadal może to sugerować z „Machine UUID”, a zatem nie skopiuje tej wartości do żadnego klonowania, który stworzy.
palswim
źródło
Nie jest jasne, o której maszynie wirtualnej mówisz w pierwszym punkcie; także lepiej jest użyćVBoxManage modifyvm --hardwareuuid <uuid>
CharlesB
2
modifyvmKomenda nie ustawi /VirtualBox/Machine/Hardwarewęzła uuidatrybut jeśli przejdą UUID z taką samą wartość jak VM /VirtalBox/Machinewęzła uuidatrybutu. Musisz bezpośrednio edytować plik VBOX.
palswim
3

Ten skrypt PowerShell działa:

  1. sklonuj maszynę, która jest już aktywowana.
  2. zamknij ustawienia Virtualbox z menedżera zadań.
  3. uruchom ten skrypt, modyfikując zmienne do swoich wartości.

Pamiętaj, że w nazwach maszyn wirtualnych rozróżniana jest wielkość liter.

$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
Marcelo Saied
źródło
2

Dzięki powyższym wskazówkom udało mi się sklonować maszynę z gościem Win7 uruchomionym na hoście Kubuntu w celach testowych bez ponownej aktywacji.

Moja maszyna została już aktywowana i (jak opisano powyżej) faktycznie nie miała sprzętowego identyfikatora UUID.

Dla mnie wygląda na to, że UUID MASZYNY służy tylko do zarządzania Virtualbox, podczas gdy UUID SPRZĘTU jest używany przez logikę aktywacji systemu Windows. Jeśli nie ma sprzętowego identyfikatora UUID, Virtualbox podaje identyfikator UUID komputera gościowi, tj. Microsoft zna identyfikator UUID komputera.

Oto jak to działa dobrze bez ponownej aktywacji w moim przypadku: 1) Skopiuj maszynę wirtualną (folder) za pomocą zwykłej przeglądarki plików. 2) Otwórz plik .vbox w prostym edytorze tekstu. 3) Ponieważ nie ma atrybutu UUID dla „sprzętu”, skopiuj atrybut UUID komputera (np. Uuid = „{xxx11111-2222-3333-4444-xxxxxxxxxxxx}”) do pozycji „sprzęt”. 4) Wygeneruj nowy UUID dla maszyny, np. Za pomocą uuidgenerator.net. 5) Zastąp WARTOŚĆ maszyny UUID wygenerowaną wartością UUID. => Gotowe.

Aby zarządzać obiema maszynami równolegle w VB Manager, jest to trudniejsze:
1. Zmień nazwę pliku .vdi dysku twardego klonów.
2. W wierszu polecenia podaj nowy UUID na dysk twardy za pomocą polecenia „VBoxManage internalcommands sethduuid .vdi. VBManager ustawi nowy UUID i wyświetli go.
3. W VB Manager dodaj nowy komputer. Edytuj komputer, dodając nowy plik dysku twardego (i usuń oryginalne vdi, jeśli nadal jest obecne).

Teraz masz unikalne identyfikatory dla wszystkich maszyn wirtualnych i dysków twardych. Możesz zarządzać obiema maszynami równolegle w VB Manager.

Dieter Schlueter
źródło
1

Całkowicie sklonuj maszynę. Nie zaczynaj tego.

Z linii poleceń:

VBoxManage modyfikujevm „Sklonowana nazwa maszyny wirtualnej” - hardwareuuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Jako UUID użyj identyfikatora komputera (lub identyfikatora sprzętu, jeśli jest obecny) z oryginalnego komputera.

Aby uzyskać użycie tego UUID:

VBoxManage showvminfo „Oryginalna nazwa maszyny wirtualnej”

To powinno działać. Testowane na gościu Windows 10, już aktywowane.

użytkownik4691
źródło
Działa to w większości przypadków, z wyjątkiem przypadków, gdy UUID pasuje do atrybutu /VirtalBox/Machinewęzła maszyny wirtualnej uuid, jak wskazują pytanie i inny komentarz .
palswim
0

Powyższa odpowiedź działa! Przetestowałem to na szablonie Windows 10.

„Pełne klonowanie komputera. Nie uruchamiaj go. Z wiersza polecenia: VBoxManage modyfikvm„ Sklonowana nazwa maszyny wirtualnej ”--hardwareuuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Jako identyfikator UUID użyj identyfikatora komputera (lub identyfikatora sprzętu, jeśli jest dostępny) z oryginalna maszyna Aby uzyskać ten identyfikator UUID: VBoxManage showvminfo „Oryginalna nazwa maszyny wirtualnej”

To powinno działać. Testowane na gościu Windows 10, już aktywowane.

Mag
źródło