Updating your BIOS without a floppy


This note refers particularly to updating the BIOS on an IBM Thinkpad T23 laptop and a Dell Dimension 4550 desktop. However, the procedure is reasonably generic and should work anywhere.

The issue here is that many vendors release BIOS updates either as Windows executables or as floppy-disk images. Dell doesn't even give you a floppy image; it gives you a Windows executable that creates an image. For those of us who have neither Windows nor floppy drives, this can be a problem. There are two solutions here, both of which involve creating a floppy image and booting it without using a floppy. You can either use the floppy image to boot a CD, or you can boot the image directly using grub and syslinux.

I updated the BIOS on the laptop last year using directions from thinkwiki.org. Since thinkwiki has detailed instructions, I won't rewrite them here. Thinkwiki's is the CD approach. It has the advantage that it's OS-independent: it works on any system that can write an El Torito CD (El Torito is a standard for making bootable CDs). The disadvantage of course is that you need to use a CD.

Alternatively, you can use the following method, which is specific to Linux and the grub boot-loader but doesn't need any hardware. (There are ways to do similar things on OpenBSD---man vnconfig---but I don't know specifics.)

  1. First, you need to download the "non-packaged" version of Dell's BIOS-upgrade utility. The A08 BIOS for the Dimension 4550 is here; the most recent T23 BIOS is here. On a different system you should try to get the stand-alone executable from your vendor (most vendors provide a floppy version, a hard-disk version, and a stand-alone executable). In the steps below, I'll assume that this file is called D4550A08.EXE.
  2. Download and unzip the FreeDOS OEM boot-disk image from the FreeDOS page. In the steps below I'll assume that this file is called FDOEM.
  3. If you don't have syslinux, either get it using your distribution's package-management system or download it here.
  4. Copy the executable to the disk image:
    1. Mount the disk image (you'll need to have loopback and MS-DOS-filesystem modules in your kernel):
      # mount -o loop FDOEM /mnt
    2. Copy the executable:
      # cp D4550A08.EXE /mnt
    3. Unmount the disk image:
      # umount FDOEM
  5. Tell grub to boot your modified disk-image. The steps below will add an entry to your grub menu that'll do this, but you could instead do it manually from grub's command-line if you're comfortable with grub. You should probably read the grub man-page before you do this anyway.
    # mkdir /boot/bios-upgrade
    # cp /usr/share/syslinux/memdisk /boot/bios-upgrade
    # cp FDOEM /boot/bios-upgrade
    # cat >> /boot/grub/menu.lst << EOF
    title BIOS upgrade
        root (hd0,0)    # this will vary depending on your system
        kernel /boot/bios-upgrade/memdisk
        initrd /boot/bios-upgrade/FDOEM
    EOF
  6. Reboot the machine, select the "BIOS upgrade" item in the grub menu, and run D4550A08.EXE from the DOS command-line.



author: Moy Easwaran; last modified: January 15, 2007 hits: [an error occurred while processing this directive]