To update the BIOS on all machines, the easiest thing to do is create a bootable disk that runs the flasher and reboots. We can load this all up over the network via PXE and re-flash a whole hoard of nodes in one go.
Since the X8SIT BIOS image is about 4MB uncompressed, it won't fit on a floppy in that form. Fortunately, however, the zipped file is much smaller, so we can use a 2.88MB boot disk that contains unzip.exe and the flashing utility. We then create a ram disk, unzip the new bios there, and run. Making our own boot disks is a bit of a chore, but fortunately some other enterprising folks did this already for their cluster:
We'll just use that image and modify the contents to suit our needs.
- Grab the http://www.lsc-group.phys.uwm.edu/beowulf/nemo/construction/BIOS/Nemo-node-config.img FreeDOS 2.88MB bootable floppy image.
- Mount it (mount -o loop node-config.img /mnt)
- Copy the bios zip file to /mnt
- Edit config.sys to create a larger ramdisk (8192KB is fine for our machines)
- Edit autoexec.bat to copy/extract the right files to the ramdisk and call the right bios flashing script.
- Add a pxelinux config file that loads and runs the boot disk (via memdisk)
Below is an example boot disk for our X8SIT supermicro servers that updates to bios rev 1.2.
The boot disk (x8sit_1.2bios_updater.img) contains:
DEVICE = TDSK.EXE 8192
echo Running setboot.exe
COPY *.ZIP C:\
echo Copying unzip.exe to c:
COPY unzip.exe c:\
echo CWD c:
echo Unpacking *.zip
unzip -x *.zip
echo Flashing Bios
CALL ami.bat X8SIT1.C22
The TFTP server's pxelinux config is as follows:
append initrd=x8sit_1.2bios_updater.img floppy raw