How to update Lenovo BIOS from Linux without using Windows

I am using Lenovo laptop. I want to update my BIOS but do not have Windows installed my system. How do I update Lenovo BIOS from Linux without using MS-Windows operating system with the help of a USB stick?

This tutorial shows how to update the BIOS on a Lenovo ThinkPad that only runs Linux operating system. It is quite useful for users that do not have MS-Windows installed on the same system. The BIOS update also fixes bugs in Intel ME, provides Intel CPU microcode and other vulnerabilities such as Meltdown and Spectre. Hence I recommend updating BIOS to all.

Procedure to update Lenovo BIOS from Linux

  1. Download Lenovo BIOS Bootable CD for your Laptop model
  2. Use the geteltorito command to extract bootable image
  3. Run the dd command to write extracted image to USB stick or pen
  4. Reboot the laptop
  5. Interrupt boot process by pressing the ENTER key
  6. Press F12 key and select USB mass storage device as boot source
  7. The BIOS update utility should run now

Let us see all steps in details. I am going to update my BIOS for the Lenovo x230 laptop.

The procedure discussed here is for an older model of Lenovo ThinkPad and other models. These days latest models of ThinkPads support direct BIOS/Firmware updates using Linux CLI and GUI. See this guide about those options.

Step 1. Download Lenovo BIOS

Use Google or support.lenovo.com to search for “lenovo x230 bios”.

One can use the wget command or curl command to grab the bootable CD:
$ cd /tmp/
$ wget https://download.lenovo.com/pccbbs/mobiles/g2uj28us.iso

Step 2. Install geteltorito cli on Linux

Type the following apt command/apt-get command to install it on a Debian/Ubuntu Linux:
$ sudo apt install genisoimage
Fedora Linux user should type the following dnf command:
$ sudo dnf install geteltorito genisoimage
CentOS/RHEL user need to type the following yum command:
$ sudo yum install genisoimage
SUSE/OpenSUSE Linux user type the following zypper command:
$ sudo zypper install genisoimage
Arch Linux user install the geteltorito AUR package using the following method:

## Install pkgs to compile aur ##
sudo pacman -S --needed base-devel
 
## Use git to clone it ##
git clone https://aur.archlinux.org/geteltorito.git
 
## Build and install it ##
makepkg -si

Another option is to just grab the Perl script:
$ wget https://userpages.uni-koblenz.de/~krienke/ftp/noarch/geteltorito/geteltorito/geteltorito
$ chmod +x geteltorito

Step 3. Extract the image from iso file

geteltorito is an El Torito boot image extractor. The syntax is:
## Use geteltorito.pl on an Arch Linux ##
geteltorito -o {output-image-name.img {Bootable-CD.iso}
geteltorito -o x230.img g2uj28us.iso

Sample outputs:

Booting catalog starts at sector: 20 
Manufacturer of CD: NERO BURNING ROM
Image architecture: x86
Boot media type is: harddisk
El Torito image starts at sector 27 and has 65536 sector(s) of 512 Bytes

Write x230.img to the USB pen

You can identify USB stick with the following command:
$ dmesg | more
$ sudo blkid

Run the following command to write the image named x230.img to the USB stick:
$ sudo dd if=x230.img of=/dev/sdb bs=64K

Please note that you can display progress with dd command:
$ sudo dd if=x230.img of=/dev/sdc bs=64K status=progress
Finally, reboot your Linux based laptop with the reboot command or shutdown command:
$ sudo reboot
OR
$ sudo shutdown -h 0

Step 4. Updating the BIOS on Lenovo x230 laptop from Linux using a USB flash pen

First, interrupt boot process by pressing the ENTER key. Next hit the F12 key and select USB mass storage device as boot source. Make sure your laptop power supply plugged in. In some case, the battery must charge to 80-100%. Make sure you follow on screen info to update the BIOS.

Video demo: Updating the BIOS on Lenovo Thinkpad laptops from Linux using a usb pen

This video will give all guidance without using an old-fashioned MS-Windows or CD. You can update the BIOS on your Lenovo laptops from Linux using a USB flash stick:

Conclusion

You learned about updating Lenovo BIOS or firmware from Linux for older models. Newer models of Thinkpad support updating Linux using the CLI or GUI tools. See “Thinkpad update firmware on Linux (X1 extreme/P1 gen2)” for more information.

🐧 If you liked this page, please support my work on Patreon or with a donation.
🐧 Get the latest tutorials on SysAdmin, Linux/Unix, Open Source/DevOps topics:
CategoryList of Unix and Linux commands
File Managementcat
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network Utilitiesdig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
13 comments… add one
  • Jon Read Aug 18, 2020 @ 9:40

    Yaourt is no longer maintained or recommended for Arch and it’s derivatives, Yay is generally used now, although others are available.

  • Gontrand Sep 2, 2020 @ 15:56

    Hello,
    I have a lot of overheating problem with a Lenovo l13 that I recently bought, I run Xubuntu 20.04 ont it. It appears that some of these problems might come from the BIOS. I followed your method and everything runs smoothly until I reboot the computer, when I am on the boot selection screen, it recognizes the usb key on which I copied the iso image but if I select it I just get a black screen for half a second and then it goes back to the boot selection screen… How can I solve this?
    Cheers
    Regards

    • 🐧 Vivek Gite Sep 2, 2020 @ 20:33

      Did you download correct and extracted correct bios image for device?

    • Diogenes Sep 25, 2020 @ 7:37

      I have that same issue on my thinkpad t14, all you have to do is reboot the machine, so when you get to that screen, hold the power button until the screen goes black and it should work upon next boot.

    • anonymous Oct 28, 2020 @ 23:04

      I had the same problem. Solved it by temporarily disabling SecureBoot.

  • Pranoy Sep 2, 2020 @ 16:39

    How do i update the Bios for Lenovo G580 (ideapad). I have recently moved from Windows to Ubuntu 18. Any help will be highly solicited. TIA.

  • dosmanak Sep 11, 2020 @ 11:02

    Thank you for the tip. Usualy just dd iso to flashdisk is OK.
    I don’t know why this one is embeded in other layer and thank you for pointing geneltorito tool out.

  • somerandomuser Sep 16, 2020 @ 0:18

    What about a Bios update with a Lenovo Ideacentre 510/510A Series but not using Windows?

  • superjcvd Sep 18, 2020 @ 12:36

    Hello

    it seems to me that a much easier way would be to use fwupd

    https://wiki.archlinux.org/index.php/Fwupd

  • Daniel van Rossum Nov 11, 2020 @ 16:19

    Make sure the following BIOS setting is set, otherwise you’ll be unable to boot Lenovo’s image:
    Startup > UEFI/Legacy Boot > Both (or UEFI only)

  • fasodjfioaj Nov 22, 2020 @ 21:59

    first line you should say only works for iso images not for .exe.

Leave a Reply

Your email address will not be published. Required fields are marked *

Use HTML <pre>...</pre>, <code>...</code> and <kbd>...</kbd> for code samples.