I recently added additional memory to my Vostro taking the total up to 4gb, however, an out of date BIOS meant that not all of this was available to Ubuntu.

Dell provides a method for updating many system BIOS using firmware-tools packages and the process outlined here. Unfortunately, the Dell Vostro 200 and a number of other systems are not supported. As an alternative, it is suggested that you can use the Dell biosdisk project, however, if you try this you'll quickly realise it does not work - attempting the upgrade spits out the rather cryptic "Error! udosexe = -5". You also get this error attempting to use the method in this howto.

The error is caused because the Dell BIOS updater is a compressed archive containing both the BIOS image (2mb) and an installer. Unpacking that on a 1.44MB disk will not work. Frustratingly, it will also not work on a 2.88MB disk, because the compressed archive+unpacked contents is too big!

At this point you have two options - either create a bootable USB stick on Windows or do what I did (below):

First we want to create a 2.88MB disk image (1.44MB is too small for the 2MB BIOS code) and mount it. Note that FreeDOS don't provide an 'empty' 2.88MB boot disk so we need to delete the fdos folder to get space.

cd ~
wget http://www.fdos.org/bootdisks/autogen/FDSTD.288.gz
gunzip FDOEM.288.gz
mkdir /tmp/floppy
sudo mount -t vfat -o loop,quiet,umask=000 FDSTD.288 /tmp/floppy
rm -rf /tmp/floppy/fdos
Next we need to install dosemu (a DOS emulator) so we can extract the BIOS files from the Dell installer but with unlimited diskspace.

sudo apt-get install dosemu
You should get a window pop up that looks like DOS with the C drive active. What you are actually seeing is a dosemu 'virtual' drive, who's actual location on your Ubuntu system is ~/.dosemu/drive_c

Go to the Dell website and click to download the BIOS updater and choose where to save it. In the file box go to your home folder, right click in the folder list and select 'Show hidden files'. You should now be able to see the .dosemu folder and the drive_c one within. Save the file into the drive_c folder and once download is complete type the following in the DOS box:

You should see your file listed there.

Type the name of the BIOS file and hit return to start it up. You should see a 'Copyright (c) Foxconn LTD 2001-2007...' message and importantly messages 'Decompress the exe file' and 'Decompress the bin file'. Unfortunately, you'll also notice that there is an error message and 'ALL Files removed!' at the bottom. So this is where you need to get quick with your fingers!

Run the BIOS upgrade file again in the DOS box, and wait until it says 'Decompress the bin file'. Now press Ctrl-C on the keyboard to cancel and exit the program. As the exe file was already decompressed it will now be on the drive.

You should see (along with a lot of other files) another file with an EXE extension. In my case this is AFU877.EXE but it may differ if you're doing a different update (e.g. not on a Vostro 200) let me know. Note it down and make sure you amend any following instructions if needed.

Now we need to copy this file to our boot image disk. In the shell window (not the DOS box) type:

cp ~/.dosemu/drive_c/afu877.exe /tmp/floppy/afu877.exe
Now we need the BIOS update BIN file. So back in th DOS box, rerun the BIOS update file. Now you need to be very quick at this bit! Wait until after the 'Decompress the bin file' has finished, the first message is 'begin to check the bin file!'. Hit Ctrl-C again to cancel the deletion of the files. It doesn't matter if you miss it, just re-run the program until you get it right. Note that you will still get the 'ALL Files removed!' message, but it hasn't happened. You can check the file is there by typing:

You're looking for a file named 713D1S49.BIN that is 2MB (2,097,152). Once you've got that you can give the hands a rest. Now back in the shell type the following:

cp ~/.dosemu/drive_c/713d1s49.bin /tmp/floppy/713d1s49.bin
That's it for the DOS stuff so you can close the DOS box down. Now to tidy up and prepare to run the update.

sudo umount /tmp/floppy
rmdir /tmp/floppy
sudo mv FDSTD.288 /boot/biosupdate.img
sudo apt-get install syslinux
sudo cp /usr/lib/syslinux/memdisk /boot/
You now need to add the biosupdate boot image to your grub menu. You can do this from the command line as shown below, or run your favourite text editor (e.g. gedit or kate) as root.

sudo vim /boot/grub/menu.lst
Once you have the file open, simply add the following lines to the end.

title       BIOS upgrade
kernel      /boot/memdisk
initrd      /boot/biosupdate.img
Save the file and restart your computer. At the grub menu press 'ESC' and scroll down the list to select the final entry. FreeDOS should now start up and you will get a prompt whether to load various things (HIMEM/etc.) press 'N' until you get to the end with an A:> prompt.

Start the BIOS update by typing the following:

afu877 713d1s49.bin
All done! Thanks for ciscosurfer's howto which formed the basis for getting this working!