Зробіть клон VirtualBox Machine, який не викликає повторну активацію Windows після встановлення Windows


14

Більшість посібників із встановлення Windows на VirtualBox, щоб діяти як шаблон для швидких завдань Windows, пропонують зробити кілька кроків, щоб підготувати віртуальну машину до встановлення Windows (найкращий посібник, який я знайшов: grahamrhay.wordpress.com ; ще один досить хороший посібник: www .windowstablettv.com ). На жаль, я не читав цих посібників перед встановленням та активацією Windows у віртуальній машині, яку хотів використати як шаблон.

Хочу знати, як клонувати мою вже активну віртуальну машину таким чином, щоб не вимагати повторної активації з Windows.

Дивлячись у файлі визначення VM шаблону (файл VBOX або XML для VM), /VirtualBox/Machine/Hardwareвузол (XPath ID) не має uuidатрибутів. Але якщо я спробую використовувати VBoxManage modifyvm <uuid|name> --hardwareuuid <uuid>для встановлення нового UUID для шаблону VM, то VM шаблону втрачає статус активації! (На щастя, я створив резервну копію шаблону.) Отже, для досягнення своєї мети я не можу просто дотримуватися тих посібників, які роблять вигляд, що я ще не встановив Windows.

Відповіді:


11

На щастя, я помітив щось про всі мої віртуальні машини, які я не готував так, як вони описали.

Я побіг VBoxManage showvminfo <uuid|name>і помітив, що UUIDцінність відповідає Hardware UUIDзначенню, що спонукає мене до того, що якщо якесь визначення VM не має uuidатрибута у /VirtualBox/Machine/Hardwareвузлі, то VM використовуватиме значення "Machine UUID" як значення "Hardware UUID". Отже, для мого VM шаблону він мав "апаратний UUID", який я міг би використовувати; Мені просто потрібно було знайти, як перенести це до будь-яких клонів, які я б зробив.

Щоб переконатися в передачі UUID, ви можете скористатися одним із двох підходів:

  • Ви можете безпосередньо редагувати файл визначення VM шаблону. "Апаратний UUID" буде передано клонам лише у тому випадку, якщо атрибут /VirtualBox/Machine/Hardwareмає uuid. Отже, скопіюйте /VirtualBox/Machine uuidатрибут та додайте його до /VirtualBox/Machine/Hardware uuidатрибуту. Ви, ймовірно, хочете повторно ініціалізувати машинну базу даних VirtualBox після цього, закривши / вбивши будь-який запущений процес VirtualBox. (VBoxSVC іноді затримується в Windows; можливо, доведеться вбити його в диспетчері завдань.)
  • Ви можете клонувати свій шаблон і створити новий VM-шаблон, а потім скористатися, VBoxManage modifyvm <uuid|name> --hardwareuuid <uuid>щоб встановити "Обладнання UUID" нового шаблону на оригінальний шаблон "Machine UUID" / "Hardware UUID". Я кажу, що вам потрібно клонувати VM, щоб створити новий шаблон VM, оскільки якщо ви спробуєте встановити "Hardware UUID" з цією командою на оригінальний шаблон, він не додасть uuidатрибут у /VirtualBox/Machine/Hardwareвузол, оскільки він все ще може це мати на увазі з "Machine UUID", і таким чином не буде копіювати це значення в жоден клон, який він робить.

Не зрозуміло, про який VM ви говорите в першій точці; також краще використовуватиVBoxManage modifyvm --hardwareuuid <uuid>
CharlesB

2
modifyvmКоманда не буде встановити /VirtualBox/Machine/Hardwareвузол uuidатрибута , якщо передати UUID з тим самим значенням , як ВМ /VirtalBox/Machineвузла uuidатрибуту. Ви повинні редагувати файл VBOX безпосередньо.
palswim

3

Цей скрипт повноважень працює так:

  1. клонуйте машину, яка вже активована.
  2. закрити віртуальну скриньку від менеджера завдань.
  3. запустіть цей скрипт, модифікуючи змінні вашим значенням.

Пам'ятайте, що назви віртуальних машин залежать від регістру.

$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

Завдяки наведеним вище підказкам я успішно клонував машину з гостем Win7, який працює на хості Kubuntu для тестових цілей без повторної активації.

Моя машина вже була активована і (як описано вище) фактично не мала апаратного UUID.

Для мене це виглядає так, що MACHINE UUID призначений лише для управління Virtualbox, тоді як HUARDWARE UUID використовується логікою активації Windows. Якщо апаратного UUID немає, то Virtualbox надає гостям машину UUID, тобто Microsoft знає машину UUID.

Ось так це спрацювало добре без повторної активації в моєму випадку: 1) Скопіюйте віртуальну машину (папку) у звичайний файловий браузер. 2) Відкрийте .vbox файл у простому текстовому редакторі. 3) Оскільки для "обладнання" не було атрибуту UUID, скопіюйте атрибут UUID машини (наприклад, uuid = "{xxx11111-2222-3333-4444-xxxxxxxxxxxx}") у запис "апаратне забезпечення". 4) Створіть новий UUID для машини, наприклад, з uuidgenerator.net. 5) Перезапишіть VALUE машини UUID на створене значення UUID. => Готово.

Для того, щоб керувати обома машинами паралельно в VB Manager, складніше:
1. Перейменуйте файл жорсткого диска .vdi клонів.
2. У командному рядку надайте новий UUID на жорсткий диск за допомогою команди "VBoxManage Internalcommands sethduuid .vdi. VBManager встановить новий UUID і відобразить його.
3. В VB Manager додайте нову машину. Відредагуйте машину, додавши новий файл жорсткого диска. (і видаліть оригінальний vdi, якщо він все ще є).

Тепер у вас є унікальні ідентифікатори для всіх віртуальних машин і жорстких дисків. Ви можете керувати обома машинами в VB Manager паралельно.


1

Повний клон машини. Не запускайте цього.

З командного рядка:

VBoxManage modifyvm "Ім'я VM клонованого" --hardwareuuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

В якості UUID використовуйте ідентифікатор машини (або ідентифікатор обладнання, якщо він присутній) з оригінальної машини.

Для отримання цього UUID:

VBoxManage showvminfo "Оригінальне ім'я VM"

Це має спрацювати. Тестовано на Windows 10 гостя, вже активоване.


Це працює в більшості випадків, за винятком випадків, коли UUID відповідає атрибуту /VirtalBox/Machineвузла VM uuid, як вказують питання та інший коментар .
palswim

0

Наведена відповідь працює! Я протестував це на шаблоні Windows 10.

"Повний клон машини. Не запускайте його. З командного рядка: VBoxManage modifyvm" Назва клонованого VM "--hardwareuuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Як UUID використовуйте ідентифікатор машини (або ідентифікатор обладнання, якщо він присутній) з для отримання цього UUID використовуйте: VBoxManage showvminfo "Оригінальне ім'я VM"

Це має спрацювати. Тестовано на Windows 10 гостя, вже активоване.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.