在安装Windows后,复制不会导致Windows重新激活的VirtualBox Machine


14

在VirtualBox上安装Windows作为快速Windows作业模板的大多数指南都告诉您安装Windows 之前采取一些步骤来准备虚拟机(我找到的最佳指南:grahamrhay.wordpress.com ;另一个相当不错的指南:www .windowstablettv.com)。不幸的是,在我想用作模板的VM上安装和激活Windows之前,我没有阅读这些指南。

我想知道如何以不需要从Windows重新激活的方式克隆已经活动的VM。

查看模板VM定义文件(VM的VBOX或XML文件),/VirtualBox/Machine/Hardware(XPath ID)节点没有uuid属性。但是,如果我尝试使用VBoxManage modifyvm <uuid|name> --hardwareuuid <uuid>为模板VM设置新的UUID,则模板VM将失去其激活状态!(幸运的是,我已经对模板进行了备份。)因此,为了实现我的目标,我不能只是按照这些指南假装我还没有安装Windows。

Answers:


11

值得庆幸的是,我注意到我的所有虚拟机都没有准备好,因为这些指南已经概述了。

我跑了VBoxManage showvminfo <uuid|name>,注意到UUID值与该Hardware UUID值匹配,这使我猜测如果任何VM Definition uuid/VirtualBox/Machine/Hardware节点中没有属性,那么VM将使用“Machine UUID”值作为“硬件UUID”值。所以,对于我的模板VM,它确实有一个我可以使用的“硬件UUID”; 我只需要找到如何将它转移到我会做的任何克隆。

要确保UUID传输,您可以采用以下两种方法之一:

  • 您可以直接编辑模板VM定义文件。如果/VirtualBox/Machine/Hardware具有uuid属性,“硬件UUID”将仅传输到克隆。因此,复制/VirtualBox/Machine uuid属性并将其添加到/VirtualBox/Machine/Hardware uuid属性中。您可能希望在此之后重新初始化VirtualBox机器数据库,方法是关闭/终止正在运行的任何VirtualBox进程。(VBoxSVC有时会在Windows上徘徊;您可能必须从任务管理器中删除它。)
  • 您可以克隆模板并创建新模板VM,然后使用VBoxManage modifyvm <uuid|name> --hardwareuuid <uuid>将新模板的“硬件UUID”设置为原始模板的“计算机UUID”/“硬件UUID”。我说你必须克隆VM来创建一个新的模板VM,因为如果你尝试在原始模板上使用此命令设置“硬件UUID”,它将不会将该uuid属性添加到/VirtualBox/Machine/Hardware节点,因为它仍然可以暗示它从“机器UUID”,因此不会将此值复制到它所做的任何克隆。

目前还不清楚你在第一点谈论哪个VM; 最好使用VBoxManage modifyvm --hardwareuuid <uuid>
CharlesB 2014年

2
modifyvm命令将不设置/VirtualBox/Machine/Hardware节点uuid,如果你传递一个UUID具有相同值作为虚拟机的属性/VirtalBox/Machine节点uuid属性。您必须直接编辑VBOX文件。
palswim 2014年

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

感谢上面的提示,我已成功克隆了一台机器,其中运行在Kubuntu主机上的Win7客户机进行测试,无需重新激活。

我的机器已经激活,并且(如上所述)实际上没有硬件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值覆盖UUID机器VALUE。=>完成。

为了在VB Manager中并行管理两台机器,它更加棘手:
1。重命名克隆的硬盘.vdi文件。
2.在命令行中通过命令“VBoxManage internalcommands sethduuid .vdi”向硬盘提供一个新的UUID.VBManager将设置一个新的UUID并显示它
.3。在VB管理器中添加新机器。通过添加新的硬盘文件编辑机器(并删除原始vdi,如果仍然存在)。

现在,您拥有所有虚拟机和硬盘的唯一ID。您可以并行管理VB Manager中的两台计算机。


1

完全克隆机器。不要启动它。

从命令行:

VBoxManage modifyvm“克隆虚拟机名称”--hardwareuuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

由于UUID使用原始计算机上的计算机ID(或硬件ID,如果存在)。

要使用UUID:

VBoxManage showvminfo“原始虚拟机名称”

这应该工作。在Windows 10 guest上测试,已经激活。


这在大多数情况下都适用,除非UUID与VM的/VirtalBox/Machine节点uuid属性匹配,因为问题另一个注释表明。
palswim
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.