How to access and update firmware (BIOS/UEFI) settings from Linux using systemctl and systemd

Last update: 09/06/2025
Author Isaac
  • Access to firmware from Linux It's easier thanks to UEFI and systemd.
  • Updating BIOS/UEFI and microcode requires precautions and official sources.
  • systemctl reboot --firmware-setup allows, when supported, to reboot directly to the firmware setup.

UEFI BIOS

In the world of operating systems, accessing firmware settings (BIOS/UEFI) from Linux, especially through commands , the systemctl reboot --firmware-setup, is an increasingly demanded resource. With the advent of ultra-fast boot times, traditional methods such as repeatedly pressing a key upon powering on can become ineffective or impractical. Therefore, users are looking for direct, secure, and modern ways to interact with firmware from modern distributions using systemd.

In this article, I'll give you a detailed and comprehensive look at everything related to accessing, managing, and updating firmware (BIOS/UEFI) and microcode on contemporary Linux systems. In addition, you will learn to understand the process of Boot, the function of UEFI, the role of systemd, and the associated risks and precautions, so you can manipulate your system safely and accurately. Throughout the text, you'll find advanced tips, Tricks helpful and clear explanations tailored for both novice users and advanced system administrators.

What is firmware and why is it important?

Firmware is the basic software built into your computer. hardware which controls its operation at low levels. Among the most well-known types of firmware we find the BIOS (Basic Input/Output System) or its successor, UEFI (Unified Extensible Firmware Interface). Additionally, each component of your computer—hard drive, network card, CPU, etc.—can have its own firmware.

Updating the firmware, as well as accessing its settings, is essential. to ensure that the hardware operates optimally, securely, and is compatible with new versions of operating systems and applications.

What is UEFI and how has it changed?

The arrival of UEFI has revolutionized the old BIOS. UEFI not only includes new features, but also introduces a more secure, faster, and flexible boot process. Its main advantages include support for large disks, the ESP (EFI System Partition) partition system, and the ability to run EFI applications external, extended functionalities and more advanced settings than the traditional BIOS could ever offer.

Furthermore, UEFI allows the operating system to have some control over booting. and firmware management even from the system itself, which facilitates, for example, direct reboot to the firmware setup without having to quickly press a specific key during boot.

Boot process on modern Linux systems

Booting a Linux system is a process structured in several phases:

  • Firmware (BIOS/UEFI): initializes and checks the hardware.
  • Boot loader (like GRUB2): loads the operating system kernel and the initramfs/initrd.
  • System initialization: Through systemd in most current distributions, it manages system and user services and units.

On UEFI machines, it all starts with the firmware reading the ESP partition. to find the boot loader. Once the kernel is loaded, systemd is activated as PID 1, the parent process of all services.

  What is the best way to locate a name with a mobile phone number?

systemd, systemctl and firmware access

systemd is now the default startup and service management system in many Linux distributions (Debian, Ubuntu, Arch, Fedora, etc.).

The command systemctl reboot --firmware-setup allows, on supported computers, to directly reboot the system to enter the UEFI firmware configuration, without pressing any strange keys or interrupting the boot.

Not all devices support this feature. It depends on the firmware implementation and whether your distribution and kernel have been compiled with the option enabled. Still, it's a huge improvement in terms of usability and accessibility.

Steps to access UEFI firmware settings from Linux using systemctl

Follow these steps to ensure you can access your firmware settings from Linux:

  1. Verify that your computer boots in UEFI mode. You can check this by running ls /sys/firmware/efi; if content appears, you are using UEFI.
  2. open one terminal with administrator privileges. On most distributions, you can do this using sudo before the commands.
  3. Run:
    sudo systemctl reboot --firmware-setup

    The system should reboot and automatically enter the UEFI firmware setup screen.

  4. If the command doesn't work, your firmware may not support it or your kernel/distribution may not be up to date. Please consult your motherboard's specific documentation and consider upgrading your system.

Other ways to enter BIOS/UEFI from Linux, Windows and Mac

There are alternatives to access the firmware, both from other operating systems and through manual methods:

  • From Windows 10/11: Go to Settings → Update & security → Recovery → Advanced startup. After the restart, select Troubleshoot → Advanced options → UEFI firmware settings.
  • From a Mac: Turn off your computer, press the power button, and hold down CMD+OPT+O+F at startup to access the prompt.
  • Traditional method: Press the specific key during boot (Delete, F2, Esc, F10, etc.), depending on the manufacturer. This method is still valid, but may fail if the boot is too fast or if you have Fast Boot enabled.

Common keys to access the firmware according to the manufacturer

  • Clones and ASRock, ASUS, Acer, Gigabyte, MSI, Zotac: F2 or Delete (Del)
  • Dell: F2 or F12
  • HP: F10
  • Lenovo: Portables: F2/Fn+F2; Tabletops: F1; ThinkPads: Enter+F1
  • Microsoft Surface: Hold Volume +
  • Samsung, Toshiba, Sony VAIO: F2 or F1 (depending on model)

Considerations and risks before updating the firmware

Updating firmware or flashing BIOS/UEFI is not without risk. Although the likelihood of damaging your equipment is decreasing, a failure during the update (for example, an unexpected power outage) can result in a «brick», leaving the equipment unusable.

