Flash motherboard BIOS
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.
- 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à!