How to flash your BIOS when you don't have a floppy drive

By
Posted on
Tags: freedos, linux, sysadmin, hacks

Tonight while building a new workstation, I needed to update the BIOS on the motherboard, a Tyan Tomcat K8E. Tyan, however, offers only floppy-based BIOS flashing software to do the job. Worse, the software requires me to boot into DOS first, using a DOS boot floppy that is neither provided nor lying around the office (I’m a Linux guy).

One more thing: it turns out that my new floppy drive is junk.

Thus we arrive at tonight’s problem: If you do not have a floppy drive, how can you flash a motherboard’s BIOS when its manufacturer provides only a DOS-floppy-based BIOS flasher?

Fortunately, the problem can be solved. In case you ever need the solution, here it is.

Disclaimer: This recipe worked fine for me, but might not for you. If you follow these instructions, you do so at your own risk and assume all responsibility for whatever happens, even if your computer catches on fire or your pants explode. You have been warned.

First, download a bootable floppy image from the FreeDOS Project. The one you want is the 2.88-MB ODIN image because it has about 1.5 MB of free space, enough to hold the contents of the BIOS flasher’s floppy.

Second, mount the floppy image so that you can edit it:

mkdir /tmp/image
mount -o loop /path/to/odin2880.img /tmp/image

Third, copy the BIOS flasher and associated files into the mounted floppy image. I just unziped Tyan’s archive directly into the image:

unzip /tmp/tyan_2865_301.zip -d /tmp/image

Fourth, unmount the image.

umount -d /tmp/image

Fifth, create a bootable CD-ROM from the floppy image.

cd /tmp
mkdir boot_cd
mv /path/to/odin2880.img boot_cd
mkisofs -o odin-cdrom.img -b odin2880.img -c boot.catalog boot_cd
cdrecord -v -eject odin-cdrom.img

Finally, reboot your PC using the CD-ROM and flash away! (Note: If FreeDOS asks, you don’t want to use extended memory or anything like that because BIOS flashers don’t like it. You want old 8086-style unprotected memory.)

Update 2011-03-03. For a somewhat more up-to-date recipe that also lets you boot your BIOS updater across the network see: How to update your server’s BIOS across the network.

Update 2011-02-12. It looks like the link I gave to the ODIN image is now dead. Instead, try the BALDER image.