[vbox-dev] BIOS DMI data

Dmitry Tokarenko tokarenkodmitry at gmail.com
Tue May 25 15:42:33 GMT 2010


Dear Frank,

Thank you for the explanations!


If I produce custom BIOS from memory dump, supply it to a virtual
machine by issuing command
VBoxManage setextradata MyVM
"VBoxInternal/Devices/pcbios/0/Config/BiosRom" "/home/user/mybios.rom"
will I encounter problems discussed in this thread
http://vbox.innotek.de/ticket/1929 ?

2010/5/25 Frank Mehnert <Frank.Mehnert at sun.com>:
> Dmitry,
>
> On Tuesday 25 May 2010, Dmitry Tokarenko wrote:
>> I want to emulate an appliance using VirtualBox. In order to do so I
>> will have to set following DMI data in BIOS (as reported by Phoenix
>> BIOS Editor Pro):
>>
>> MotherboardManufacturerName
>> MotherboardModel
>> MotherboardVersion
>> SerialNumber
>>
>> SystemManufacturerName
>> SystemProductName
>> SystemVersion
>> SystemSerialNumber
>>
>> ChassisManufacturerName
>> ChassisVersion
>> ChassisSerialNumber
>> ChassisModel
>>
>>
>> Currently VBox allows me to set following DMI data:
>>
>> "DmiBIOSVendor\0"
>> "DmiBIOSVersion\0"
>> "DmiBIOSReleaseDate\0"
>> "DmiBIOSReleaseMajor\0"
>> "DmiBIOSReleaseMinor\0"
>> "DmiBIOSFirmwareMajor\0"
>> "DmiBIOSFirmwareMinor\0"
>> "DmiSystemFamily\0"
>> "DmiSystemProduct\0" <---- SystemProductName
>> "DmiSystemSerial\0" <---- SystemSerialNumber
>> "DmiSystemUuid\0"
>> "DmiSystemVendor\0" <---- SystemManufacturerName
>> "DmiSystemVersion\0" <---- SystemVersion
>> "DmiChassisVendor\0" <---- ChassisManufacturerName
>> "DmiChassisVersion\0" <---- ChassisVersion
>> "DmiChassisSerial\0" <---- ChassisSerialNumber
>> "DmiChassisAssetTag\0"
>>
>> (BTW where "ChassisModel" should go? To OEM-defined?)
>
> No, for chassis there is currently a separate, disabled section.
> See DevFwCommon.cpp line 650.
>
> The board information is currently not provided at all.
>
>> First approach was to compile custom bios. I picked up VirtualBox OSE
>> edition and added following code to FwCommonPlantDMITable function in
>> DevFwCommon.cpp (in between the "DMI system information (Type 1)" and
>> the "DMI System Enclosure or Chassis (Type 3)":
>>
>> /***********************************
>> * DMI board information (Type 2) *
>> ***********************************/
>> PDMIBOARDINF pBoard         = (PDMIBOARDINF)pszStr;
>> CHECKSIZE(sizeof(*pBoard));
>> pszStr                      = (char *)(pBoard + 1);
>> iStrNr                      = 1;
>> pBoard->header.u8Type       = 2; /* Base Board */
>> pBoard->header.u8Length     = sizeof(*pBoard);
>> pBoard->header.u16Handle    = 0x0003;
>> pBoard->u8BoardType         = 0x0A;
>> READCFGSTRDEF(pBoard->u8Manufacturer, " ", "MyVendor");
>> READCFGSTRDEF(pBoard->u8Product, " ", "MyProduct");
>> READCFGSTRDEF(pBoard->u8Version, " ", "MyVersion");
>> READCFGSTRDEF(pBoard->u8SerialNumber, " ", "12345");
>> TERM_STRUCT;
>>
>> Then I built the project and decided to verify pcbios.bin file using
>> hex editor. But even default DMI data couldn't be found, namely:
>> static const char *s_szDefDmiBIOSVendor = "innotek GmbH";
>> static const char *s_szDefDmiBIOSVersion = "VirtualBox";
>> static const char *s_szDefDmiBIOSReleaseDate = "12/01/2006";
>> static const char *s_szDefDmiSystemVendor = "innotek GmbH";
>> static const char *s_szDefDmiSystemProduct = "VirtualBox";
>> static const char *s_szDefDmiSystemVersion = "1.2";
>> static const char *s_szDefDmiSystemSerial = "0";
>> static const char *s_szDefDmiSystemFamily = "Virtual Machine";
>> static const char *s_szDefDmiChassisVendor = "Sun Microsystems, Inc.";
>>
>> DevPcBios.h defines following
>> #define VBOX_DMI_TABLE_BASE 0xe1000
>> Binary ends at offset of FFFF. So I can't even get to offset of e1000!
>> Where should I look for these data structures?
>
> The DMI tables are generated on the fly during VM boot. Therefore
> you should boot some guest and read the physical memory 0xe1000.
> For instance, boot a Linux guest and do
>
>  dd if=/dev/mem of=dmi.bin bs=1K count=1 skip=900
>
> Then use a hex dump tool, for instance xxd to dump the file dmi.bin
>
> Kind regards,
>
> Frank
> --
> Dr.-Ing. Frank Mehnert
>
> Sitz der Gesellschaft:
> Sun Microsystems GmbH, Sonnenallee 1, 85551 Kirchheim-Heimstetten
> Amtsgericht München: HRB 161028
> Geschäftsführer: Jürgen Kunz
>
> _______________________________________________
> vbox-dev mailing list
> vbox-dev at virtualbox.org
> http://vbox.innotek.de/mailman/listinfo/vbox-dev
>
>




More information about the vbox-dev mailing list