Dell PowerEdge BIOS Upgrade on Linux

Dell only provides certain PowerEdge BIOS flash upgrades in the form of Windows-only self-extracting archives (despite the facts that they claim to officially support Linux and that the BIOS flash utility itself is a DOS program.) Ordinary unzip won’t open the self-extracting archive. You need to run it on a Windows system, which I don’t have. Here’s how to flash your PowerEdge BIOS without Windows.

Dell provides the biosdisk utility to make a bootable FreeDOS image with the BIOS upgrade executable on it, but it doesn’t work with the Windows-only PowerEdge 4400 BIOS upgrade, since that won’t run on FreeDOS. They claim that biosdisk isn’t intended for PowerEdge systems, since they all have Linux BIOS flashes available; this does not seem to actually be the case for the 4400.

The Windows self-extractor does run under WINE, but it demands an actual floppy drive device to write to, which my computer doesn’t have. WINE also doesn’t seem to support mounting an image file as a floppy device, for some reason. You’ll need to use something like VMWare or a computer with a physical floppy drive to get this to extract itself.

Once you have a floppy image, here’s how to flash without biosdisk or Windows available:

  1. Use WINE to extract the archive. For maximum fun, the upgrade I have refuses to just extract itself; instead, it requires that it has access to a floppy drive to write to directly. Sigh. Ok. Working on that. Updates to come. winecfg
  2. Install syslinux. (apt-get install syslinux). We are going to use memdisk, a boot loader that creates a RAM drive and then loads an operating system, to load FreeDOS.
  3. Get a FreeDOS boot disk image and add your flashing .exe to it.Mount with something like mount -t vfat /path/to/freedos.img /mnt -o loop, then just cp your flashing .exe to /mnt. (If you got a gzipped image, gunzip it first.
  4. Edit /etc/grub.d/40_custom to add a boot menu entry for memdisk/FreeDOS.
    menuentry "FreeDOS" {
        set root=(hd0,2) #### <--- Change this to your /boot partition!
        linux16 /memdisk floppy
        initrd16 /freedos.img
    }
    

    As noted, change the root entry to point to your actual /boot partition, so GRUB can find the images. Also note that the partition normally mounted at /boot will be mounted as the root directory (/) at boot time, so it’s not necessary to prefix /boot before the image file names.

    Then, reboot and select FreeDos from the GRUB menu. Run your DOS-based flash program, and all is well.

Comments are closed.