Creating a DOS usb stick on Linux

As hardware usually is shipped broken, it is often necessary to update the crappy software on these broken devices with a firmware update. Some vendors have Linux/Unix tools for this task, but most only have fireware update “tools” which need to be run from DOS.

This is a big problem for me, as I do neither use DOS or Windows on my machines. Setting up a FreeDOS boot stick from Linux can be a difficult task. There are some tutorials on how to do this on the net. However, most of them did not work for me, i.e. the stick would not boot.

The only tutorial which really worked was one from More exactly, the using “Using balder10 and qemu under Linux” was the only thing that worked for me:

You need to install dd and qemu on your system. Then, download the balder10.img, which is a FreeDOS image.

Plug in your USB stick and find the device name. You can check dmesg for that. You can also erase the MBR on the stick by running

dd if=/dev/zero of=/dev/ bs=1024 count=2

as written on However, I do not think this is necessary.

Boot the balder10.img using qemu with:

qemu -boot a -fda ./balder10.img -hda /dev/sdc

This will boot from the image and mounts the image at A: and your Stick as C: (if it has a FAT partition on it. If it does not have a FAT partition, you need to create one using fdisk on the image. If you have created a new partition, you need to reboot qemu in order to make the changes visible to Dos. Afterwards, you can create the DOS image by running

format C: /s
xcopy A: C: /N /E

which will create a DOS files ystem on your stick and will also create the boot records. You can now boot from your USB stick.

When I booted from my stick, the partition on the stick appeared at C:. However, the Dos image expects to boot from A: and will set all PATHS to point to drive A:. If you have the same problem, check every .BAT file on your stick for the string A: and replace it with C:. This will fix your problems.