BIOS Upgrade with FreeDOS on a Linux USB removable device
Introduction
As of writing (Nov 2019), unetbootin doesn't support versions of FreeDOS more recent than 1.0 (current version is 1.2).
The following procedure worked to upgrade a Dell XPS18 from a A06 to the A10 BIOS.
Some notes before starting:
- You can check the current BIOS version.
- Possible that it can be observed when booting (under the Dell logo).
- Press F12 at boot and enter the setup. On the first setup page all system settings are shown, including BIOS version and Dell Tag code (necessary to download software drivers including BIOS).
- If the Latest BIOS is already installed read no further and exit here!
- Dell BIOS updates are always delivered as .EXE files. Modern (after 2016) Dell machines have a BIOS upgrade option in the F12 pop-up menu. Earlier machines need an approach were the .exe file can be read and executed.
- Laptop users should not attempt this without AC power
- This is dangerous, and you assume all risk for following this procedure.
- Backup on an external device all important information (documents, programs and other) before attempting to follow this BIOS upgrade procedure.
Procedure
- Create a bootable USB device.
- Use a tool as
Gparted to do this.
- Create a 'GPT' partition table.
- Create a new partition, FAT32, and set the boot/esp/lba flags.
- Format the partition and give it a name to easily recognize it.
- Download from Dell the latest BIOS for your computer.
It will be something as "
ComputerType_BiosVersion.exe" (XPS18_A10.exe).
- Grab the latest USB installer from the FreeDOS Download Page.
-
https://www.freedos.org/
- The latest version at the time of writing is version 1.2.
- It is possible to download several versions of the Freedos OS but since CD's and Floppy's are outdated, the only valuable download can be that for USB.
- Download and save the "Full" version on suspicion that it might include more than the "Lite" version.
- Extract the archive:
- This produces three files.
- Keep only the
.img file.
- Determine which of
"/dev/sdX" is your USB stick (use
"fdisk -l" )
- Write the image directly to the block device:
-
dd if=FD12FULL.img of=/dev/sdX status=progress
where
X is the letter representing your USB stick as a block device.
Don't write the image to a partition)
- Double-check that the image copying worked:
- Run
fdisk -l in a terminal.
It should show a single partition on a DOS disk with the bootable ("boot" *) flag set.
- Mount the USB drive.
- In most cases it's enough to unplug the USB drive and plug it back in to mount it.
- Else, run the "
disks" tool and click the mount button for the USB drive.
- Copy the downloaded and saved Dell BIOS .exe used to update your firmware.
- First rename the file (remove the
undersore).
- Stay on the safe side and limit the filename to 8 characters (without extension).
- Use only upper case characters.
- Ensure that you verified any checksums provided by your hardware vendor.
- Unmount the USB disk.
- Plug it in another PC (not booted yet).
- Leave it in the PC used to create the USB disk.
- Boot or reboot and do whatever is needed to boot from the USB drive.
- For Dell devices:
- When the Dell logo is presented hit the F12 key a couple of times and watch the "boot options" message change style.
- Select the "boot form USB" in the legacy menu part.
Freedos
Freedos will boot from the USB drive.
- In my case I had to hit the F5 key during the boot process to get the classic "C:\>" prompt.
If I didn't do this the PC went beeping continuously (only way to get rid of it - shut down the PC).
- A different scenario can happen and then Freedos will ask questions.
- Select your language.
- A prompt to install FreeDOS might appear
-
Select "No - Return to DOS"
- Now the `C:\>` prompt shoul pop up.
- Run `dir` and verify that the firmware upgrade .exe tool is present.
- Run the executable, type '
<
filename>.exe'
- Let the PC do it's job.
- Don't be too impatient and don't touch the PC during the update process!
- Once the process completes verify the new BIOS version.
- Through the BIOS setup screen (F12 menu).
- As well as by running
dmidecode when you're back in linux.
06 Nov 2019