Як я можу змінити серійний номер BIOS у VirtualBox?


17

VirtualBox встановлює серійний номер BIOS кожного екземпляра VM на 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"

Примітка: Якщо ваш VM налаштований на використання вбудованого програмного забезпечення EFI, вам потрібно замінити pcbios на efi в ключах.


3
Зауважте, що ці інструкції призначені для систем, що використовують BIOS . Якщо ваша система використовує EFI - керований "Налаштування -> Система -> Материнська плата -> Увімкнути EFI" - тоді вам потрібно замінити "pcbios" на "efi" у вищезазначених командах.
ntc2

8

Не з будь-яких зовнішніх налаштувань. Але ви можете з коду, а потім створити його самостійно:

Вихідний файл: DevPcBios.cpp
Рядок: 1014READCFGSTR("DmiSystemSerial", pszDmiSystemSerial, "0");

Змініть "0" на будь-яке значення, яке вам потрібно.


EDIT: Ви, мабуть, можете використовувати VBoxManage setextradata . Раніше я використовував його для інших типів конфігурацій (не пов'язаних з біосом), і не перевіряв цей конкретний параметр. Спробуй:

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

Інакше ... поверніться до редагування та створення вихідного коду.

Удачі.


1
Хм. Спасибі - так близько, але ще немає. Я спробував це: "c: \ Program Files \ Sun \ VirtualBox \ VBoxManage.exe" setextradata "Demo Server" VBoxInternal / Devices / pcbios / 0 / Config / DmiSerial "123" Здавалося, працює, але коли я запустив VM I отримало це повідомлення про помилку: Не вдалося запустити віртуальну машину Demo Server. Неправильна конфігурація для пристрою pcbios (VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES). Невідома помилка створення VM (VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES). Видалення та відтворення дефініції машини виправили це, так що шкоди не було зроблено. Я думаю, ти справді близький - якісь інші пропозиції?
Роджер

хм ... ви зробили дослівну копію / вставлення вашої команди у поле коментаря? Оскільки між / Config та / DmiSerial немає жодної затримки. Незалежно від того, що я вивчу це далі. Здогадайтесь, мені доведеться встановити VirtualBox. Поки що покладався лише на мої замітки :)
Гном

Ба! Це мій голова. Я розміщую відповідний рядок коду, а потім навіть не перевіряю його проти моїх значно старших записок. Це не / DmiSerial. Він був перейменований десь між версією 1.5 і тепер. Зараз / DmiSystemSerial
Гном

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

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

3

Якщо ви запускаєте цю команду і отримуєте помилку, на яку посилається Роджер, вам потрібно створити резервну копію команди, виконавши команду без останнього параметра (VALUE).

Це видаляє запис, що викликає помилку.

Якщо ви не впевнені в тому, якою була остання команда порушень, відкрийте файл ~~~ .vbox (XML) у корені папки VirtualMachines конкретного VM та перегляньте розділ 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.