Crie um clone do VirtualBox Machine que não cause a reativação do Windows após a instalação do Windows


14

A maioria dos guias para a instalação do Windows no VirtualBox funciona como um modelo para trabalhos rápidos do Windows e você deve executar algumas etapas para preparar a Máquina Virtual antes de instalar o Windows (o melhor guia que encontrei: grahamrhay.wordpress.com ; outro guia bastante bom: www .windowstablettv.com ). Infelizmente, não li esses guias antes de instalar e ativar o Windows na VM que queria usar como modelo.

Quero saber como clonar minha VM já ativa de forma que não exija a reativação do Windows.

Procurando no arquivo de definição de VM do modelo (o arquivo VBOX ou XML da VM), o /VirtualBox/Machine/Hardwarenó (ID do XPath) não possui uuidatributo. Mas, se eu tentar usar VBoxManage modifyvm <uuid|name> --hardwareuuid <uuid>para definir um novo UUID para a VM de modelo, a VM de modelo perderá seu status de ativação! (Felizmente, eu fiz um backup do modelo.) Portanto, para alcançar meu objetivo, não posso simplesmente seguir os guias que fingem que ainda não instalei o Windows.

Respostas:


11

Felizmente, notei algo sobre todas as minhas máquinas virtuais que eu não havia preparado como os guias haviam descrito.

Eu executei VBoxManage showvminfo <uuid|name>e notei que o UUIDvalor correspondia ao Hardware UUIDvalor, levando-me a supor que, se alguma Definição de VM não tivesse um uuidatributo no /VirtualBox/Machine/Hardwarenó, a VM usaria o valor "Machine UUID" como o valor "Hardware UUID". Então, para a minha VM modelo, ela tinha um "UUID de hardware" que eu poderia usar; Eu só tinha que descobrir como transferi-lo para qualquer clone que eu faria.

Para garantir que o UUID seja transferido, você pode seguir uma das duas abordagens:

  • Você pode editar o arquivo de definição de VM do modelo diretamente. O "UUID de hardware" só será transferido para clones se ele /VirtualBox/Machine/Hardwaretiver o uuidatributo Então, copie o /VirtualBox/Machine uuidatributo e adicione-o ao /VirtualBox/Machine/Hardware uuidatributo. Você provavelmente deseja reinicializar o banco de dados da máquina VirtualBox depois disso, fechando / eliminando qualquer processo do VirtualBox em execução. (O VBoxSVC às vezes permanece no Windows; talvez seja necessário eliminá-lo no Gerenciador de tarefas.)
  • Você pode clonar seu modelo e criar uma nova VM de modelo e, em seguida, usar VBoxManage modifyvm <uuid|name> --hardwareuuid <uuid>para definir o "UUID de hardware" do novo modelo como "UUID de máquina" / "UUID de hardware" do modelo original. Eu digo que você precisa clonar a VM para criar uma nova VM de modelo, porque se você tentar definir o "UUID de hardware" com este comando no modelo original, ele não adicionará o uuidatributo ao /VirtualBox/Machine/Hardwarenó, pois ainda pode implicá-lo do "Machine UUID" e, portanto, não copiará esse valor para nenhum clone que ele criar.

Não está claro de qual VM você está falando no primeiro ponto; também é melhor usarVBoxManage modifyvm --hardwareuuid <uuid>
CharlesB 15/04

2
O modifyvmcomando não definirá o atributo do /VirtualBox/Machine/Hardwareuuidse você passar um UUID com o mesmo valor que o atributo do /VirtalBox/Machinenó da VM uuid. Você deve editar o arquivo VBOX diretamente.
palswim

3

Este script do PowerShell faz o trabalho:

  1. clone a máquina que já está ativada.
  2. feche precesses de caixa virtual do gerenciador de tarefas.
  3. execute esse script, modificando as variáveis ​​para seus valores.

Lembre-se de que os nomes das máquinas virtuais diferenciam maiúsculas de minúsculas.

$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

Graças às dicas acima, clonei com êxito uma máquina com o convidado Win7 em execução em um host Kubuntu para fins de teste sem reativação.

Minha máquina já estava ativada e (como descrito acima) na verdade não tinha UUID de hardware.

Para mim, parece que o MACHINE UUID é apenas para gerenciamento do Virtualbox, enquanto o HARDWARE UUID é usado pela lógica de ativação do Windows. Se não houver UUID de hardware, o Virtualbox fornecerá o UUID da máquina ao convidado, ou seja, a Microsoft conhece o UUID da máquina.

Portanto, foi assim que funcionou bem, sem reativação no meu caso: 1) Copie a máquina virtual (pasta) com o navegador de arquivos normal. 2) Abra o arquivo .vbox em um editor de texto simples. 3) Como não havia atributo UUID para o "hardware", copie o atributo UUID da máquina (por exemplo, uuid = "{xxx11111-2222-3333-4444-xxxxxxxxxxxx}") para a entrada "hardware". 4) Gere um novo UUID para a máquina, por exemplo, com uuidgenerator.net. 5) Sobrescreva VALUE da máquina UUID pelo valor UUID gerado. => Concluído.

Para gerenciar as duas máquinas em paralelo no VB Manager, é mais complicado:
1. Renomeie o arquivo .vdi do disco rígido dos clones.
2. Na linha de comando, forneça um novo UUID ao disco rígido via comando "VBoxManage internalcomands sethduuid .vdi. O VBManager definirá um novo UUID e o exibirá.
3. No VB Manager, adicione a nova máquina. Edite a máquina adicionando o novo arquivo de disco rígido. (e remova o vdi original, se ainda estiver presente).

Agora você tem IDs exclusivos para todas as máquinas virtuais e discos rígidos. Você pode gerenciar as duas máquinas no VB Manager em paralelo.


1

Clonar completamente a máquina. Não inicie.

Na linha de comando:

VBoxManage modifyvm "Nome da VM clonada" - hardwareuuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Como UUID, use a identificação da máquina (ou a identificação do hardware, se houver) da máquina original.

Para obter esse UUID, use:

VBoxManage showvminfo "Nome original da VM"

Isso deve funcionar. Testado no Windows 10 convidado, já ativado.


Isso funciona na maioria dos casos, exceto onde o UUID corresponde ao atributo /VirtalBox/Machinedo nó da VM uuid, como indicam a pergunta e outro comentário .
palswim

0

A resposta acima funciona! Eu testei em um modelo do Windows 10.

"Clone completamente a máquina. Não inicie. Na linha de comando: VBoxManage modifyvm" Nome da VM clonada "--hardwareuuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Como UUID, use o ID da máquina (ou o ID do hardware, se presente) no diretório Para obter esse UUID, use: VBoxManage showvminfo "Original VM name"

Isso deve funcionar. Testado no Windows 10 convidado, já ativado.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.