Flash motherboard BIOS

From Christoph's Personal Wiki
Jump to: navigation, search

In this article, I will describe how to flash a motherboard with an open source BIOS. I will use FreeDOS as an example. FreeDOS is a free DOS-compatible operating system.

WARNING: This article or section describes techniques which can be dangerous for your computer's hardware or the data on it. I have tested everything I describe herein on my personal computers. However, absolutely no guarantee can be made that it will work for you. Proceed with caution!
  • Step 1: Backup your original BIOS and check that your BIOS "is upgradeable"
dmidecode    # DMI table decoder
biosdecode   # BIOS information decoder

Note from man page: dmidecode is a tool for dumping a computer's DMI (some say SMBIOS) table contents in a human-readable format. This table contains a description of the system's hardware components, as well as other useful pieces of information such as serial numbers and BIOS revision (and if it is upgradeable). Thanks to this table, you can retrieve this information without having to probe for the actual hardware. While this is a good point in terms of report speed and safeness, this also makes the presented information possibly unreliable. More often than not, information contained in the DMI tables is inaccurate, incomplete or simply wrong.

  • Step 2: Download FreeDOS boot disk floppy image

You will need a bootable floppy disk image with FreeDOS kernel on it. Use the OEM Bootdisk version from the FreeDOS website (i.e. the one with just kernel and command.com), as it leaves more free space on disk for the flash utility and new BIOS image.

wget http://www.fdos.org/bootdisks/autogen/FDOEM.144.gz
gunzip FDOEM.144.gz
  • Step 3: Copy the BIOS flash utility and new BIOS image to the mounted floppy disk image

Make sure that you have support for the vfat and loop file systems in the kernel. Or you can have those features compiled as modules. In the latter case, load the modules before the next step, like this.

modprobe vfat
modprobe loop

Consult /proc/fileystems to see if you have the needed file systems supported. If you do, you should be able to "loop mount" the floppy disk image to some temporary path:

mkdir /tmp/floppy
mount -t vfat -o loop FDOEM.144 /tmp/floppy

If the mount went without errors, copy BIOS flash utility and new BIOS image to the mounted floppy disk image. You'll probably have to unzip the archive you downloaded from your motherboard vendor site. As an example, I will use Asus' M2N-E BIOS Version 0304:

unzip M2NE304.zip
cp 0304.BIN /tmp/floppy

Now, unmount the floppy disk image:

umount /tmp/floppy
  • Step 4: Burn a bootable CD which will emulate floppy device

Next step is to burn the floppy image to a CD. First we need to make a bootable CD image, and then burn it.

mkisofs -o bootcd.iso -b FDOEM.144 FDOEM.144
cdrecord -v bootcd.iso
  • Step 5: Reboot->flash->reboot

Finally, reboot your machine with the new bootable CD in the drive (note: The CD drive should be listed first in the boot sequence of your original BIOS) and then run your BIOS upgrade procedure when the CD boots.

Et voilà!