Buat tiruan dari Mesin VirtualBox yang tidak menyebabkan Windows Re-Activation setelah menginstal Windows

14

Sebagian besar panduan untuk menginstal Windows di VirtualBox untuk bertindak sebagai templat untuk pekerjaan Windows cepat memberitahu Anda untuk mengambil beberapa langkah untuk mempersiapkan Mesin Virtual sebelum menginstal Windows (panduan terbaik yang saya temukan: grahamrhay.wordpress.com ; panduan lain yang cukup baik: www .windowstablettv.com ). Sayangnya, saya tidak membaca panduan ini sebelum menginstal dan mengaktifkan Windows pada VM yang ingin saya gunakan sebagai templat.

Saya ingin tahu cara mengkloning VM saya yang sudah aktif sedemikian rupa sehingga tidak memerlukan aktivasi ulang dari Windows.

Mencari di file template VM Definition (file VBOX atau XML untuk VM), /VirtualBox/Machine/Hardwarenode (XPath ID) tidak memiliki uuidatribut. Tetapi, jika saya mencoba menggunakan VBoxManage modifyvm <uuid|name> --hardwareuuid <uuid>untuk menetapkan UUID baru untuk VM template, maka VM template kehilangan status aktivasi! (Syukurlah, saya telah membuat cadangan template.) Jadi, untuk mencapai tujuan saya, saya tidak bisa hanya mengikuti panduan itu dengan berpura-pura bahwa saya belum menginstal Windows.

palswim
sumber

Jawaban:

11

Untungnya, saya melihat sesuatu tentang semua Mesin Virtual saya yang tidak saya siapkan seperti yang dijelaskan oleh panduan itu.

Saya berlari VBoxManage showvminfo <uuid|name>dan memperhatikan bahwa UUIDnilainya sesuai dengan Hardware UUIDnilainya, membuat saya menduga bahwa jika ada Definisi VM tidak memiliki uuidatribut dalam /VirtualBox/Machine/Hardwarenode, maka VM akan menggunakan nilai "Machine UUID" sebagai nilai "Hardware UUID". Jadi, untuk VM template saya, itu memang memiliki "UUID Hardware" yang bisa saya gunakan; Saya hanya harus menemukan cara mentransfernya ke klon yang akan saya buat.

Untuk memastikan bahwa UUID transfer, Anda dapat mengambil salah satu dari dua pendekatan:

  • Anda dapat mengedit file VM Definition template secara langsung. "Hardware UUID" hanya akan ditransfer ke klon jika /VirtualBox/Machine/Hardwarememiliki uuidatribut. Jadi, salin /VirtualBox/Machine uuidatribut dan tambahkan ke /VirtualBox/Machine/Hardware uuidatribut. Anda mungkin ingin menginisialisasi ulang basis data mesin VirtualBox setelah ini, dengan menutup / mematikan proses VirtualBox yang sedang Anda jalankan. (VBoxSVC terkadang melekat di Windows; Anda mungkin harus membunuhnya dari Task Manager.)
  • Anda dapat mengkloning template Anda dan membuat VM template baru, dan kemudian gunakan VBoxManage modifyvm <uuid|name> --hardwareuuid <uuid>untuk mengatur template "Hardware UUID" ke template asli "Machine UUID" / "Hardware UUID". Saya katakan Anda harus mengkloning VM untuk membuat template VM baru karena jika Anda mencoba untuk mengatur "Hardware UUID" dengan perintah ini pada template asli, itu tidak akan menambahkan uuidatribut ke /VirtualBox/Machine/Hardwarenode, karena masih dapat menyiratkannya dari "Mesin UUID", dan karenanya tidak akan menyalin nilai ini ke klon apa pun yang dibuatnya.
