web-dev-qa-db-ja.com

Windowsのインストール後にWindowsの再アクティベーションを引き起こさないVirtualBoxマシンのクローンを作成します

WindowsをVirtualBoxにインストールしてクイックWindowsジョブのテンプレートとして機能させるためのほとんどのガイドでは、Windowsをインストールする前に仮想マシンを準備するためにいくつかの手順を実行するように指示しています(== --- ==)Windows(私が見つけた最高のガイド: grahamrhay.wordpress.com ;別のかなり良いガイド: www.windowstablettv.com )。残念ながら、VMテンプレートとして使用したいので、Windowsをインストールしてアクティブ化する前に、これらのガイドを読みませんでした。

既にアクティブなVM= Windowsからの再アクティブ化を必要としないような方法で、クローンを作成する方法を知りたいです。

テンプレートVM定義ファイル(VMのVBOXまたはXMLファイル))を見ると、/VirtualBox/Machine/Hardware(XPath ID)ノードにはuuid属性がありませんが、 VBoxManage modifyvm <uuid|name> --hardwareuuid <uuid>を使用してテンプレートVMの新しいUUIDを設定しようとすると、テンプレートVMはアクティベーションステータスを失います!(ありがたいことに、テンプレートのバックアップを作成しました。 )それで、私の目標を達成するために、私はまだWindowsをインストールしていないふりをしてこれらのガイドに従うことはできません。

14
palswim

ありがたいことに、ガイドが概説したように準備していない仮想マシンのすべてに気づきました。

私はVBoxManage showvminfo <uuid|name>を実行し、UUIDの値がHardware UUIDの値と一致していることに気づき、VMの定義には/VirtualBox/Machine/Hardwareノードのuuid属性の場合、VMは「ハードウェアUUID」値として「マシンUUID」値を使用します。したがって、私のテンプレートVM 、使用可能な「ハードウェアUUID」がありました。作成するクローンに転送する方法を見つける必要がありました。

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

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

次のpowershellスクリプトが機能します。

  1. すでにアクティブ化されているマシンのクローンを作成します。
  2. タスクマネージャから仮想ボックスを処理します。
  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
3
Marcelo Saied

上記のヒントのおかげで、再起動せずにテスト目的で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)マシンの新しいUUIDを生成します。 uuidgenerator.net。 5)UUIDマシンのVALUEを、生成されたUUID値で上書きします。 =>完了。

VB Managerで両方のマシンを並行して管理するためには、よりトリッキーです:
1。クローンのハードディスクの.vdiファイルの名前を変更します。
2。コマンドラインで、コマンド「VBoxManage internalcommands sethduuid .vdi」を介してハードディスクに新しいUUIDを提供します。VBManagerは新しいUUIDを設定して表示します。
3。 VB Managerで新しいマシンを追加します。新しいハードディスクファイルを追加してマシンを編集します(まだ存在する場合は元のvdiを削除します)。

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

2

マシンを完全に複製します。起動しないでください。

コマンドラインから:

VBoxManage modifyvm "クローンVM名前" --hardwareuuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

UUIDとして、元のマシンのマシンID(または存在する場合はハードウェアID)を使用します。

そのUUIDを取得するには、以下を使用します。

VBoxManage showvminfo "元のVM名前"

これはうまくいくはずです。 Windows 10ゲストでテスト済み、アクティブ化済み.

1
user4691

上記の答えはうまくいきます! Windows 10テンプレートでテストしました。

"マシンを完全に複製します。起動しないでください。コマンドラインから:VBoxManage modifyvm" Cloned VM name "--hardwareuuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx As UUID as the machine id (または存在する場合はハードウェアID)元のマシンから。そのUUIDを取得するには、VBoxManage showvminfo "Original VM name"を使用します。

これはうまくいくはずです。 Windows 10ゲストでテスト済み、アクティブ化済み.

0
Mags