I recently purchased a Dell Mini 1012 on Ebay and wanted to ensure it had the latest BIOS update from 2011. Dell’s website provides an exe, but I rarely boot into Windows. I managed to find a Linux-only workaround.

What I Tried

It was a bit of a journey. If you want the TL;DR, go to the next section.

  1. According to Ubuntu’s Dell BIOS page you can flash the BIOS using FreeDOS and a USB stick. Sounds promising.
  2. On a Linux machine I downloaded the “Lite USB” version of FreeDOS
  3. Flashed it to a USB stick with a command like this: dd if=./FD12LITE.img of=/dev/sde bs=4M conv=fsync status=progress
  4. Mounted the filesystem with a command like this: mount /dev/sde1 /mnt/other
  5. Tried to copy the BIOS exe into /mnt/other but there was no space on the filesystem. The FreeDOS image makes a very small FAT16 filesystem on the device
  6. I then tried to resize the filesystem (to give me enough free space for the BIOS exe) using gparted but gparted wasn’t able to resize
  7. I considered doing the same with the CDROM image, but really didn’t want to resize any partitions at all …
  8. Then I realized I could likely gain free space by deleting files from the FULL version of FreeDOS
  9. So I downloaded the “Full USB” version of FreeDOS instead
  10. Wrote it to the USB stick (same as above)
  11. Mounted the filesystem
  12. Explored the contents and ultimately decided to delete the packages/games folder since it was large
  13. Copied the BIOS exe to /mnt/other
  14. Unmounted the filesystem
  15. Booted with it
  16. Skipped FreeDOS installation to go back to DOS. Believe it was second menu option
  17. Tried to run the BIOS exe. Grr, it said it can only be run from within Windows.
  18. Uhhhhh
  19. I checked the notes associated with the BIOS exe on Dell’s website and saw this: “This file contains a compressed (or zipped) set of files. Download the file to a folder on your hard drive, and then run (double-click) it to unzip the set of files”.
  20. I thought to my self: Ok, it’s a self-extracting exe. That must be a pretty standard format. I wonder if the unzip command on Linux can extract it?
  21. Turns out unzip CAN extract a self-extracting exe. Yes!
  22. I remounted the USB filesystem to /mnt/other, navigated to it within a terminal
  23. Ran: unzip ./R30BLABLA.exe
  24. It extracted the contents within the USB stick
  25. Woo!
  26. umount /mnt/other
  27. Reboot laptop
  28. Skip FreeDOS install, menu option 2
  29. Run exe that isn’t prefixed with “win”
  30. Watch while the BIOS is flashed

What Actually Worked

Condensed steps from my journey above.

  1. On a Linux machine, download the “Full USB” version of FreeDOS
  2. Flash it to a USB stick: dd if=./bla.img of=/dev/sde bs=4M conv=fsync status=progress
  3. Mount the filesystem: mount /dev/sde1 /mnt/other
  4. Explore the contents and (IIRC) delete the packages/games folder to clear some space
  5. Copy the BIOS exe to /mnt/other
  6. Run this to extract the self-extracting exe: unzip R30BLABLA.exe
  7. umount /mnt/other
  8. Reboot laptop
  9. Skip FreeDOS install, menu option 2
  10. Run exe that isn’t prefixed with “win”
  11. Watch while the BIOS is flashed

Today I Learned

  • You can extract a self-extracting exe using unzip on Linux