HOWTO: Flash BIOS using FreeDOS and Grub

## DESCRIPTION ##

      Since most BIOS updates only come in the format of a EXE/DOS boot disk, here's a way to use FreeDOS and GRUB to get your BIOS updated. For this example, I will be using my Dell XPS M1730 Laptop.  All of the following was done using Ubuntu Karmic.

 

## REQUIREMENTS ##

I got my updated BIOS from here:
http://support.dell.com/support/downloads/

FreeDOS fdboot.img file from here:
http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.0/

 

## PROCEDURE ##

Extract the BIOS EXE file using unrar, wine, or (for my Dell BIOS) I needed to make an image out of.  So I had to go install biosdisk:

http://linux.dell.com/biosdisk/

I downloaded the latest biosdisk-git-DATE.tar.gz file, and untarred it.  Then, changed into the directory and typed:

sudo ./install.sh

I was then able to make a img file out of the bios by running:

sudo biosdisk mkimage MXG71A10.EXE

It came back with the following message:

Creating BIOS floppy image at /tmp/MXG71A10.img

I had to get the BIOS Update out of that image file, so I loopback mounted it and copied over the file:

sudo mkdir /mnt/floppy
sudo mount -t vfat -o loop /tmp/MXG71A10.img /mnt/floppy
sudo cp /mnt/floppy/mxg71a10.exe ./
sudo umount /mnt/floppy

 

Now it was time to update my FreeDOS image:

sudo mount -t vfat -o loop fdboot.img /mnt/floppy
sudo cp mxg71a10.exe /mnt/floppy/
sudo umount /mnt/floopy
sudo cp fdboot.img /boot/

 

Now edit /etc/grub.d/40_custom

sudo vi /etc/grub.d/40_custom

Type the following lines at the end of the file:

menuentry "FreeDOS" {
    linux16 /boot/memdisk
  initrd16 /boot/fdboot.img
}

Now tell grub to not timeout, and un-hide the selection (otherwise you won't be able to select FreeDOS)

sudo vi /etc/default/grub

Comment out the line:

#GRUB_HIDDEN_TIMEOUT_QUIET=true

...and make the TIMEOUT -1

GRUB_TIMEOUT="-1"

....you'll probably want to undo these two updates after everything is completed.

Now run update-grub:

sudo update-grub

You are (finally) ready to reboot.  When you reboot, you'll have to select the FreeDOS grub option, and FreeDOS should fire up. MAKE SURE YOU PICK SAFE MODE:
freedos

From there, you should be at an A:\ prompt.  So, just launch the bios update:

mxg71a10.exe

From there, you pretty much just hit to tell it to Flash your BIOS. Reboot when done, and tada!!!

## CONCLUSION ##

I have done this procedure on my Dell XPS M1730 Laptop, as well as my manually built up Gigabyte motherboard, gaming PC.  The only real difference is finding a way to get the DOS-based BIOS update out of the proprietary file, and onto the FreeDOS image.  Once that method is found, you should be smooth sailing.