Tạo một bản sao của VirtualBox Machine không kích hoạt lại Windows sau khi cài đặt Windows


14

Hầu hết các hướng dẫn cài đặt Windows trên VirtualBox để hoạt động như một khuôn mẫu cho các công việc Windows nhanh chóng bảo bạn thực hiện một vài bước để chuẩn bị Máy ảo trước khi cài đặt Windows (hướng dẫn tốt nhất tôi tìm thấy: grahamrhay.wordpress.com ; một hướng dẫn khá tốt khác: www .windowstablettv.com ). Thật không may, tôi đã không đọc các hướng dẫn này trước khi cài đặt và kích hoạt Windows trên VM mà tôi muốn sử dụng làm mẫu.

Tôi muốn biết cách sao chép VM đã hoạt động của mình theo cách không yêu cầu kích hoạt lại từ Windows.

Tìm kiếm trong tệp Định nghĩa VM mẫu (tệp VBOX hoặc XML cho VM), nút /VirtualBox/Machine/Hardware(XPath ID) không có uuidthuộc tính. Nhưng, nếu tôi cố gắng sử dụng VBoxManage modifyvm <uuid|name> --hardwareuuid <uuid>để đặt UUID mới cho VM mẫu, thì VM mẫu sẽ mất trạng thái kích hoạt! (Rất may, tôi đã tạo một bản sao lưu của mẫu.) Vì vậy, để thực hiện mục tiêu của mình, tôi không thể làm theo các hướng dẫn giả vờ rằng tôi chưa cài đặt Windows.

Câu trả lời:


11

Rất may, tôi nhận thấy điều gì đó về tất cả các Máy ảo của tôi mà tôi đã không chuẩn bị vì những hướng dẫn đó đã được phác thảo.

Tôi đã chạy VBoxManage showvminfo <uuid|name>và nhận thấy rằng UUIDgiá trị khớp với Hardware UUIDgiá trị, dẫn đến tôi phỏng đoán rằng nếu bất kỳ Định nghĩa VM nào không có uuidthuộc tính trong /VirtualBox/Machine/Hardwarenút thì VM sẽ sử dụng giá trị "Machine UUID" làm giá trị "UUID phần cứng". Vì vậy, đối với VM mẫu của tôi, nó đã có "UUID phần cứng" mà tôi có thể sử dụng; Tôi chỉ phải tìm cách chuyển nó sang bất kỳ bản sao nào tôi sẽ làm.

Để đảm bảo chuyển khoản UUID, bạn có thể thực hiện một trong hai cách tiếp cận:

  • Bạn có thể chỉnh sửa tệp Định nghĩa VM mẫu trực tiếp. "UUID phần cứng" sẽ chỉ chuyển sang bản sao nếu /VirtualBox/Machine/Hardwareuuidthuộc tính. Vì vậy, sao chép /VirtualBox/Machine uuidthuộc tính và thêm nó vào /VirtualBox/Machine/Hardware uuidthuộc tính. Bạn có thể muốn khởi tạo lại cơ sở dữ liệu máy VirtualBox sau đó, bằng cách đóng / tắt bất kỳ quy trình VirtualBox nào bạn đang chạy. (VBoxSVC đôi khi tồn tại trên Windows; bạn có thể phải tắt nó từ Trình quản lý tác vụ.)
  • Bạn có thể sao chép mẫu của mình và tạo một VM mẫu mới, sau đó sử dụng VBoxManage modifyvm <uuid|name> --hardwareuuid <uuid>để đặt "UUID phần cứng" của mẫu mới thành "UUID máy" / "UUID phần cứng" của mẫu ban đầu. Tôi nói rằng bạn phải sao chép VM để tạo một VM mẫu mới bởi vì nếu bạn cố gắng đặt "UUID phần cứng" bằng lệnh này trên mẫu ban đầu, nó sẽ không thêm uuidthuộc tính vào /VirtualBox/Machine/Hardwarenút, vì nó vẫn có thể ám chỉ nó từ "Máy UUID", và do đó sẽ không sao chép giá trị này vào bất kỳ bản sao nào mà nó tạo ra.

Không rõ bạn đang nói về VM nào trong điểm đầu tiên; cũng tốt hơn để sử dụngVBoxManage modifyvm --hardwareuuid <uuid>
CharlesB

