I recently had to upgrade the BIOS on one of our Supermicro systems (an X7DVL-E system). Supermicro provide their BIOS upgrades as a ZIP file containing the actual BIOS and a DOS flash program. They also seem to provide some software which you can run on Windows to create a BIOS flash floppy disk (for the younger readers in the audience, that’s another wonderful technology from the 80s, and I’m talking about the super-modern 3.5″ floppy there). I’m not singling out Supermicro for particular criticism here, a lot of the system manufacturers seem to work on the assumption we’re still running PCs with Windows and a floppy drive (to be fair, if you have the optional IPMI management card installed, you can normally upload your firmware through that, but we don’t) – but for those of us running Linux servers, upgrading the BIOS can be a painful process.
There is a work-around for this problem. Thanks to the Linux boot-loader, GRUB – you can boot from a DOS disk image containing your BIOS upgrade program and run the program from within that booted image without ever actually installing DOS or a floppy drive in your system. The following procedure worked well for me on an Ubuntu 9.04 system (with thanks to this OpenSUSE page and and this Ubuntu forums posting for some assistance along the way) and the same approach should work on other distributions.
WARNING: Upgrading your system BIOS is an inherently risky process – with the primary risk being that if things go wrong you can brick your system. Things that can go wrong include flashing your system with a BIOS upgrade for a different system or the power getting interrupted while you are in the middle of a BIOS upgrade. In some cases, you may be able to reflash the BIOS using some emergency procedure but with most systems, you may be looking at a motherboard replacement. So proceed with caution and only upgrade your BIOS if you have a specific problem which the upgrade fixes.
wget http://www.fdos.org/bootdisks/autogen/FDOEM.144.gz
wget http://www.example.com/bios/version2.zip
gunzip FDOEM.144.gz sudo mount -o loop FDOEM.144 /mnt sudo mkdir /mnt/bios cd /mnt/bios unzip <path to download BIOS upgrade file>/version2.zip umount /mnt
sudo aptitude install syslinux sudo mkdir /boot/dos sudo cp /usr/lib/syslinux/memdisk /boot/dos sudo cp FDOEM.144 /boot/dos sudo vi /boot/grub/menu.lst
and add the following section to the end of the file
title DOS BIOS upgrade kernel /boot/dos/memdisk initrd /boot/dos/FDOEM.144
A:\CD BIOS A:\FLASH V2BIOS.ROM