Skip to content
general firmware

UEFI (UEFI)

uefi firmware bios secure-boot boot-process hardware
Plain English

UEFI is the small program built into your motherboard that runs the moment you press the power button. It checks the hardware, finds a drive with an operating system on it, and hands off control. It replaced the older BIOS on almost every computer made in the last decade. When you press a key at startup to change the boot order or turn on virtualization, you are in the UEFI setup screen.

Technical Definition

Unified Extensible Firmware Interface (UEFI) is a specification, maintained by the UEFI Forum, for the interface between platform firmware and the operating system. It replaced the 1980s IBM PC BIOS model.

UEFI vs legacy BIOS:

Legacy BIOSUEFI
Partition tableMBR (2 TiB disk limit, 4 primary partitions)GPT (huge disks, 128 partitions by default)
Boot methodRuns 446 bytes of code from the disk’s first sectorLoads .efi executables from a FAT32 EFI System Partition
Boot entriesDisk order onlyNamed entries stored in NVRAM
Secure BootNoYes

Boot flow: power on, POST (hardware self-test), firmware reads its NVRAM boot entries, loads an EFI application from the EFI System Partition (ESP), usually \EFI\ubuntu\shimx64.efi, which loads GRUB, which loads the kernel.

Secure Boot: firmware only runs bootloaders signed by a trusted key. Ubuntu uses a Microsoft-signed shim that then verifies Canonical-signed GRUB and kernels.

CSM (Compatibility Support Module): an optional legacy BIOS emulation mode. New hardware is dropping it. Install in pure UEFI mode unless you have a specific reason not to.

Source: UEFI Forum specifications

Checking UEFI from Linux

# Did this system boot in UEFI mode? (directory exists only on UEFI)
$ ls /sys/firmware/efi
config_table  efivars  fw_platform_size  runtime  systab

# List firmware boot entries and order
$ sudo efibootmgr
BootCurrent: 0001
BootOrder: 0001,0000
Boot0000* UEFI: Built-in EFI Shell
Boot0001* ubuntu

# Secure Boot state
$ mokutil --sb-state
SecureBoot enabled

# The EFI System Partition
$ findmnt /boot/efi
TARGET    SOURCE    FSTYPE OPTIONS
/boot/efi /dev/sda1 vfat   rw,relatime
In the Wild

UEFI settings are behind a lot of “it will not boot” and “virtualization is not available” tickets. The fixes are usually here: enable Intel VT-x or AMD-V for VMs, change the boot order to start from a USB installer, or temporarily disable Secure Boot for an unsigned driver. Install media and the target disk must agree on mode; a USB stick booted in legacy mode installs a BIOS bootloader that a UEFI-only machine cannot start. In VirtualBox, the “Enable EFI” checkbox under System settings controls the same choice for a virtual machine.