Nepedia
Back to Discover
Advanced Reader
💻

UEFI

technology Maturity 7-9 war conflict Next article →

This article covers sensitive topics: war_conflict. Parents can manage visibility in Parental Controls.

The Unified Extensible Firmware Interface, or UEFI, is a critical specification for computer firmware architecture. Firmware is the low-level software that manages a computing platform's hardware. When a user powers on a computer, the UEFI implementation is typically the first software to run

UEFI boot process
UEFI boot process

. It acts as a bridge between the physical hardware and the operating system, such as Windows or Linux. This implementation is usually stored on NOR-based flash memory located on the motherboard

WD Blue WD5000LPVX - controller - Winbond 25X20CLVIG-0182
WD Blue WD5000LPVX - controller - Winbond 25X20CLVIG-0182

. Because it runs before the operating system, it is responsible for initializing the system and finding the boot loader.

UEFI operates through two distinct categories of functions known as services. The first category is boot services, which are available only while the firmware owns the platform. These services handle tasks like managing the bus, block, and file services, as well as providing text and graphical consoles. Once the system completes the boot process, it executes a command called ExitBootServices(). After this call, the firmware transitions to runtime services. These services remain accessible while the operating system is running. They allow the OS to access important data like the date, time, and NVRAM variables. For example, UEFI variables can store non-volatile data, such as crash messages, so the OS can retrieve them after a reboot.

Modern UEFI systems support a wide variety of processor architectures. It officially supports 32-bit or higher architectures that use little-endian mode. This includes x86 architectures like IA-32 and x86-64, as well as Itanium (IA-64). It also supports ARM architectures, including AArch32 and AArch64, and RISC-V. Even newer architectures like LoongArch are included in the official documentation for version 2.11. While unofficial support exists for POWERPC64 and MIPS, those projects were abandoned years ago. One important rule is that UEFI only executes applications that match the firmware's specific bit-width. A 64-bit UEFI firmware will only run 64-bit applications, even if the CPU can handle 32-bit modes.

UEFI also manages how data is organized on storage disks. Older systems relied on the Master Boot Record (MBR) partition scheme. However, MBR has strict limits, such as a maximum disk size of 2 terabytes and only four primary partitions. UEFI utilizes the GUID Partition Table (GPT) to overcome these restrictions. GPT allows for much larger disk and partition sizes, reaching up to 8 ZiB with 512-byte sectors. To boot Linux using UEFI and GPT, users create an EFI System Partition (ESP). This partition is typically at least 512 MB and uses a FAT32 filesystem. The ESP contains essential files like bootloaders, kernels, and utility software.

The history of UEFI began with the development of Intel-HP Itanium systems in the mid-1990s. Engineers realized that the existing BIOS was too restrictive for large server platforms. In 1998, a project called the Intel Boot Initiative began, which was later renamed the Extensible Firmware Interface (EFI). Intel released the first open-source implementation, Tiano, in 2004. In July 2008, Intel stopped developing the EFI specification at version 1.10. They contributed it to the UEFI Forum, which now maintains the specification as a unified standard. While the UEFI Forum owns the specification, Intel still owns the original EFI specification and provides licenses for EFI-based products.

The specification has evolved through many important versions to add new capabilities. Version 2.0 was released on January 31, 2006, to add cryptography and security. Version 2.1 followed on January 7, 2007, adding network authentication and a user interface architecture called Human Interface Infrastructure. In 2011, version 2.3.1 introduced Secure Boot and support for ARM architecture

. Secure Boot helps ensure that only trusted software can run during the startup process. The most recent major update, version 2.11, was published in December 2024.

UEFI is highly versatile because it can run various independent applications. These applications reside as files on the EFI System Partition. Users can run them through the UEFI Shell

UEFI shell 2.2 screenshot
UEFI shell 2.2 screenshot

, a boot manager, or other UEFI applications. Common examples include operating system boot loaders like GRUB, rEFInd, and the Windows Boot Manager. UEFI also provides protocols, which are software interfaces that allow different binary modules to communicate. This modularity allows for device drivers that are independent of a specific instruction set architecture. This is achieved through EFI Byte Code (EBC), which uses an interpreter within the system firmware to run code across different types of hardware.

737 words

Where will your curiosity go next?

Keep exploring at your chosen reading level.

🖼️ Images & Media (10)
File:Lenovo ThinkPad T470 UEFI BIOS 1.75 setup - boot menu selection.JPG
Lenovo ThinkPad T470 UEFI BIOS 1.75 setup...
File:WD Blue WD5000LPVX - controller - Winbond 25X20CLVIG-0182.jpg
WD Blue WD5000LPVX - controller - Winbond...
File:UEFI boot process.png
UEFI boot process.png
REFInd 0.14.2 about screen (secure boot...
File:UEFI shell 2.2 screenshot.png
UEFI shell 2.2 screenshot.png
File:Surface UEFI.png
Surface UEFI.png
File:Secure Boot keys example screenshot.png
Secure Boot keys example screenshot.png
File:Shim MokManager screenshot.png
Shim MokManager screenshot.png
REFInd boot manager installation...
Shim Secure Boot Advanced Targeting...
More to explore

🔬 Go deeper

More advanced topics to explore

🪜 Step back

Simpler topics to build understanding

What is Nepedia?

A free, ad-free encyclopedia for children. Every article is written at five reading levels, so the same page works for a five-year-old and a fifteen-year-old — use the level switcher above to see this one change. No account needed to read.