On 4/29/10 1:55 AM, Joop Boonen wrote:
Hello All,
I have the Arima HDAMA server. The BIOS can be found here: http://www.arimacorp.com/server/Product/ViewDownload.asp?View=HDAMA%20rev.G
I suggest you try Luc Verhaegen's cool bios_extract utility instead. You will find it in his git repository: http://cgit.freedesktop.org/~libv/bios_extract/
What might help is to do $ dd if=hdamg217.rom of=hdama.rom bs=512k count=1
This cuts away the Phoenix BIOS flash description at the end and leaves you with the image only.
I tried with the latest version of bios_extract and applied the following patch, and I was able to extract all modules:
diff --git a/bios_extract.c b/bios_extract.c index cd87ee8..8fe2fed 100644 --- a/bios_extract.c +++ b/bios_extract.c @@ -90,6 +90,7 @@ static struct { {"AMIEBBLK", "AMIBIOSC", AMI95Extract}, {"Award BootBlock", "= Award Decompression Bios =", AwardExtract}, {"Phoenix FirstBIOS", "BCPSEGMENT", PhoenixExtract}, + {"Phoenix ServerBIOS", "BCPSEGMENT", PhoenixExtract}, {"PhoenixBIOS 4.0", "BCPSEGMENT", PhoenixExtract}, {"Phoenix TrustedCore", "BCPSEGMENT", PhoenixTrustedExtract}, {NULL, NULL, NULL},
./bios_extract hdama.rom Using file "hdama.rom" (512kB) Found Phoenix BIOS "Phoenix ServerBIOS 3 Release 6.0 " Version "DEVEL4E0", created on 03/20/06 at 14:37:39. 0x715FC ( 27134 bytes) -> romexec_0.rom 0x6E1CB ( 13338 bytes) -> strings_0.rom (29401 bytes) 0x6D65D ( 2899 bytes) -> display_0.rom (4128 bytes) 0x6B62E ( 8208 bytes) -> update_0.rom 0x6B1E3 ( 1072 bytes) -> decompcode_0.rom [0x5000:0xB6D0] 0x6564F ( 23421 bytes) -> oprom_0.rom (36864 bytes) 0x65608 ( 44 bytes) -> tcpa_H_0.rom (32 bytes) 0x65592 ( 91 bytes) -> acpi_1.rom (116 bytes) 0x65519 ( 94 bytes) -> acpi_2.rom (244 bytes) 0x654ED ( 13 bytes) -> tcpa_*_0.rom 0x64D4F ( 1927 bytes) -> bioscode_0.rom (31382 bytes) [0xF000:0x856A] 0x60020 ( 19728 bytes) -> romexec_1.rom 0x570D9 ( 36656 bytes) -> oprom_1.rom (61440 bytes) 0x4DB9D ( 38177 bytes) -> oprom_2.rom (63488 bytes) 0x46493 ( 30447 bytes) -> oprom_3.rom (65536 bytes) 0x41DAB ( 18125 bytes) -> logo_0.rom (310162 bytes) 0x39CA5 ( 25439 bytes) -> oprom_4.rom (51200 bytes) 0x36005 ( 15493 bytes) -> setup_0.rom (37682 bytes) 0x325D7 ( 14867 bytes) -> template_0.rom (37728 bytes) 0x2FA36 ( 11142 bytes) -> miser_0.rom (16208 bytes) 0x2E63C ( 5087 bytes) -> tcpa_Q_0.rom (16096 bytes) 0x2D7C3 ( 3678 bytes) -> acpi_0.rom (10464 bytes) 0x1FA2A ( 41023 bytes) -> bioscode_1.rom (56080 bytes) [0xE000:0x40F0] 0x14FE0 ( 43567 bytes) -> bioscode_2.rom (62416 bytes) [0x6000:0xCC30] 0x0EB4C ( 25721 bytes) -> bioscode_3.rom (36976 bytes) [0x6000:0x3BC0] 0x0D0A0 ( 6801 bytes) -> bioscode_4.rom (31856 bytes) [0x5000:0xBF50]
Then I used "romheaders" from the FCode Suite: http://www.openfirmware.info/FCODE_suite to check the resulting oprom_?.rom files and found the first one is it:
$ romheaders oprom_0.rom
Image 1: PCI Expansion ROM Header: Signature: 0x55aa (Ok) CPU unique data: 0x48 0xeb 0x7b 0x01 0x76 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 Pointer to PCI Data Structure: 0x017c
PCI Data Structure: Signature: 0x50434952 'PCIR' (Ok) Vendor ID: 0x1002 Device ID: 0x4752 Vital Product Data: 0x0000 PCI Data Structure Length: 0x0018 (24 bytes) PCI Data Structure Revision: 0x00 Class Code: 0x030000 (VGA Display controller) Image Length: 0x0048 blocks (36864 bytes) Revision Level of Code/Data: 0x0421 Code Type: 0x00 (Intel x86) Last-Image Flag: 0x80 (last image in rom) Reserved: 0x0000
Platform specific data for x86 compliant option rom: Initialization Size: 0x48 (36864 bytes) Entry point for INIT function: 0x80
Stefan