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 <[email protected]>: > 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 > [email protected] > http://vbox.innotek.de/mailman/listinfo/vbox-dev > > _______________________________________________ vbox-dev mailing list [email protected] http://vbox.innotek.de/mailman/listinfo/vbox-dev
