Назад | Перейти на главную страницу

VirtualBox: получить UUID гостя из гостевого компьютера

Есть ли способ получить UUID гостевой виртуальной машины из самой гостевой виртуальной машины? От Хоста я могу сделать vboxmanage list vms чтобы получить список всех имен виртуальных машин и их идентификаторов пользователей. От гостя, даже с дополнениями VirtualBox, я не вижу способа сделать это. Самое близкое, что я пришел, было vboxcontrol guestproperty enumerate, но похоже, что у него нет UUID в качестве гостевого свойства.

Мне удалось извлечь UUID машины в гостевых системах Linux с помощью 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 совпадает с сообщением хоста:

$ VBoxManage list runningvms
"vagrant_box_1463038978001_98686" {7cb408db-f8d3-45d8-ab90-bd8ea68c841e}

Чтобы извлечь только UUID, вы можете запустить:

dmidecode | grep UUID | awk '{print $2}'

Начиная с версии 3.0 dmidecode, работает следующее:

dmidecode -s system-uuid

Лучшее, что я мог придумать:

  • На хосте создайте сценарий, который использует vboxmanage для вывода списка всех виртуальных машин, и установите настраиваемое свойство (например, /Custom/UUID) в UUID. Запускайте это вручную всякий раз, когда создается новая виртуальная машина.
  • О гостях, просто прочтите это свойство /Custom/UUID. Если его там нет, взорвитесь.