Introduction to the Unified Extensible Firmware Interface

From Thomas-Krenn-Wiki
Jump to navigation Jump to search

The Unified Extensible Firmware Interface (UEFI) specifies the interface between the firmware and operating system while a computer is being booted. The initial specification for the Extensible Firmware Interfaces (EFI) was developed in 2000 for the Itanium platform.[1]

The UEFI specification was published by the Unifed EFI Forum on basis of the EFI specification version 1.10 from Intel.[2] Other companies like Microsoft, Intel or AMI, are working on the development of the specification.

UEFI and PI specify a standardized path for the development of UEFI-conformant firmware and its extension. Source: Using the Latest EFI Development Kit (EDK II) for UEFI Advanced Development and Innovation, F.4 (intel.com)

UEFI does not specify how firmware developers have to write their firmware, but rather the appearance of the interface between the firmware and the operating system. Beyond this, the UEFI Forum united for the parallel development of the Platform Initialization (PI) specification, which describes the internal mechanisms for the implementation of the UEFI specification. Thereby, the development of firmware components assembled by various manufacturers will be made easier. Interoperability will be ensured through the usage and development of PI-conformant firmware components.

EFI Development Kit 2

Intel originally published an open source implementation of the original EFI specification as the EFI Development KIT (EDK). Over the course of the development of UEFI and PI, this open source project has continued to be developed as EDK2. The primary objective of the project is the development, testing and debugging of UEFI drivers, option ROMs and applications for firmware developers.[3]

Neither UEFI as a specification nor EDK2 represent a complete replacement for traditional BIOSs. For one thing, UEFI is purely a specification. For another thing, how the initial setup mechanism (the Power On Self Test) should be performed has not been specified. This component must be accepted by firmware manufacturers.

UEFI Advantages

UEFI removes several limitations on traditional BIOSs and has the following advantages for that reason:[4]

  • Industry standard (see also http://www.uefi.org/about/)
  • Easier programming and extension capability due to development in C
  • Independent architecture (intended for modern 32-/64-bit systems)

Furthermore, UEFI firmware utilities can:

  • provide graphical user interfaces from the pre-boot environment (using a pre-boot network stack, for example)
  • upgrade firmware components or all firmware remotely
  • be used on any platform

The limitations of a traditional BIOS that no longer apply:[4]

  • Parallel installation of multiple operating systems without a boot manager specific to the operating system (such as Grub2)
  • Limitation of the hard disk capacity to 2.2 terabytes (in point of fact, this is actually a limitation of the Master Boot Record (MBR), which has been replaced through the introduction of GPT partitioning)
  • Network functionality even without an operating system (for updating the firmware, for example)
  • Pre-boot applications (for recovery features and diagnostic utilities, for example)

Differences in Comparison with Traditional Boot Processes

The UEFI system no longer use the traditional boot sector, but rather check for the presence of an operating system loader on an EFI system partition (ESP).[5]

Conceptual overview of a UEFI-conformant system for booting an operating system Source: UEFI Specification 2.3.1, p. 9

References

  1. UEFI Today: Bootstrapping the Continuum (intel.com/technology)
  2. UEFI FAQs (uefi.org)
  3. EDK2 FAQs (sourceforge.net/apps/mediawiki/tianocore)
  4. 4.0 4.1 AMI - An Introduction to UEFI (embedded.communities.intel.com)
  5. OSDev Wiki - EFI (wiki.osdev.org)

Related articles

Creating Windows UEFI Boot-Stick in Windows
GUID Partition Table information
Restoring UEFI Boot Entry after Ubuntu Update