12

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

Я хочу знать, как клонировать мою уже активную виртуальную машину таким образом, чтобы не требовалось повторной активации из Windows.

В файле шаблона определения виртуальной машины (файл VBOX или XML для виртуальной машины ) узел /VirtualBox/Machine/Hardware (XPath ID) не имеет атрибута uuid . Но если я попытаюсь использовать VBoxManage modifyvm <uuid|name> --hardwareuuid <uuid> для установки нового UUID для ВМ шаблона, то ВМ шаблона потеряет свой статус активации! (К счастью, я сделал резервную копию шаблона.) Поэтому, чтобы достичь своей цели, я не могу просто следовать этим инструкциям, притворяясь, что я еще не установил Windows.

4 ответа4

9

К счастью, я заметил кое-что во всех моих Виртуальных машинах, которые я не подготовил, как было указано в этих руководствах.

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

Чтобы обеспечить передачу UUID, вы можете выбрать один из двух подходов:

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

Этот скрипт powershell делает работу:

  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, тогда как HARDWARE UUID используется логикой активации Windows. Если аппаратный UUID отсутствует, Virtualbox предоставляет UUID компьютера гостю, то есть Microsoft знает UUID компьютера.

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

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

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

1

Полный клон машины. Не начинай это.

Из командной строки:

VBoxManage modifyvm "Имя клонированной виртуальной машины" --hardwareuuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

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

Чтобы получить UUID, используйте:

VBoxManage showvminfo "Оригинальное имя ВМ"

Это должно работать. Протестировано на гостевой Windows 10, уже активировано.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .