I have an old motherboard that requires creating a DOS boot floppy in order to upgrade its BIOS. Fortunately, it's not too hard to do this with FreeDOS and a USB stick.

The instructions below are based on an FDos wiki article.

Downloading the dependencies

The first step is to download the required files from your motherboard manufacturer:

  • the latest BIOS image
  • the BIOS flashing program

and then install the tools you'll need:

apt-get install makebootfat syslinux

Preparing the "floppy" image

Start by collecting all of the files you need to install FreeDOS on the USB stick:

cd /tmp  

wget http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.0/pkgs/commandx.zip  
wget http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.0/pkgs/kernels.zip  
wget http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.0/pkgs/substx.zip  
wget http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.0/pkgs/unstablx.zip  

for ZIP in *.zip; do unzip $ZIP; done  

cp ./source/ukernel/boot/fat16.bin  .  
cp ./source/ukernel/boot/fat12.bin .  
cp ./source/ukernel/boot/fat32lba.bin .  

cp /usr/lib/syslinux/mbr.bin .

and then create a directory for the files that will end up in the root directory of the "floppy":

mkdir /tmp/fs-root  
cp ./bin/command.com /tmp/fs-root/  
cp ./bin/kernel.sys  /tmp/fs-root/  

and copy the BIOS image and update program into that same directory (/tmp/fs-root/).

Creating a bootable USB stick

Plug in a FAT-formatted USB stick and look for the device it uses (/dev/sdb in the example below).

Finally, run makebootfat:

/usr/bin/makebootfat -o /dev/sdb -E 255 -1 fat12.bin -2 fat16.bin -3 fat32lba.bin -m mbr.bin /tmp/fs-root