Key tips before upgrading:

  • Always download firmware from official sources or from your device manufacturer's website. Never trust files of dubious origin.
  • Check that the firmware is specific to your model. Using an incorrect binary may cause the system to not boot.
  • If possible, use a UPS (Unconditional Power Supply) when updating to avoid problems in case of power outages.
  • Back up your settings.

How to know the current version of your firmware

In Linux, you can easily check the BIOS/UEFI version and other firmware information:

  • Graphical tools: AIDA64, CPU-Z, CPU-X, Hardinfo.
  • From the terminal:
    • Usa dmidecode -t bios for detailed BIOS/UEFI information.
    • Usa sudo dmesg | grep -i firmware to search for related messages.

Update firmware from Linux and Windows

From windows

  1. Access the firmware (BIOS/UEFI) to note the current version.
  2. Check the manufacturer's website for a newer version.
  3. Download the update file, usually in ZIP format.
    • If it's an executable: Run the program and follow the instructions, closing all applications and the antivirus beforehand.
    • If it is a file to update from the UEFI itself: unzip it to a USB (formatted in FAT32), boot the PC and use the BIOS/UEFI update utility from the corresponding menu.
  4. Reboot and verify that the change has been effective.

From GNU/Linux

  1. Download the firmware file from the manufacturer's official website (ZIP, image or binary).
  2. Install flashrom if you don't have it:
    sudo apt install flashrom
  3. Backup your current firmware:
    sudo flashrom -p internal -r backup_bios.bin
  4. Flash the new firmware:
    sudo flashrom -p internal -w firmware_nuevo.bin
  5. Reboot the system and check the version.

Recommended additional tools: fwupd, BIOSDisk, UEFITool, FWTS.

CPU microcode update

Microcode is the internal firmware of the CPU. It can be updated automatically along with the BIOS/UEFI, through operating system updates, or through specific packages.

Microcode updates are usually installed automatically with operating system updates. For ARM or RISC-V systems, please consult your specific manufacturer's support.

Firmware management and diagnostic tools

  • FWTS (Firmware Test Suite): allows you to check the health status of the firmware and detect errors or incompatibilities.
  • UEFITool: facilitates the manipulation and management of firmware images.
  • journalctl: useful for consulting the logs of the system (journalctl -b to see the last boot, or journalctl --file=/ruta/var/log/journal/ to analyze logs on unmounted disks).
  • dmesg: to check for boot messages and issues related to hardware and firmware. The option dmesg --pager can automatically paginate output.

Configure and understand systemd to manage boot

systemd is a service manager that organizes the boot process into declarative units and dependencies, not through procedural scripts like the old SysVinit.

  • The main units are /lib/systemd/system y /etc/systemd/system.
  • The command systemctl It is used to query, activate, stop and restart services, devices, sockets and targets. This article about dual booting It can be helpful to understand how to manage different systems on your team.
  • To view the status of a service (for example, NetworkManager): systemctl status NetworkManager

systemd provides compatibility with older /etc/init.d/ scripts and allows easy conversion to modern units. In addition, it incorporates advanced logging systems through systemd-journald, storing both kernel and service logs.

Other key aspects of booting and module management

System initialization also includes loading kernel modules. (drivers and drivers) for hardware support:

  • modprobe: allows you to load and unload modules manually.
  • lsmod: displays the modules loaded in the system.
  • modinfo: provides detailed information about a specific module.
  • The automatic module loading configuration is managed in /etc/modprobes.d/ y /etc/modules.

The udev system automatically detects the hardware and can load the necessary modules.

Access and update the firmware of other devices (routers, printers, etc.)

Firmware for routers, printers, and other devices often requires its own update procedure:

  1. Identify the IP of the device (usually 192.168.1.1 or 192.168.0.1 for routers), using ipconfig on Windows ip route show on Linux or from the network settings on mobile systems.
  2. Log in with the corresponding username and password (usually found on a label under the device or as default values ​​from the manufacturer).
  3. In the settings page, look for the “Firmware Update” section or similar.
  4. Download the firmware specific to your model from the official website, unzip it if it's a ZIP, and use the "Browse/Update" option to load it.
  5. Wait for the process to complete and restart your device if necessary.
  6. Check the firmware version after the process.

Many manufacturers offer specific utilities or software centers to facilitate the update. and management of drivers and firmware on your devices.

System security and maintenance after updates

After a firmware, BIOS/UEFI, or microcode update, it's a good idea to check that the system boots correctly and that there are no alerts or errors in the logs. Usa dmesg y journalctl to monitor for possible warnings. If you detect problems, try restoring the previous firmware from your backup.

Firmware and microcode management and update in Linux has advanced significantly, allowing users to keep their systems secure and up-to-date using increasingly sophisticated and accessible tools and commands. Support for systemd and systemctl has made it easier to add features that previously required manual methods or reboots, saving time and minimizing risk in the process.

Windows Bootloader: How to Change the Default Operating System if You Dual-Boot
Related article:
Dual-booting Windows and Linux: How to Choose the Default Operating System
  Windows 10 and Windows 8: 7 Best Internet Radio and Media Player Apps

Leave a comment