The Unified EFI (UEFI) specification (previously known as the EFI specification) defines an interface between an operating system and platform firmware. EFI is a much larger, more complex, replacement for the older BIOS firmware interface present in all IBM PC-compatible personal computers. The EFI specification was originally developed by Intel, and has been managed since 2005 by the Unified EFI Forum as the Unified Extensible Firmware Interface (UEFI).

The interface consists of data tables that contain platform-related information, boot service calls, and runtime service calls that are available to the operating system and its loader. These provide a standard environment for booting an operating system and running pre-boot applications. In 2005 The Unified EFI Forum was formed as an industry-wide organization to promote adoption and continue the development of the EFI specification. Using the EFI 1.10 specification as the starting point, this industry group released the follow on specifications renamed Unified EFI. The current version of the UEFI Specification can be found at the UEFI web site.

The interface defined by the EFI specification includes data tables that contain platform information, and boot and runtime services that are available to the OS loader and OS. UEFI firmware[5] provides several technical advantages:

• Compatibility with operating systems that support only BIOS

• Ability to boot from large disks

• CPU-independent architecture

• CPU-independent drivers

• Flexible pre-OS environment

• Modular design

Some existing enhancements to PC BIOS, such as the Advanced Configuration and Power Interface (ACPI) and System Management BIOS (SMBIOS), are also present in EFI, as they do not rely on a 16-bit runtime interface.

Disk support

In addition to the standard PC disk partition scheme, which uses a Master boot record (MBR), EFI adds support for a new partitioning scheme: GUID Partition Table (GPT). GPT does not suffer from many of the limitations of MBR. In particular, the MBR limits on the number and size of disk partitions (up to 4 partitions per disk, up to 2.2 TB per partition) are relaxed. GPT allows for a maximum disk and partition size of 9.4 ZB. The EFI specification does not prescribe any particular file system.

Services

EFI defines two types of services: boot services and runtime services. Boot services include text and graphical console support on various devices, bus, block, and file services. Runtime services

Boot manager

An EFI boot manager is also used to select and load the operating system, removing the need for a dedicated boot loader mechanism (the OS boot loader is an EFI application).

Operating systems

An operating system that supports being booted from a (U)EFI is called a (U)EFI-aware OS, defined by (U)EFI specification. Here the term booted from a (U)EFI means directly booting the system using a (U)EFI OS loader stored on any storage device. The default location for the OS loader is EFIBOOT[architecture name]boot[architecture name].efi, where the architecture name can be e.g. IA32, X64 or IA64. Some OS vendors may have their own OS loader. They may also change the default boot location.

• Linux has been able to use EFI at boot time since early 2000, using the elilo EFI boot loader or, more recently, EFI versions of GRUB.[16]

• HP-UX has used (U)EFI as its boot mechanism on IA-64 systems since 2002.

• HP OpenVMS has used (U)EFI on IA-64 since its initial evaluation release in December 2003, and for production releases since January 2005[17].

• Apple uses EFI for its line of Intel-based Macs. Mac OS X v10.4 Tiger for Intel and Mac OS X v10.5 Leopard support EFI v1.10 in 32-bit mode, even on 64-bit CPUs (newer Macs have 64-bit EFI).[18]

• The Itanium versions of Windows 2000 (Advanced Server Limited Edition and Datacenter Server Limited Edition) supported EFI 1.10 in 2002. Windows Server 2003 for IA-64, Windows XP 64-bit Edition, and Windows 2000 Advanced Server Limited Edition, all of which are for the Intel Itanium family of processors, support EFI, a requirement of the platform through the DIG64 specification.[19]

• Microsoft introduced UEFI support for x64 Windows operating systems with Windows Server 2008 and Windows Vista Service Pack 1. Microsoft does not offer support for 32-bit UEFI since vendors did not have any interest in producing native 32-bit UEFI firmware because of the mainstream status of 64-bit computing.[20] Microsoft has released a video with Andrew Ritz and Jamie Schwarz explaining Pre-OS support involving UEFI on Windows Vista and Windows Server 2008.[21]

Virtualization Support

• HP Integrity Virtual Machine supports UEFI boot on HP Integrity Servers. It also provides a virtualized UEFI environment for the guest UEFI-aware OSes.

• Microsoft Hyper-V supports UEFI boot on x64 servers.

• Intel hosts an Open Virtual Machine Firmware project at http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=OVMF.

• VMware Fusion 3 software for Mac OS X supports booting Mac OS X Server virtual machines using EFI.

• VirtualBox has had support since 3.1 [22]

Advertisements