palswim
sumber
Tidak jelas VM mana yang Anda bicarakan di poin pertama; juga lebih baik menggunakanVBoxManage modifyvm --hardwareuuid <uuid>
CharlesB
2
The modifyvmperintah tidak akan mengatur /VirtualBox/Machine/Hardwaresimpul uuidatribut jika Anda melewatkan UUID dengan nilai yang sama seperti VM /VirtalBox/Machinesimpul uuidatribut. Anda harus mengedit file VBOX secara langsung.
palswim
3

Skrip PowerShell ini berfungsi:

  1. klon mesin yang sudah diaktifkan.
  2. tutup prescription virtualbox dari task manager.
  3. jalankan skrip ini, modifikasikan variabel ke nilai Anda.

Ingat bahwa nama mesin virtual peka huruf besar-kecil.

$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
Marcelo Saied
sumber
2

Berkat petunjuk di atas, saya berhasil mengkloning mesin dengan tamu Win7 yang berjalan di host Kubuntu untuk tujuan pengujian tanpa aktivasi ulang.

Mesin saya sudah diaktifkan dan (seperti dijelaskan di atas) sebenarnya tidak memiliki UUID perangkat keras.

Bagi saya sepertinya UUID MESIN hanya untuk manajemen Virtualbox, sedangkan HARDWARE UUID digunakan oleh logika aktivasi Windows. Jika tidak ada UUID perangkat keras maka Virtualbox menyediakan mesin UUID kepada tamu, yaitu Microsoft yang mengetahui mesin UUID.

Jadi ini cara kerjanya dengan baik tanpa aktivasi ulang dalam kasus saya: 1) Salin mesin virtual (folder) dengan browser file normal. 2) Buka file .vbox dalam editor teks sederhana. 3) Karena tidak ada atribut UUID untuk "perangkat keras", salin atribut UUID mesin (mis. Uuid = "{xxx11111-2222-3333-4444-xxxxxxxxxxxx}") ke entri "perangkat keras". 4) Hasilkan UUID baru untuk mesin, mis. Dengan uuidgenerator.net. 5) Timpa mesin UUID VALUE dengan nilai UUID yang dihasilkan. => Selesai.

Untuk mengelola kedua mesin secara paralel di VB Manager, ini lebih rumit:
1. Ganti nama file .vdi harddisk klon.
2. Pada baris perintah, berikan UUID baru ke harddisk melalui perintah "VBoxManage internalcommand sethduuid .vdi. VBManager akan menetapkan UUID baru dan menampilkannya.
3. Di VB Manager tambahkan mesin baru. Edit mesin dengan menambahkan file harddisk baru (dan hapus vdi asli, jika masih ada).

Sekarang Anda memiliki ID unik untuk semua mesin virtual dan hardisk. Anda dapat mengelola kedua mesin di dalam VB Manager secara paralel.

Dieter Schlueter
sumber
1

Klon lengkap mesin. Jangan memulainya.

Dari baris perintah:

VBoxManage modifiedvm "Nama VM kloning" --hardwareuuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx

Sebagai UUID gunakan id mesin (atau id perangkat keras jika ada) dari mesin asli.

Untuk mendapatkan UUID itu gunakan:

VBoxManage showvminfo "Nama VM Asli"

Ini seharusnya bekerja. Diuji pada Windows 10 tamu, sudah diaktifkan.

user4691
sumber
Ini berfungsi dalam banyak kasus kecuali jika UUID cocok dengan atribut /VirtalBox/Machinesimpul VM uuid, seperti yang ditunjukkan oleh pertanyaan dan komentar lainnya .
palswim
0

Jawaban di atas berfungsi! Saya mengujinya pada templat Windows 10.

"Kloning penuh mesin. Jangan memulainya. Dari baris perintah: VBoxManage modifiedvm" Nama VM hasil kloning "--hardwareuuid xxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Karena UUID menggunakan id mesin (atau id perangkat keras jika ada) dari mesin asli. Untuk mendapatkan UUID itu gunakan: VBoxManage showvminfo "Nama VM Asli"

Ini seharusnya bekerja. Diuji pada Windows 10 tamu, sudah diaktifkan.

Mags
sumber