Upgrade Lenovo BIOS with FreeBSD

This post talk about upgrading UEFI/BIOS on a Lenovo laptop with FreeBSD. I am pretty sure that it can apply to any UEFI/BIOS and any BSD OS family.

The but difficulty is that ALL the computer vendor think we use Windows (Windows 10 now), some (Lenovo does) knows about Linux (ubuntu or redhat).

All the tools they provided are for those platforms. The dual-booters can do the upgrade, the fanatics (like me) can’t

But you all know that upgrade UEFI/BIOS is almost event important for security than upgrade the OS.

Some body already think about the problem and created a small perl script that were going to use. It names getelrito and the author is Rainer Krienke.

Find the last version of the BIOS/UEFI for your computer

You should look at the vendor website and find an iso file. For Lenovo (I know that many *BSD community use Lenovo laptop), it’s there.

You need to select your computer (mine is a X280).

The next page will ask you for the serial number of your computer.

Damn it! It’s behind the computer or below the computer, and all those cables ARGGGH.

Be cool and use the OS Luke.

dmidecode -t system 
# dmidecode 3.2
# SMBIOS entry point at 0x7a6a4000
Found SMBIOS entry point in EFI, reading table from /dev/mem.
SMBIOS 3.0 present.

Handle 0x000C, DMI type 1, 27 bytes
System Information
	Manufacturer: LENOVO
	Product Name: 20KFCTO1WW
	Version: ThinkPad X280
	Serial Number: SERIAL_NUMBER_IS_HERE
	UUID: 62e02abcd-281f-11b2-a85c-f4323cad6e34
	Wake-up Type: Power Switch
	SKU Number: LENOVO_MT_20KF_BU_Think_FM_ThinkPad X280
	Family: ThinkPad X280

Handle 0x0022, DMI type 12, 5 bytes
System Configuration Options
[snip]

Then select Drivers and Software and BIOS/UEFI.

There is a BIOS Update (Bootable CD) entry, We want that!

Download the iso image

I think you don’t need me to know how-to download a file to your computer, isn’t it?

Download geteltorito

You know what? It’s part ports. You simply have to install it with pkg, or compile it from sources, or use your poudriere.

To download source follow this link.

Using geteltorito

Very simple. Just give the path of the downloaded ISO and redirect STDOUT (or use -o option) for the output.

geteltorito n20ur25w.iso > n20ur25w.img

Put the resulting file into an USB stick

With the dd command, it’s pretty simple and very fast.

Be sure to look at the correct device with dmesg.

dd if=n20ur25w.img of=/dev/da1 bs=1M status=progress

Last steps

Now, reboot your computer, choose to boot on the USB Stick and follow the instructions.

Thanks

Thanks to geteltorito, Rainer Krienke the creator and Valerio Daelli, the package maintainer.

{ Pengouin(BSD|Pdt) } from fediverse confirm that geteltorito exist for OpenBSD.