How to upgrade BIOS on a Lenovo laptop running linux
Usually, Lenovo releases BIOS updates in two formats: a single .EXE file, that needs to be executed on a Windows OS, and a .ISO file that needs to be burned on a CD.
But, how can i perform the upgrade if my laptop doesn't have the CD reader and my OS is Linux?
My solution is burn the ISO file on a bootable USB stick.
How? Very simple, the keyword is El Torito!
What is El Torito?
The El Torito Bootable CD Specification is an extension to the ISO 9660 CD-ROM specification, introduced in the 90's and designed to allow a computer to boot from a CD-ROM.
This specification is used till today for bootable ISO images.
In order to convert a ISO file into an image suitable to make a bootable USB stick, we need to extract from the ISO the ElTorito virtual disk section, that contains the bootable image:
~$ isoinfo -i g6uj32us.iso -d
CD-ROM is in ISO 9660 format
System id:
Volume id: G6ETC5WW
Volume set id:
Publisher id:
Data preparer id:
Application id: NERO BURNING ROM
Copyright File id:
Abstract File id:
Bibliographic File id:
Volume set size is: 1
Volume set sequence number is: 1
Logical block size is: 2048
Volume size is: 16566
El Torito VD version 1 found, boot catalog is in sector 20
Joliet with UCS level 3 found
NO Rock Ridge present
Eltorito validation header:
Hid 1
Arch 0 (x86)
ID 'NERO BURNING ROM'
Key 55 AA
Eltorito defaultboot header:
Bootid 88 (bootable)
Boot media 4 (Hard Disk Emulation)
Load segment 7C0
Sys type 6
Nsect 1
Bootoff 1B 27
Few simple steps…
- First, find on Lenovo support website the correct iso download (in this example I'm using an X1 Carbon 1st Gen):

- Download the ISO file:
$ wget https://download.lenovo.com/pccbbs/mobiles/g6uj32us.iso
- (Optional) If not already present on your system, install the correct ISO tools.
For example, on my Debian 10:
$ sudo apt install genisoimage
- Extract the image using geteltorito utility:
$ geteltorito -o lenovo.img g6uj32us.iso
- Finally, write the image on a USB stick:
$ sudo dd if=lenovo.img of=/dev/sdb bs=64K status=progress
Now, simply restart the laptop, boot from USB and start the upgrade process.
That's all, folks!