BIOS Updates, the Linux Way

Once the home server was assembled, I checked its BIOS against the latest version available on Intel’s Web site. The installed version was several revisions out of date, so I decided to update it before proceeding with other setup tasks.

Intel offers ISO images you can burn to CD and run to update the BIOS of a system not yet possessing an OS installation. I had read elsewhere, though, about setting up a USB drive/thumb drive from Linux that boots to old-school DOS, with the BIOS update then run from there. Intrigued, I elected to use that approach, relying on an existing Ubuntu machine we have to do the setup work.

The Approach

To be clear, I cannot claim credit for coming up with this approach. I read about it in several places on the Web, particularly this post from blogger Daniel. Daniel, in turn, indicates that the information was “[l]ifted entirely”(!) from this post by Michael. What I lay out here is simply a variation on what Daniel and Michael present, with a little more detail for those who may be less familiar with the tools and techniques in the mix.

As is always the case with this stuff, no warranty is expressed or implied. You use the information supplied here at your own risk!

Collecting the Right Files

You’ll need three things to use this approach to update your BIOS:

  • QEMU emulator. May already be installed on your PC. If not, you can probably download it with your package manager.
  • DOS image. Daniel and Michael went with Balder, and it worked fine for me, too.
  • BIOS update files. For the home server’s Johnstown motherboard, Intel makes the files available here > Download Type: BIOS > Result with Status: Latest > Download for Iflash BIOS Update.

Setting Up the USB Drive

The instructions that follow assume that, when you plug in your USB drive, your Linux system assigns a device name of /dev/sdc to it (as indicated by sudo fdisk -l) and auto-mounts it. It’s actually quite likely that a different device name gets assigned; in that case, references below to /dev/sdc should be updated accordingly.

Creating FAT16 partition

  1. Plug the USB drive into your PC. After it auto-mounts, unmount it with umount.
  2. Start the cfdisk partition editor against the drive:
    sudo cfdisk /dev/sdc
  3. In the cfdisk UI, create a primary bootable partition using FAT16 (filesystem type 06).
  4. Start QEMU, associating the Balder image with A: and booting it while assigning C: to the USB drive (more specifically, to the partition on the drive created in the previous step):
    sudo qemu -fda balder10.img -boot a -hda /dev/sdc
  5. In QEMU, format the USB drive and make it bootable:
    FORMAT /S C:
  6. Close QEMU.
  7. Remount the USB drive by unplugging it and plugging it back in.
    You could also do this at the command line.
  8. Copy over the BIOS update files.
  9. Unmount the USB drive with umount.

With that, your USB drive should be ready! To check it out within your Linux session, boot it in QEMU:

sudo qemu -hda /dev/sdc

Booted USB drive in QEMU

Doing the Update

Boot your PC from your USB drive. Follow your manufacturer’s guidance on using the BIOS update files. (If it’s an Intel update, you’ll likely run IFLASH2 with parameters found in an Intel README file.)

Leave a comment

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