This Time Self-Hosted
dark mode light mode Search

Updating a BIOS without floppies, Windows or CDs

One regression I have with Yamato is that the BIOS cannot be updated through the BIOS itself, like I could do with my previous ASUS motherboard (and Award BIOS). The AMI bios of the Tyan motherboard doesn’t support that.

But since I don’t want to use my Windows installation to do the job (I use it only for work and to play more recent games that don’t play in Wine), I decided to look up something that could allow me to do the upgrade using only Free Software, my Gentoo Linux install, and the files provided by Tyan.

Caution: I make no warranty that the procedure will work properly, if this post gets published it means I was able to get it working myself but it might not work for you! Please remember that you do this at your risk!

I found an interesting post about FreeDOS and USB drives, which made my life much more easier. But as I’m using Linux and in particular Gentoo, I revised a bit the instructions 🙂

  • first of all, merge the software we’re going to need, this means sys-boot/makebootfat (from my overlay) and app-arch/libarchive (to extract an ISO file later on);
  • proceed then to create the directory where to put the files that will go on the virtual floppy, let’s call it “bios-update”;
  • download the new BIOS from Tyan’s website, and put the content of the zip archive in “bios-update”;
  • download FreeDOS (I suggest you to use the torrent download rather that ibiblio that is so slow!);
  • extract the ISO, with bsdtar it’s just the same as extracting a standard tar file: xf and all;
  • copy freedos/setup/odin/{,kernel.sys} from the FreeDOS ISO to the “bios-update” directory;
  • from freedos/packages/src_base/ extract the files source/ukernel/boot/fat{12,16,32lba}.bin.
  • run the makebootfat command with a commandline similar to this: makebootfat -o /dev/sde -E 255 -1 fat12.bin -2 fat16.bin -3 fat32lba.bin -m /usr/share/syslinux/mbr.bin bios-update; note that /dev/sde has to be changed to your USB device.

Now just restart your system with the USB drive in it and run the flash utility as provided by your manufacturer.

As an alternative you may rename an eventual batch file provided by your manufacturer to autoexec.bat so that it is ran at boot; I have no idea (yet) how to stop FreeDOS from asking date and time, but whatever, just press enter at them. You don’t usually have to worry about infinite loops of BIOS updates, as once the update is done, I’ve noticed all BIOS, after update, require you to fill in the configuration again.

I’m tempted to streamline this to a script or make the makebootfat ebuild fetch the needed files out of the FreeDOS ISO, or create an ebuild that install the basic FreeDOS files needed to create the boot disk. But maybe another time.

Comments 4
  1. If you add an autoexec.bat or fdauto.bat (even blank), time/date won’t be prompted.

  2. Very interesting. However, I think that it is possible to do the same trick without any bootable media except the existing hard disk, by making a fake FreeDOS floppy drive using “memdisk” (from syslinux). But that’s (obviously) risky.

  3. Dell’s ‘biosdisk’ program will generate a floppy, or a CD, or a GRUB entry, containing freedos and appropriate component of syslinux, plus your vendor-supplied DOS BIOS update executable. Sounds like it does exactly what you’re idea for a program should do.…I recommend starting with the git tree, as I made several fixes recently but haven’t released a new tarball.Thanks,Matt DomschTechnology Strategist, Dell Office of the CTO

  4. I still have a floppy here, but I’ve been using FREEDOS for BIOS updates for years. I just downloaded the 1.44 MB OEM image with the FREEDOS basics and mount it on loopback, then delete the old and copy over the new *.bin BIOS datafile and flash updater (I always use the one that ships with that specific BIOS, just in case). I could put it in autoexec.bat and have it run automatically, but prefer to run the command myself.As soon as the new versions are copied to the image, I unmount it, then dd it direct to /dev/floppy, reboot, go into BIOS to set it to try the floppy, save and exit from BIOS, and boot the floppy. A few minutes later I have my new BIOS flashed, and away I go. =:^)It’s not something I do enough to be worth automating further.Duncan

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.