2
Các modifyvmlệnh sẽ không thiết lập các /VirtualBox/Machine/Hardwarenút uuidthuộc tính nếu bạn vượt qua một UUID với giá trị tương tự như của VM /VirtalBox/Machinenút uuidthuộc tính. Bạn phải chỉnh sửa tệp VBOX trực tiếp.
palswim

3

Kịch bản powershell này thực hiện công việc:

  1. nhân bản máy đã được kích hoạt.
  2. đóng các điều kiện tiên quyết của hộp ảo từ trình quản lý tác vụ.
  3. chạy tập lệnh này, sửa đổi các biến thành giá trị của bạn.

Hãy nhớ rằng tên máy ảo là trường hợp nhạy cảm.

$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

Nhờ các gợi ý ở trên, tôi đã nhân bản thành công một máy có khách Win7 đang chạy trên máy chủ Kubfox cho mục đích thử nghiệm mà không cần kích hoạt lại.

Máy của tôi đã được kích hoạt và (như được mô tả ở trên) thực sự không có UUID phần cứng.

Đối với tôi, có vẻ như UUID MÁY chỉ dành cho quản lý Virtualbox, trong khi UUID PHẦN MỀM được sử dụng bởi logic kích hoạt Windows. Nếu không có UUID phần cứng thì Virtualbox cung cấp UUID cho máy cho khách, tức là Microsoft biết UUID của máy.

Vì vậy, đây là cách nó hoạt động tốt mà không cần kích hoạt lại trong trường hợp của tôi: 1) Sao chép máy ảo (thư mục) bằng trình duyệt tệp bình thường. 2) Mở tệp .vbox trong trình soạn thảo văn bản đơn giản. 3) Vì không có thuộc tính UUID cho "phần cứng", hãy sao chép thuộc tính UUID của máy (ví dụ: uuid = "{xxx11111-2222-3333-4444-xxxxxxxxxxxx}") vào mục "phần cứng". 4) Tạo UUID mới cho máy, ví dụ như với uuidgenerator.net. 5) Ghi đè giá trị máy UUID GIÁ TRỊ bằng giá trị UUID được tạo. => Xong.

Để quản lý song song cả hai máy trong Trình quản lý VB, điều khó khăn hơn:
1. Đổi tên tệp .vdi của bản sao.
2. Trong dòng lệnh cung cấp UUID mới cho ổ cứng thông qua lệnh "VBoxManage Internalcommands sethduuid .vdi. VBManager sẽ đặt UUID mới và hiển thị nó.
3. Trong VB Manager thêm máy mới. Chỉnh sửa máy bằng cách thêm tệp ổ cứng mới. (và loại bỏ vdi gốc, nếu vẫn còn).

Bây giờ bạn có ID duy nhất cho tất cả các máy ảo và ổ cứng. Bạn có thể quản lý song song cả hai máy trong Trình quản lý VB.


1

Bản sao đầy đủ máy. Đừng bắt đầu nó.

Từ dòng lệnh:

VBoxManage Sửa đổi "Tên VM nhân bản" --hardwareuuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Vì UUID sử dụng id máy (hoặc id phần cứng nếu có) từ máy ban đầu.

Để có được UUID đó, hãy sử dụng:

VBoxManage showvminfo "Tên VM gốc"

Điều này nên làm việc. Đã thử nghiệm trên Windows 10 khách, đã được kích hoạt.


Điều này hoạt động trong hầu hết các trường hợp ngoại trừ trường hợp UUID khớp với thuộc tính /VirtalBox/Machinecủa nút VM uuid, như câu hỏinhận xét khác chỉ ra.
palswim

0

Câu trả lời trên hoạt động! Tôi đã thử nghiệm nó trên một mẫu Windows 10.

"Sao chép toàn bộ máy. Đừng khởi động nó. Từ dòng lệnh: VBoxManage redirectvm" Tên VM được sao chép "--hardwareuuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Vì UUID sử dụng id máy (hoặc id phần cứng nếu có) Máy gốc. Để có được UUID đó, hãy sử dụng: VBoxManage showvminfo "Tên VM gốc"

Điều này nên làm việc. Đã thử nghiệm trên Windows 10 khách, đã được kích hoạt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.