Windows를 설치 한 후 Windows 재 활성화를 유발하지 않는 VirtualBox Machine의 복제본 만들기


14

빠른 Windows 작업을위한 템플릿 역할을하기 위해 VirtualBox에 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를 설치하지 않은 척하는 가이드를 따를 수 없습니다.

답변:


11

고맙게도이 가이드가 요약 한대로 준비하지 않은 모든 가상 머신에 대한 정보를 발견했습니다.

나는 값 VBoxManage showvminfo <uuid|name>UUID값과 일치하여 Hardware UUIDVM 정의 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>새 템플릿의 "Hardware 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는 VM의와 같은 값으로 UUID를 전달하면 속성 /VirtalBox/Machine노드 uuid속성. VBOX 파일을 직접 편집해야합니다.
palswim

3

이 powershell 스크립트는 다음 작업을 수행합니다.

  1. 이미 활성화 된 머신을 복제합니다.
  2. 작업 관리자에서 virtualbox 선행 작업을 닫습니다.
  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}")을 "hardware"항목에 복사하십시오. 4) 예를 들어 uuidgenerator.net을 사용하여 시스템에 대한 새 UUID를 생성하십시오. 5) 생성 된 UUID 값으로 UUID 머신 VALUE을 (를) 덮어 씁니다. => 완료

VB Manager에서 두 시스템을 병렬로 관리하려면 더 까다 롭습니다.
1. 클론의 하드 디스크 .vdi 파일 이름을 바꿉니다.
2. 명령 줄에서 "VBoxManage 내부 명령 sethduuid .vdi 명령을 통해 새 UUID를 하드 디스크에 제공합니다. VBManager가 새 UUID를 설정하고 표시합니다.
3. VB Manager에서 새 컴퓨터를 추가합니다. 새 하드 디스크 파일을 추가하여 컴퓨터를 편집합니다. (그리고 여전히 존재하는 경우 원본 vdi를 제거하십시오).

이제 모든 가상 머신 및 하드 디스크에 대한 고유 ID가 있습니다. VB Manager 내에서 두 시스템을 동시에 관리 할 수 ​​있습니다.


1

머신을 완전히 복제합니다. 시작하지 마십시오.

명령 행에서 :

modifyBox "복제 된 VM 이름"--hardwareuuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

UUID로서 원래 머신의 머신 ID (또는 하드웨어 ID가있는 경우)를 사용하십시오.

해당 UUID를 사용하려면 다음을 수행하십시오.

VBoxManage showvminfo "원래 VM 이름"

이 작동합니다. 이미 활성화 된 Windows 10 게스트에서 테스트되었습니다.


이것은 질문다른 의견에서 알 수 있듯이 UUID가 VM의 /VirtalBox/Machine노드 uuid속성 과 일치하는 경우를 제외하고 대부분의 경우 작동합니다 .
palswim

0

위의 답변이 효과가 있습니다! Windows 10 템플릿에서 테스트했습니다.

"시스템을 전체 복제하십시오. 시작하지 마십시오. 명령 행에서 : VBoxManage modifyvm"복제 된 VM 이름 "--hardwareuuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx UUID에서 시스템 ID (있는 경우 하드웨어 ID)를 사용하십시오. 해당 UUID를 사용하려면 VBoxManage showvminfo "Original VM name"을 사용하십시오.

이 작동합니다. 이미 활성화 된 Windows 10 게스트에서 테스트되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.