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.
- According to Ubuntu’s Dell BIOS page you can flash the BIOS using FreeDOS and a USB stick. Sounds promising.
- On a Linux machine I downloaded the “Lite USB” version of FreeDOS
- Flashed it to a USB stick with a command like this:
dd if=./FD12LITE.img of=/dev/sde bs=4M conv=fsync status=progress
- Mounted the filesystem with a command like this:
mount /dev/sde1 /mnt/other
- 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
- 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
- I considered doing the same with the CDROM image, but really didn’t want to resize any partitions at all …
- Then I realized I could likely gain free space by deleting files from the FULL version of FreeDOS
- So I downloaded the “Full USB” version of FreeDOS instead
- Wrote it to the USB stick (same as above)
- Mounted the filesystem
- Explored the contents and ultimately decided to delete the packages/games folder since it was large
- Copied the BIOS exe to /mnt/other
- Unmounted the filesystem
- Booted with it
- Skipped FreeDOS installation to go back to DOS. Believe it was second menu option
- Tried to run the BIOS exe. Grr, it said it can only be run from within Windows.
- Uhhhhh
- 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”.
- 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? - Turns out
unzip
CAN extract a self-extracting exe. Yes! - I remounted the USB filesystem to /mnt/other, navigated to it within a terminal
- Ran:
unzip ./R30BLABLA.exe
- It extracted the contents within the USB stick
- Woo!
umount /mnt/other
- Reboot laptop
- Skip FreeDOS install, menu option 2
- Run exe that isn’t prefixed with “win”
- Watch while the BIOS is flashed
What Actually Worked
Condensed steps from my journey above.
- On a Linux machine, download the “Full USB” version of FreeDOS
- Flash it to a USB stick:
dd if=./bla.img of=/dev/sde bs=4M conv=fsync status=progress
- Mount the filesystem:
mount /dev/sde1 /mnt/other
- Explore the contents and (IIRC) delete the packages/games folder to clear some space
- Copy the BIOS exe to /mnt/other
- Run this to extract the self-extracting exe:
unzip R30BLABLA.exe
umount /mnt/other
- Reboot laptop
- Skip FreeDOS install, menu option 2
- Run exe that isn’t prefixed with “win”
- Watch while the BIOS is flashed
Today I Learned
- You can extract a self-extracting exe using
unzip
on Linux