有没有办法从 Guest VM 本身获取 Guest VM 的 UUID?从主机,我可以获得vboxmanage list vms
所有 vm 名称及其用户 ID 的列表。从 Guest,即使使用 VirtualBox Additions,我也找不到方法。我最接近的方法是vboxcontrol guestproperty enumerate
,但它似乎没有 UUID 作为 guest 属性。
答案1
我能够使用 提取 Linux 客户机上机器的 UUID dmidecode
。
$ uname -a
Linux vagrant-ubuntu-trusty-64 3.13.0-79-generic #123-Ubuntu SMP Fri Feb 19 14:27:58 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$ dmidecode
Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: innotek GmbH
Product Name: VirtualBox
Version: 1.2
Serial Number: 0
UUID: 7CB408DB-F8D3-45D8-AB90-BD8EA68C841E
Wake-up Type: Power Switch
SKU Number: Not Specified
Family: Virtual Machine
此 UUID 与主机报告的 UUID 匹配:
$ VBoxManage list runningvms
"vagrant_box_1463038978001_98686" {7cb408db-f8d3-45d8-ab90-bd8ea68c841e}
要仅提取 UUID,您可以运行:
dmidecode | grep UUID | awk '{print $2}'
从 dmidecode 3.0 版开始,以下内容有效:
dmidecode -s system-uuid
答案2
我能想到的最好的办法是:
- 在主机上,编写一个使用 vboxmanage 列出所有虚拟机的脚本,并将自定义属性(如
/Custom/UUID
)设置为 UUID。每当创建新虚拟机时,请手动运行此脚本。 - 在客人机上,只需读取该属性
/Custom/UUID
。如果不存在,则爆炸。