Your Linux Data Center Experts

Supermicro doesn't seem to have one of those whizzy BIOSes that will update directly from a non-bootable media or Internet or Linux (even with the remote management/KVM cards). In the past, most BIOS updates I've been able to just squeeze into a DOS bootable floppy, but it's been getting increasingly hard. However, the latest systems BIOS file alone is 2.2MB, so I had no hope of getting it on the 1.44MB disc I've been using the past. So, I spent some time and figured out how to make a FreeDOS bootable image. Read on for the details.

I grabbed the 9MB-ish FreeDOS ISO image as the basis of this. There is also a 150MB version, but I had no need for other stuff, just the ability to boot and access the CD drive.

I mounted that ISO up with “mount -o loop $ISO $MOUNTPOINT”, and then copied all the contents there over to a directory in /tmp. Then I went in there and made a directory with the BIOS update files in it. I also created a README file with information about what version and date is on the BIOS so that later I can tell if it's new or not fairly easily.

There is also a “setup.bat” file in the top directory of the ISO which goes into the installer. You can exit the installer, but it dumps you into some other drive letter, with no indication of where you can find the CD data. After some experimentation I found it as X:. If you modify the “setup.bat” file to put a line saying “goto end” after the first paragraph of code (after the “set fdosroot=[…]” line), it will leave you on the CD drive ready to go to it.

If you don't modify the setup.bat, you will just need to escape out of the installer, and then do “%cddrv%:” to get over to the CD device, which in my case mapped to “X:”.

Once you've done this, you'll need to make a bootable ISO image from the directory you have. Get to the top directory where you copied the files from the FreeDOS ISO, and the following command should make an ISO file called “freedos_biosupdate.iso” in the directory above where you are:

mkisofs -o /tmp/freedos_biosupdate.iso -q -l -N \
   -boot-info-table -iso-level 4 -no-emul-boot \
   -b isolinux/isolinux.bin \
   -publisher "FreeDOS - www.freedos.org" \
   -A "FreeDOS beta9 Distribution" -V FDOS_BETA9 -v .

I saved this off to “mkbiosup.sh” in the ISO top directory so I don't have to remember how to do it if I add new firmware in the future. Which I predict I will now that I have it. We have all sorts of hardware that comes through that needs firmware updates, and now I can make a “mega update CD”. I have another 640MB of space I can dump BIOS updates into.

Burn that ISO image, and you should be able to use it for all your BIOS update needs.

comments powered by Disqus

Join our other satisfied clients. Contact us today.