Jak mogę zmienić numer seryjny BIOS w VirtualBox?


17

VirtualBox ustawia numer seryjny BIOS każdej instancji VM na 0. Wydaje się, że można zmienić niektóre ustawienia BIOS, ale nie widziałem niczego, co bezpośrednio odnosi się do numeru seryjnego.

Czy ktoś może zasugerować sposób na zrobienie tego?


1
Czy jest jakiś konkretny powód, dla którego chcesz to zrobić?
Jared Harley

1
Tak. Mam narzędzie do inwentaryzacji komputerów PC, które używa numeru seryjnego BIOS-u do jednoznacznej identyfikacji komputerów. Działa dobrze dla fizycznego sprzętu i maszyn wirtualnych innych dostawców, ale nie wie, jak obsługiwać wiele maszyn wirtualnych VirtualBox.
Roger,

zredagowałem moją odpowiedź, aby odzwierciedlić wykryty błąd.
Dwarf

Masz jakieś wiadomości na ten temat, Roger? Bardzo chciałbym wiedzieć, jak się okazało.
Dwarf

Nigdy nie zdecydowałem, jak to zrobić. Otrzymałem kilka odpowiedzi na forach VirtualBox, ale nie znalazłem nic, co zadziałałoby. Jeśli napotkam odpowiedź, na pewno dodam tutaj aktualizację.
Roger,

Odpowiedzi:


22

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

Naprawdę ma na to szczegółową odpowiedź.

Możesz ustawić numer seryjny bios, wykonując następujące czynności:

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

Błąd, który otrzymujesz, jest spowodowany tym, że numer seryjny nie jest ustawiony jako wartość ciągu, jeśli masz czystą liczbę, powinieneś ją poprzedzić string::

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

Uwaga: W przypadku, gdy VM jest skonfigurowany do korzystania z EFI firmware trzeba wymienić pcbios przez EFI w klawisze.


3
Uwaga: te instrukcje dotyczą systemów korzystających z systemu BIOS . Jeśli twój system używa EFI - kontrolowanego przez „Ustawienia -> System -> Płyta główna -> Włącz EFI” - wtedy w powyższych poleceniach musisz zastąpić „pcbios” „efi”.
ntc2

8

Nie z żadnych ustawień zewnętrznych. Ale możesz na podstawie kodu, a następnie samodzielnie go zbudować:

Plik źródłowy: DevPcBios.cpp
Linia: 1014READCFGSTR("DmiSystemSerial", pszDmiSystemSerial, "0");

Zmień „0” na dowolną potrzebną wartość.


EDYCJA: Najwyraźniej możesz użyć VBoxManage setextradata . Użyłem go w przeszłości do innych rodzajów konfiguracji (niezwiązanych z biosem) i nie testowałem tego konkretnego ustawienia. Dać mu szansę:

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

W przeciwnym razie ... przywróć edycję i kompilację kodu źródłowego.

Powodzenia.


1
Hmm Dzięki - tak blisko, ale jeszcze nie ma. Próbowałem tego: „c: \ Program Files \ Sun \ VirtualBox \ VBoxManage.exe” setextradata „Demo Server” VBoxInternal / Devices / pcbios / 0 / Config / DmiSerial „123” Wydawało się, że działa, ale kiedy uruchomiłem maszynę wirtualną I dostał ten komunikat o błędzie: Nie można uruchomić serwera demonstracyjnego maszyny wirtualnej. Niepoprawna konfiguracja urządzenia pcbios urządzenia (VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES). Nieznany błąd podczas tworzenia maszyny wirtualnej (VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES). Usunięcie i ponowne utworzenie definicji maszyny naprawiło ją, więc nie wyrządzono żadnych szkód. Myślę, że jesteś naprawdę blisko - jakieś inne sugestie?
Roger,

hmm ... czy wykonałeś dosłownie kopię / wklejenie twojego polecenia do pola komentarza? Ponieważ nie ma spacji między / Config a / DmiSerial. Niezależnie od tego zbadam to dalej. Chyba będę musiał zainstalować VirtualBox. Do tej pory polegałem tylko na moich notatkach :)
Dwarf

Bah! Ta moja głowa. Publikuję odpowiedni wiersz kodu, a następnie nawet go nie porównuję z moimi znacznie starszymi notatkami. To nie jest / DmiSerial. Został przemianowany między wersją 1.5 a teraz. Teraz jest / DmiSystemSerial
A Dwarf

Dzięki, krasnolud, za całą twoją pomoc. Próbowałem zastąpić DmiSerial DmiSystemSerial, zmienić linię poleceń (bez spacji, która była literówką) i dostałem ten sam błąd.
Roger,

Według mojej wiedzy może to oznaczać, że nie jest to jeszcze w pełni zaimplementowane i nie można tego zrobić w ten sposób. W tym momencie obawiam się, że przestanę być przydatny. Powinieneś wejść na fora VirtualBox i spróbować stamtąd. Są doskonałymi ludźmi, a otrzymasz bardziej świadomą odpowiedź. Chciałbym jednak poznać wynik końcowy, jeśli byłbyś tak miły i opublikuj odpowiedź na własne pytanie, kiedy to nastąpi. Wszystkiego najlepszego.
Dwarf

3

Jeśli uruchomisz to polecenie i otrzymasz błąd, do którego odwołuje się Roger, musisz wycofać polecenie, uruchamiając polecenie bez ostatniego parametru (WARTOŚĆ).

Usuwa to wpis powodujący błąd.

Jeśli nie masz pewności, co było ostatnim obrażającym poleceniem, otwórz plik ~~~ .vbox (XML) w katalogu głównym folderu VirtualMachines konkretnej maszyny wirtualnej i przejrzyj sekcję EXTRADATA.

Najlepszym sposobem ich modyfikacji jest uruchomienie wywołania wiersza poleceń do vboxmanage. Edycja pliku xml nie utrzymuje się przez 100% czasu.


2

Przyjęta odpowiedź nie zaktualizowała poprawnie numeru seryjnego; zamiast tego wykonałem te kroki, aby pomyślnie zaktualizować numer seryjny. Pamiętaj, że system operacyjny gościa to macOS, a host to Windows.

UWAGA: Musisz zamknąć virtualbox przed uruchomieniem tego polecenia, aby go zapisać.

  1. Otwórz wiersz polecenia systemu Windows jako administrator
  2. cd "C:\Program Files\Oracle\VirtualBox\"
  3. VBoxManage.exe setextradata "VM NAME" "VBoxInternal/Devices/efi/0/Config/DmiSystemSerial" "SERIAL_HERE" zobacz źródło . *
    Nie jestem pewien, dlaczego polecenie pcbios nie działało, ale efi działało.

PRZYDATNE LINKI

  • Jeśli masz problemy ze znalezieniem prawidłowego numeru seryjnego, postępuj zgodnie z instrukcjami tutaj .
  • Jeśli nie masz pewności, jak uruchamiana jest Twoja nazwa VM VBoxManage.exe list vms.

1
Czy potrzebujesz „efi” i zaakceptowanej odpowiedzi przy użyciu „pcbios”, prawdopodobnie dzieje się tak, ponieważ używasz (U) EFI i ta osoba używa tradycyjnego systemu BIOS. To, czy korzystasz z EFI czy BIOS, zależy od pola wyboru „Ustawienia -> System -> Płyta główna -> Włącz EFI” w VirtualBox.
ntc2

Ach ma sens! Dzięki @ ntc2
josh7weaver

1

Spróbuj użyć numeru seryjnego zawierającego 20-bajtowy ciąg szesnastkowy:

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

( Odniesienie )

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.