VirtualBox VMのSMBIOS UUIDを変更する方法
はじめに
PCにはSMBIOSという製造元情報やシリアル番号が記録された領域があります。
PCの起動時にF12なんか押すと見れるこういうBIOS画面に表示される情報です。
普通に使っていれば縁のないBIOSですが、ソフトウェアの検証でBIOSのUUIDを任意の値に設定したくなりました。
実機ではBIOSの値を書き換えることが難しいため、VirtualBox VMでその値を変更することにしました。
はじめはこちらのVBoxManageでのBIOS設定方法紹介ページを見れば楽勝と思っていたのですが、意外と大変だったのでその方法を紹介します。
VBoxManage
VirtualBox VMの設定を色々弄れるユーティリティーです。
色々できます。でき過ぎてオプション覚えられません。
これを使って設定を行います。触りはこのページを見てください。
とりあえずSMBIOSの値を変更する
setextradataオプションを使えばOKです。
例)シリアル番号を変更する
VBoxManage setextradata VM-name "VBoxInternal/Devices/pcbios/0/Config/DmiSystemSerial" "new Serial"
例)ベンター名を変更する
VBoxManage setextradata VM-name "VBoxInternal/Devices/pcbios/0/Config/DmiSystemVendor" "new Vendor"
VM-nameには変更したいVMの名前が入ります。実際の値が何になるかは下記のlistオプションで確認してください。
VBoxManage list vms
UUIDの変更は?
この流れからすると、UUIDは下記のコマンドで行けそうですが、そうはいきません。
VBoxManage setextradata VM-name "VBoxInternal/Devices/pcbios/0/Config/DmiSystemUuid" "9852bf98-b83c-49db-a8de-182c42c7226b"
正常にコマンドは終了し、変更されたように見えるのですが、VMを起動すると元のUUIDに戻ってしまいます。
ちなみに起動されたVMでUUIDを確認する方法はコマンドプロンプトで下記のコマンドを実行するだけです。
※Windowsの場合
> wmic CSPRODUCT get /value
Caption=コンピューター システム製品
Description=コンピューター システム製品
IdentifyingNumber=0
Name=VirtualBox
SKUNumber=
UUID=06EB385A-9ACE-4C92-8016-E92D94359B77
Vendor=innotek GmbH
Version=1.2
元に戻ってしまう理由ですが、SMBIOSのUUIDはVM自体のUUIDも兼ねており、SMBIOS上の値を書き換えたとしても
別のところにストアされている値でリカバリされてしまうようです。
VirtualBox上でUUIDがストアされている場所
- VMのvboxファイル
- VMのvdiファイル
それぞれ、下記の手順で変更を行います。
vboxファイル
- 一度VMを終了する
- Oracle VM VirtualBox マネージャーの一覧から該当のVMを削除する ※参照だけ削除すること
- vboxファイルを開き、Machineタグのuuid属性を書き換える
- 再度、Oracle VM VirtualBox マネージャーより該当のVMを追加する
vdiファイル
- 一度VMを終了する
- コンソールより下記のコマンドを実行する
VBoxManage internalcommands sethdparentuuid "vdiファイルパス" "new uuid"
尚、UUIDはWindowsであれば下記のコマンドで生成することができます。
PS C:> powershell -Command "[guid]::NewGuid().ToString()"
あとは普通に起動をすれば、変更後のUUIDが反映されているはずです。
Author And Source
この問題について(VirtualBox VMのSMBIOS UUIDを変更する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/noby111/items/cd9a9a4f1ca1f98c9bf7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .