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>ことに気づいたので、ノードにVM定義の属性がない場合、VM は「ハードウェアUUID」値として「マシンUUID」値を使用すると推測しました。したがって、テンプレートVMには、使用できる「ハードウェアUUID」がありました。作成するクローンに転送する方法を見つける必要がありました。UUIDHardware UUIDuuid/VirtualBox/Machine/Hardware

UUIDが確実に転送されるようにするには、次の2つの方法のいずれかを使用できます。

  • テンプレートVM定義ファイルを直接編集できます。「ハードウェアUUID」/VirtualBox/Machine/Hardwareは、uuid属性がある場合のみクローンに転送されます。そのため、/VirtualBox/Machine uuid属性をコピーして属性に追加し/VirtualBox/Machine/Hardware uuidます。この後、実行中のVirtualBoxプロセスをすべて閉じるか、強制終了して、VirtualBoxマシンデータベースを再初期化することをお勧めします。(VBoxSVCはWindowsに残ることがあります。タスクマネージャから削除する必要がある場合があります。)
  • テンプレートを複製して新しいテンプレートVMを作成し、それを使用VBoxManage modifyvm <uuid|name> --hardwareuuid <uuid>して新しいテンプレートの「ハードウェアUUID」を元のテンプレートの「マシンUUID」/「ハードウェアUUID」に設定できます。元のテンプレートでこのコマンドを使用して「ハードウェアUUID」を設定しようとすると、uuid属性が/VirtualBox/Machine/Hardwareノードに追加されないため、VMを複製して新しいテンプレートVMを作成する必要があると言います。"Machine UUID"から取得するため、この値を作成するクローンにこの値をコピーしません。

最初のポイントでどのVMについて話しているのかは明確ではありません。また、使用することをおVBoxManage modifyvm --hardwareuuid <uuid>
勧め

2
modifyvmコマンドが設定されていないだろう/VirtualBox/Machine/HardwareノードuuidあなたはVMのと同じ値を持つUUIDを渡した場合、属性を/VirtalBox/Machineノードuuid属性。VBOXファイルを直接編集する必要があります。
palswim 14

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}")を「ハードウェア」エントリにコピーします。4)uuidgenerator.netなどを使用して、マシンの新しいUUIDを生成します。5)生成されたUUID値でUUIDマシンVALUEを上書きします。=>完了。

VB Managerで両方のマシンを並行して管理するためには、さらに
注意が必要です。1.クローンのハードディスク.vdiファイルの名前を変更します。
2.コマンドラインで、コマンド「VBoxManage internalcommands sethduuid .vdi。」を使用してハードディスクに新しいUUIDを指定します。VBManagerは新しいUUIDを設定して表示します。3.
VB Managerで新しいマシンを追加します。 (元のvdiがまだ存在する場合は削除します)。

これで、すべての仮想マシンとハードディスクの一意のIDができました。VB Manager内で両方のマシンを並行して管理できます。


1

マシンを完全にクローンします。開始しないでください。

コマンドラインから:

VBoxManage modifyvm "クローン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.