Update BIOS via FreeDOS on Linux PC

BIOS update via FreeDOS works across many PCs, including Dell and Gigabyte. The key is that the OEM provides BIOS as a DOS executable.

Setup DOS-bootable USB drive

  1. Download the DOS-flashable BIOS firmware from the OEM e.g. support.dell.com
  2. determine (carefully, as it will be erased!) which device (e.g. /dev/mmcblk0) your USB drive is by issuing this command before and after USB drive insertion:

     lsblk
    
  3. Format (permanently erase) this USB drive with

    umount /dev/mmcblk0
    
    mkdosfs -F 32 /dev/mmcblk0
    
  4. Download the FreeDOS “USB Full Image” and extract the FD*.img file.

  5. Write this image to the USB stick:

    dd if=FD*.img of=/dev/mmcblk0 bs=4M
    

    the image write will take a minute or two, depending on the write speed of the USB stick. To be sure it’s done, wait for this command to exit in a second Terminal window:

sync

Update BIOS

  1. Extract/copy ALL the BIOS self-extracted files to the root of the FreeDOS flash drive from Linux.
  2. Insert the USB flash drive into the PC to be flashed
  3. Upon powerup, choose to boot from the USB drive. This might require pressing F12 key. In the BIOS boot device menu, look under Legacy boot. If Legacy boot is not enabled, it may need to be enabled to see the FreeDOS USB drive.
  4. Do NOT install FreeDOS, just boot to DOS when prompted by FreeDOS.
  5. In FreeDOS prompt, type the name of the .exe or .bat file for the firmware update as per OEM instructions. The flashing process may take several minutes.

Notes/Problems

If the PC says

operating system not found

on this DOS USB drive, try it in another PC. If it still doesn’t work, try another model of USB flash drive. Some flash drives just are not amenable to being booted from.

New dead motherboard?

If your new motherboard seems to be dead out of the box, and you’re sure the power supply is working and connected correctly, you may have a CPU that’s too new for the motherboard BIOS. This happened for Gigabyte GA-Q87M-D2H with version F6 BIOS–version F7 BIOS was necessary for Haswell Refresh CPUs. I had to put an “old” CPU in to flash the motherboard first.