Как я могу изменить серийный номер BIOS в VirtualBox?


17

VirtualBox устанавливает серийный номер BIOS каждого экземпляра виртуальной машины на 0. Кажется, что возможно изменить некоторые настройки BIOS, но я не видел ничего, что напрямую ссылается на серийный номер.

Кто-нибудь может предложить способ сделать это?


1
По какой-то конкретной причине вы хотите это сделать?
Джаред Харли

1
Да. У меня есть инструмент для инвентаризации ПК, который использует серийный номер BIOS для уникальной идентификации компьютеров. Он отлично работает для физического оборудования и для виртуальных машин других производителей, но не знает, как обрабатывать несколько виртуальных машин VirtualBox.
Роджер

отредактировал мой ответ, чтобы отразить ошибку, которую вы поймали.
Гном

У тебя есть новости по этому поводу, Роджер? Хотелось бы узнать, как это получилось.
Гном

Я никогда не определял, как это сделать. Я получил несколько ответов на форумах VirtualBox, но ничего не нашел. Если я найду ответ, я обязательно добавлю сюда обновление.
Роджер

Ответы:


22

http://www.virtualbox.org/manual/ch09.html#changedmi

Действительно имеет подробный ответ на это.

Вы можете установить серийный номер BIOS, выполнив это:

VBoxManage setextradata "VM name" 
"VBoxInternal/Devices/pcbios/0/Config/DmiSystemSerial" "System Serial"

Ошибка, которую вы получаете, вызвана тем, что серийный номер не задан как строковое значение, если у вас есть чистое число, вы должны добавить его string:следующим образом:

VBoxManage setextradata "VM name" 
"VBoxInternal/Devices/pcbios/0/Config/DmiSystemSerial" "string:1234"

Примечание. Если ваша виртуальная машина настроена на использование прошивки EFI, вам необходимо заменить pcbios на efi в ключах.


3
Обратите внимание, что эти инструкции предназначены для систем, использующих BIOS . Если ваша система использует EFI, управляемый «Настройки -> Система -> Материнская плата -> Включить EFI» - вам нужно заменить «pcbios» на «efi» в приведенных выше командах.
ntc2

8

Не из каких внешних настроек. Но вы можете из кода, а затем построить его самостоятельно:

Исходный файл: DevPcBios.cpp
Строка: 1014READCFGSTR("DmiSystemSerial", pszDmiSystemSerial, "0");

Измените «0» на любое значение, которое вам нужно.


РЕДАКТИРОВАТЬ: Вы, очевидно, можете использовать VBoxManage setextradata . Я использовал его в прошлом для других типов конфигураций (не связанных с BIOS) и не тестировал этот конкретный параметр. Попробуй:

VBoxManage setextradata *YourVMName* VBoxInternal/Devices/pcbios/0/Config/DmiSystemSerial "*yourserial*"

В противном случае ... вернуться к редактированию и созданию исходного кода.

Удачи.


1
Хм. Спасибо - так близко, но пока нет. Я попробовал это: "c: \ Program Files \ Sun \ VirtualBox \ VBoxManage.exe" setextradata "Демонстрационный сервер" VBoxInternal / Devices / pcbios / 0 / Config / DmiSerial "123" Казалось, что работает, но когда я запустил виртуальную машину, я получено это сообщение об ошибке: Не удалось запустить демонстрационный сервер виртуальной машины. Неверная конфигурация для устройства pcbios device (VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES). Неизвестная ошибка создания виртуальной машины (VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES). Удаление и воссоздание машинного определения исправило его, так что никакого вреда не было. Я думаю, что вы действительно близки - есть другие предложения?
Роджер

хм ... вы сделали дословное копирование / вставку вашей команды в поле для комментариев? Потому что между / Config и / DmiSerial нет спава. Независимо от того, я буду исследовать это дальше. Думаю, мне придется установить VirtualBox. До сих пор полагался только на мои заметки :)
Гном

Ба! Это моя голова. Я выкладываю соответствующую строку кода, а затем даже не проверяю ее по моим намного более старым заметкам. Это не / DmiSerial. Это было переименовано когда-то между версией 1.5 и сейчас. Сейчас / DmiSystemSerial
Гном

Спасибо, Гном, за всю вашу помощь. Я попытался заменить DmiSerial на DmiSystemSerial, перезапустить командную строку (без пробела, что было опечаткой), и получил ту же ошибку.
Роджер

Насколько мне известно, это может означать, что это еще не полностью реализовано, и вы не можете сделать это таким образом. В этот момент я боюсь, что перестаю быть полезным. Вы должны пойти на форумы VirtualBox и попробовать оттуда. Они отличные люди, и вы получите более информированный ответ. Однако я хотел бы знать конечный результат, если вы будете так любезны и опубликуете ответ на свой вопрос, когда это произойдет. Всего наилучшего.
Гном

3

Если вы запустите эту команду и получите сообщение об ошибке, на которое ссылается Роджер, вам нужно отменить команду, выполнив команду без последнего параметра (VALUE).

Это удаляет запись, вызвавшую ошибку.

Если вы не уверены, какой была последняя нарушающая команда, откройте файл ~~~ .vbox (XML) в корне папки VirtualMachines конкретной виртуальной машины и просмотрите раздел EXTRADATA.

Выполнение вызова vboxmanage из командной строки - лучший способ их изменить. Редактирование XML-файла не выполняется 100% времени.


2

Принятый ответ не обновил серийный номер для меня правильно; вместо этого я выполнил эти шаги, чтобы успешно обновить серийный номер. Обратите внимание, что гостевая ОС была macOS, а хост - Windows.

ПРИМЕЧАНИЕ. Перед запуском этой команды необходимо закрыть виртуальный ящик, чтобы сохранить его.

  1. Откройте командную строку Windows от имени администратора
  2. cd "C:\Program Files\Oracle\VirtualBox\"
  3. VBoxManage.exe setextradata "VM NAME" "VBoxInternal/Devices/efi/0/Config/DmiSystemSerial" "SERIAL_HERE" см. источник . *
    Не уверен, почему команда pcbios не работает, но efi работает.

ПОЛЕЗНЫЕ ССЫЛКИ

  • Если у вас возникли проблемы с поиском действующего серийного номера, следуйте инструкциям здесь .
  • Если вы не уверены, какое имя вашего vm запущено VBoxManage.exe list vms.

1
Если вам нужен «efi» и принятый ответ с использованием «pcbios», это, вероятно, потому, что вы используете (U) EFI, а этот человек использовал традиционный BIOS. Используете ли вы EFI или BIOS, определяется флажком «Настройки -> Система -> Материнская плата -> Включить EFI» в VirtualBox.
ntc2

Ах, имеет смысл! Благодаря @ ntc2
josh7weaver

1

Попробуйте использовать серийный номер, который содержит 20-байтовую шестнадцатеричную строку:

VBoxManage setextradata "VM name" "VBoxInternal/Devices/ahci/0/Config/Port0/SerialNumber" "serial"

( Ссылка )

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.