// vim:expandtab:autoindent:tabstop=4:shiftwidth=4:filetype=txt: /*! \page bios_hdr Dell BIOS .HDR files \section obtain OBTAINING BIOS HEADER (.HDR) FILES \subsection hdr_tool Scripted extraction of BIOS .HDR files There is now an automated tool available to automate the process of extracting .HDR files from the BIOS update executables that you can download from support.dell.com. This tool is called "extract_hdr" and is contained in the firmware-tools RPM. You can install this RPM from the libsmbios yum repository by following the instructions here: \li \ref yum. or, for quick, scripted, setup: \li <a href="http://linux.dell.com/repo/software/">Bootstrap script for quick setup of libsmbios repository</a> After setting up the libsmbios yum repository, you can install the firmware tools rpm by running "yum install firmware-tools". It is _HIGHLY_ recommended that you install wine. It is not a strict dependency, as the extraction methods that use wine will be skipped if wine is not installed. But, if you have wine installed, you can extract more types of BIOS images. The downside is that some BIOS images may cause wine to hang. If this happens, kill the wine and wineserver processes. The extraction process should not take more than 5-10 seconds. If it takes significantly longer, it is likely that wine has hung. If you choose to script BIOS extractions in an automated process, it is recommended that you run a reaping program that checks for wine processes that are older than 10 seconds and kills them automatically. After you have the tools installed, you can extract a single header like this: \verbatim [user@build ~]$ extract_hdr -i sab-a01.exe -o test_output/ attempt extract: /home/user/sab-a01.exe good: extractHdrFromPrecisionWindowsExe [user@build ~]$ find test_output/ test_output/ test_output/hdr test_output/hdr/system_bios_0x1028_0x00df_version_a01.hdr test_output/hdr/config.ini test_output/hdr/system_bios_0x1028_0x00da_LATEST.hdr test_output/hdr/system_bios_0x1028_0x00df_LATEST.hdr test_output/hdr/system_bios_0x1028_0x00da_version_a01.hdr [user@build ~]$ ll test_output/hdr/ total 1064 -rw-rw-r-- 1 user user 521 Jan 17 23:13 config.ini lrwxrwxrwx 1 user user 41 Jan 17 23:13 system_bios_0x1028_0x00da_LATEST.hdr -> system_bios_0x1028_0x00da_version_a01.hdr -rw-rw-r-- 1 user user 524380 Jan 17 23:13 system_bios_0x1028_0x00da_version_a01.hdr lrwxrwxrwx 1 user user 41 Jan 17 23:13 system_bios_0x1028_0x00df_LATEST.hdr -> system_bios_0x1028_0x00df_version_a01.hdr -rw-rw-r-- 1 user user 524380 Jan 17 23:13 system_bios_0x1028_0x00df_version_a01.hdr [user@build ~]$ \endverbatim Note the creation of the hdr/ subdirectory, as well as symlinks corresponding to the latest BIOS release for each platform. These can come in handy. \subsection hdr_tool_multiple Extraction of multiple .HDR files at the same time You do not have to use the "-i input_file" option to specify a single file to extract. If you create a subdirectory under the output directory (specified with the '-o' option), and drop any number of BIOS executables, they will all automatically be extracted if you do not give the '-i' option. Note that the directory name must be >3 chars, as 3-char dir names are reserved for internal use by the extraction tool. For example: \verbatim [user@build ~]$ mkdir test_output [user@build ~]$ mkdir test_output/extract_these_please [user@build ~]$ mv sab-a01.exe sab-a02.exe WS380A02.EXE WS380A04.EXE test_output/extract_these_please/ [user@build ~]$ extract_hdr -o test_output/ attempt extract: /home/user/test_output/extract_these_please/WS380A02.EXE good: extractHdrFromPrecisionWindowsExe attempt extract: /home/user/test_output/extract_these_please/WS380A04.EXE good: extractHdrFromPrecisionWindowsExe attempt extract: /home/user/test_output/extract_these_please/sab-a01.exe good: extractHdrFromPrecisionWindowsExe attempt extract: /home/user/test_output/extract_these_please/sab-a02.exe good: extractHdrFromPrecisionWindowsExe [user@build ~]$ find test_output/ test_output/ test_output/hdr test_output/hdr/system_bios_0x1028_0x00df_version_a01.hdr test_output/hdr/system_bios_0x1028_0x01a8_LATEST.hdr test_output/hdr/system_bios_0x1028_0x01a8_version_a02.hdr test_output/hdr/config.ini test_output/hdr/system_bios_0x1028_0x00da_version_a02.hdr test_output/hdr/system_bios_0x1028_0x00da_LATEST.hdr test_output/hdr/system_bios_0x1028_0x00df_LATEST.hdr test_output/hdr/system_bios_0x1028_0x00da_version_a01.hdr test_output/hdr/system_bios_0x1028_0x01a8_version_a04.hdr test_output/hdr/system_bios_0x1028_0x00df_version_a02.hdr test_output/extract_these_please test_output/extract_these_please/WS380A04.EXE test_output/extract_these_please/sab-a01.exe test_output/extract_these_please/WS380A02.EXE test_output/extract_these_please/sab-a02.exe [user@build ~]$ ls -l test_output/hdr/ total 3036 -rw-rw-r-- 1 user user 1330 Jan 17 23:30 config.ini lrwxrwxrwx 1 user user 41 Jan 17 23:30 system_bios_0x1028_0x00da_LATEST.hdr -> system_bios_0x1028_0x00da_version_a02.hdr -rw-rw-r-- 1 user user 524380 Jan 17 23:30 system_bios_0x1028_0x00da_version_a01.hdr -rw-rw-r-- 1 user user 524380 Jan 17 23:30 system_bios_0x1028_0x00da_version_a02.hdr lrwxrwxrwx 1 user user 41 Jan 17 23:30 system_bios_0x1028_0x00df_LATEST.hdr -> system_bios_0x1028_0x00df_version_a02.hdr -rw-rw-r-- 1 user user 524380 Jan 17 23:30 system_bios_0x1028_0x00df_version_a01.hdr -rw-rw-r-- 1 user user 524380 Jan 17 23:30 system_bios_0x1028_0x00df_version_a02.hdr lrwxrwxrwx 1 user user 41 Jan 17 23:30 system_bios_0x1028_0x01a8_LATEST.hdr -> system_bios_0x1028_0x01a8_version_a04.hdr -rw-rw-r-- 1 user user 458844 Jan 17 23:30 system_bios_0x1028_0x01a8_version_a02.hdr -rw-rw-r-- 1 user user 458844 Jan 17 23:30 system_bios_0x1028_0x01a8_version_a04.hdr [user@build ~]$ \endverbatim */