VirtualBox:从客户机内部获取客户机 UUID

VirtualBox:从客户机内部获取客户机 UUID

有没有办法从 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。如果不存在,则爆炸。

相关内容