When you boot a Linux system, it boots into legacy BIOS (Basic Input/Output System) mode or modern UEFI (Unified Extensible Firmware Interface) mode, known as your computer’s “firmware”. It is important to know the firmware on which you are loading an operating system.
Firmware is the first piece of software that is executed when your computer boots, which initializes all the attached hardware and loads the actual operating system from the hard disk, and then starts the OS.
Why UEFI?
As UEFI was designed to overcome some limitations of BIOS. It offers several advantages such as faster boot times, support for larger hard drives (allow us to use larger than 2 TB disks), CPU independent architecture and drivers, and improved security features.
1) Check if you are using UEFI or BIOS on Linux
The easiest way is to check if '/sys/firmware/efi'
directory exists. It does not appear if you have booted with traditional BIOS.
# ls -lh /sys/firmware/efi total 0 -r--r--r-- 1 root root 4.0k Jul 16 18:25 config_table drwxr-xr-x 2 root root 0 Jul 16 18:23 efivars drwxr-xr-x 3 root root 0 Jul 18 13:11 esrt -r--r--r-- 1 root root 4.0k Jul 18 13:11 fw_platform_size -r--r--r-- 1 root root 4.0k Jul 16 18:25 fw_vendor drwxr-xr-x 2 root root 0 Jul 18 13:11 mok-variables -r--r--r-- 1 root root 4.0k Jul 16 18:25 runtime drwxr-xr-x 9 root root 0 Jul 16 18:25 runtime-map -r-------- 1 root root 4.0k Jul 16 18:25 systab drwxr-xr-x 87 root root 0 Jul 18 13:11 vars
For BIOS based system, you will get an output as follow:
# ls -lh /sys/firmware/efi ls: cannot access '/sys/firmware/efi': No such file or directory
1.1) Determine if the Linux system is booted in BIOS or UEFI mode
Alternatively, you can check this with one liner script as shown below: It checks for the existence of the /sys/firmware/efi directory, and only if it exists then your computer boots with UEFI. Otherwise, it will return Legacy BIOS Boot Detected.
# [ -d /sys/firmware/efi ] && echo "UEFI Boot Detected" || echo "Legacy BIOS Boot Detected" Legacy BIOS Boot Detected
For UEFI boot:
2) Checking the boot mode of the operating system in Linux
You can also verify that EFI appears in the dmesg output. If it boots with EFI and you will be able to see the output as shown below from the dmesg log.
# dmesg | grep -i "EFI" [ 0.000000] efi: Getting EFI parameters from FDT: [ 0.000000] efi: EFI v2.70 by EDK II
Final Thoughts
In this article, we covered how to check whether a Linux system is booted through UEFI or Legacy BIOS on Linux using two easiest method.