Update system BIOS on a Linux machine with a Windows/DOS updater

I recently had to update my BIOS on my Toshiba Portege R705 laptop. Unfortunately, the updater can only be run on a Windows/DOS system. Luckily, I remembered reading this article on Linux Journal that described how one can boot into FreeDOS to update the system BIOS. I will outline what I did.

  1. Find a USB drive with a capacity < 2 GB.
  2. Using GParted, format the drive to be FAT16.
  3. Download fdbasecd.iso and install qemu (sudo apt-get install qemu).
  4. Boot up FreeDOS with qemu: qemu -hda /dev/sdb -cdrom /path/to/fdbasecd.iso -boot d (assuming usb drive is /dev/sdb). Continue booting from “cd-rom” (iso file) and install FreeDOS to “harddisk” (usb stick) with default values.
  5. Do not reboot system after FreeDOS is done installing. Type following in DOS prompt:
  <pre class="src src-sh">fdisk /mbr 1

cd edit fdconfig.sys ## for line that starts with “SHELLHIGH…”, change to “1234?SHELLHIGH…” ## save: Alt-f ## exit to Dos, exit qemu

  1. Test if USB drive will boot using qemu: qemu -hda /dev/sdb -boot c
  2. Copy .exe file into usb drive. When I tried executing it in FreeDOS, it says it can’t because it is a Win32 file. I extracted the EXE file and read the README. It contained some files I can run in DOS.
  3. Restart system and boot with USB drive. On my Toshiba laptop, I had to press ESC then F12 to select USB drive.
  4. Once in DOS, run the command to update BIOS. NOTE: I take no responsibilities for your actions. Update your BIOS at your own risk. You can brick the machine if you aren’t doing things correctly or use the wrong BIOS file.