- Extensible Firmware Interface
The Extensible Firmware Interface (EFI) is a specification that defines a software
interface between anoperating system and platformfirmware . EFI is intended as a significantly improved replacement of the old legacyBIOS firmware interface historically used by all IBM PC-compatiblepersonal computer s. [Michael Kinney. “ [http://www.intel.com/technology/magazine/computing/it09006.pdf Solving BIOS Boot Issues with EFI] ”. "Intel DeveloperUPDATEMagazine". September 2000, p. 1.] The EFI specification was originally developed byIntel , and is now managed by theUnified EFI Forum and is officially known as Unified EFI (UEFI).History
The original motivation for EFI came during early development of the first Intel-HP
Itanium systems in the mid-1990s. PC BIOS limitations (16-bit processor mode, 1 MB addressable space,PC AT hardware dependencies, etc.) were seen as clearly unacceptable for the larger server platforms Itanium was targeting. The initial effort to address these concerns was initially called Intel Boot Initiative and was later renamed to EFI. [Dong Wei, "Beyond BIOS" (foreword), Intel Press, 2006, ISBN 9-780974-364902]EFI specification 1.02 was released by Intel on December 12, 2000. (Version 1.01 was the original issue; it had incorrect legal and trademark information and was quickly withdrawn. [See the Revision History section of specification version 1.10] )
EFI specification 1.10 was released by Intel on December 1, 2002. It included the EFI driver model as well as several minor enhancements to 1.02.
In 2005, Intel contributed this specification to the
UEFI Forum , who is now responsible for its development [Unified EFI Forum. “ [http://www.uefi.org/about/ UEFI - About UEFI] "] and promotion. EFI was renamed to Unified EFI (UEFI) to reflect this; most documentation uses both terms interchangeably.The UEFI Forum released version 2.1 of the UEFI specification on January 7, 2007; as of March 2007, it is the latest publicly available specification. It added and improved
cryptography , network authentication, and theUser Interface Architecture (Human Interface Infrastructure in UEFI).Contents
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.
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.Services
EFI defines "boot services", which include text and graphical console support on various devices, bus, block and file services, and "runtime services", such as date, time and
NVRAM services.Device drivers
In addition to standard architecture-specific device drivers, the EFI specification provides for a processor-independent device driver environment, called EFI Byte Code or EBC. System firmware is required by the UEFI specification to carry an interpreter for any EBC images that reside in or are loaded into the environment. In that sense, EBC is similar to
Open Firmware , the hardware-independent firmware used inPowerPC -basedApple Macintosh andSun Microsystems SPARC computers, amongst others.Some architecture-specific (non-EBC) EFI device driver types can have interfaces for use from the operating system. This allows the OS to rely on EFI for basic graphics and network support until OS specific drivers are loaded.
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).
Disk support
In addition to the standard PC disk partition scheme,
Master boot record (MBR), EFI adds support for aGUID Partition Table (GPT), which does not suffer from the same limitations, for example, MBR can only support up to 4 partitions and up to 2TB per partition, GPT does not have these limitations. The EFI specification does not include a description for afile system ; implementations of EFI typically support FAT32 as their file system. [ [http://fat-driver.tianocore.org fat-driver.Tianocore.org] for info on EFI FAT driver. (requires registration)]The EFI shell
The EFI community has created an
open source shell environment; [ [https://efi-shell.tianocore.org/ efi-shell.tianocore.org] for EFI shell information] rather than booting directly into a full OS, on some implementations, the user can boot to the EFI shell. The shell is an EFI application; it can reside directly within the platform ROM, or on a device for which the drivers are in ROM.The shell can be used to execute other EFI applications, such as setup, OS install, diagnostic or configuration utilities, and system flash updates; it can also be used to play CDs or DVDs without having to boot to a complete operating system, provided that an EFI application with the appropriate features is written. Shell commands also make it possible to copy or move files and directories between supported file systems. Drivers can be loaded and unloaded, and a complete TCP/IP stack can also be used from within the shell.
The EFI shell supports scripting through .nsh files, which are analogous to DOS
batch file s.Shell command names are often inherited from the
DOS command line interpreter COMMAND.COM or theUnix shell . The shell can be viewed as a functional replacement for the DOScommand line interface and the BIOStext user interface .Extensions
Extensions to EFI can be loaded from virtually any non-volatile storage device attached to the computer. For example, an
original equipment manufacturer (OEM) can sell systems with an EFI partition on the hard drive, which would add additional functions to the standard EFI firmware stored on the motherboard’s ROM.Implementation and adoption
Intel Platform Innovation Framework for EFI
The Intel Platform Innovation Framework for EFI (also known as “the Framework”) is a set of specifications developed by Intel in conjunction with EFI. While EFI specifies the OS-to-firmware interface, the Framework specifies the structure used to build the firmware beneath the OS-to-firmware interface.
In particular, the Framework includes all the steps needed to initialize the platform after power-on. These inner workings of firmware are not defined as part of the EFI specification, but some are part of the
Platform Initialization Specification developed byUEFI . The Framework has been tested on IntelXScale , IntelItanium andIA32 platforms.Compatibility with x86 operating systems that require “legacy BIOS” interfaces to operate is handled through a compatibility support module (CSM). The CSM includes a 16-bit
binary (CSM16) supplied by a BIOS vendor and a “thunk” layer to connect CSM16 to the Framework.Intel developed a reference codebase for the Framework, codenamed “Tiano”. Tiano is a complete, legacy-free firmware implementation that includes support for EFI. Tiano does not include the 16-bit portion of the CSM, but provides the interfaces required to add one supplied by a
BIOS vendor.Intel does not make the complete Tiano implementation available to end-users.A portion of the Tiano codebase (“the Foundation”) has been released as
open source to the [http://www.tianocore.org/ TianoCore project] as the EFI Developer Kit (EDK). This implementation covers EFI and some hardware initialization code, but does not constitute feature-complete firmware by itself. Several licenses have been used for this code, including theBSD license and theEclipse Public License .Products based on EFI,
UEFI & the Framework specifications are available through independent BIOS vendors, such asPhoenix Technologies ,American Megatrends (AMI) andInsyde Software . Some vendor implementations are entirely based on the Tiano implementation, while others are designed to be specification compliant without relying on Intel’s reference implementation. [ [http://www.intel.com/technology/framework/ Intel Platform Innovation Framework for EFI] on theIntel site]Platforms that use UEFI or the Framework
Intel ’s firstItanium workstations and servers, released in 2000, supported EFI 1.02.Hewlett-Packard ’s firstItanium 2 systems, released in 2002, supported EFI 1.10; they were able to boot Windows,Linux ,FreeBSD andHP-UX ;OpenVMS added support in June, 2003.All Itanium or Itanium 2 systems that ship with EFI compliant firmware must also comply with all
DIG64 specifications.In November
2003 , Gateway introduced the Gateway 610 Media Center, the first x86 Windows-based computer system to use firmware based on the Framework, Insyde Software's InsydeH2O. It still relied on a legacy BIOS implemented as a compatibility support module to boot Windows.In January
2006 ,Apple Inc. shipped its firstIntel -basedMacintosh computers. These systems use EFI and the Framework instead ofOpen Firmware , which had been used on its previous PowerPC-based systems. [Apple Computer. “ [http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary_diffs/chapter_3_section_10.html Universal Binary Programming Guidelines, Second Edition: Extensible Firmware Interface (EFI)] "] On April 5, 2006, Apple first released Boot Camp, which produces a Windows drivers disk and a non-destructive partitioning tool to allow the installation of Windows XP or Vista without requiring a reinstallation of Mac OS X. A firmware update was also released that added legacy BIOS support to its EFI implementation. Subsequent Macintosh models shipped with the newer firmware. Now all current Macintosh systems are also able to bootlegacy BIOS Operating Systems such as Windows XP and Vista.The grand majority of Intel motherboards ship with Framework-based firmware. During 2005, more than one million Intel systems shipped with the Framework. [Intel, " [http://www.intel.com/technology/framework/overview2.htm Framework Overview] "] New mobile, desktop and server products, using the Framework, started shipping in 2006. For instance, all boards that use the Intel 945 chipset series use the Framework. However, the production firmware usually does not include EFI support, and is limited to legacy BIOS. [An Intel pdf with information about EFI on their boards [http://www.intel.com/cd/channel/reseller/asmo-na/eng/336115.htm] ]
Since 2005, EFI has also been implemented on non-PC architectures, such as
embedded system s based onXScale cores. [ [http://www.intel.com/technology/framework/overview1.htm Overview of the Intel Platform Innovation Framework] ]The EDK includes an NT32 target, which allows EFI firmware and EFI applications to run within a Windows application.
In
2007 HP released the 8000 seriesmultifunction printer s with EFI compliant firmware. [HP Printer’s site [https://h30046.www3.hp.com/campaigns/2007/promo/edgeline-mfp/index.php?regioncode=NA&langcode=USENG] ]In 2008, many more systems have transitioned to use the UEFI technology. Some of the systems do not have the UEFI boot mode turned on, they only support the legacy OS boot via CSM, but systems with the UEFI mode turned on are shipping, for example, IBM x3450 server, MSI motherboards with ClickBIOS, HP EliteBook Notebook and Tablet PCs, etc. It is projected that by late 2009 or early 2010, more than 50% of the shipping x64 units will be UEFI based.
Operating systems
*
Linux systems have been able to use EFI at boot time since early 2000, using theelilo EFI boot loader or, more recently, EFI versions of grub. [http://packages.debian.org/sid/grub-efi EFI version of Grub (Debian Linux)] - Retrieved on 1 May 2008.]
*HP-UX has used EFI as its boot mechanism on IA-64 systems since 2002.
*HPOpenVMS has used EFI since its initial evaluation release in December 2003, and for production releases since January 2005 [ [http://h71000.www7.hp.com/openvms/os/openvms-release-history.html HP OpenVMS Release History] - Retrieved on 16 September 2008] .
*Apple has adopted EFI for its line of Intel-based Macs.Mac OS X v10.4 Tiger for Intel andMac OS X v10.5 Leopard support EFI v1.10 in 32-bit mode, even on 64-bit CPUs (newer Macs have 64-bit EFI). [http://refit.sourceforge.net/info/vista.html rEFIt - Windows Vista and EFI ] ]Microsoft Windows
The
Itanium versions ofWindows 2000 (Advanced Server Limited Edition and Datacenter Server Limited Edition) supported EFI 1.1 in 2002.Windows Server 2003 forIA-64 ,Windows XP 64-bit Edition , andWindows 2000 Advanced Server Limited Edition, all of which are for the IntelItanium family of processors, support EFI, a requirement of the platform through theDIG64 specification. [Microsoft Windows Server TechCenter. “ [http://technet2.microsoft.com/WindowsServer/en/Library/6b03fad7-665e-49f3-8e7d-e1a6a5be9cf01033.mspx Extensible Firmware Interface] "]Microsoft introduced UEFI support for x64 Windows operating systems with
Windows Server 2008 and Windows Vista Service Pack 1. [ [http://apcmag.com/apc/v3.nsf/0/E666E4A0A303D9AACA25712C008166C4 Microsoft bombshell: no EFI support for Vista] ] [cite web
url=http://blogs.zdnet.com/microsoft/?p=559
title=Vista SP1 beta 1 to launch in mid-July
date=2007-07-08
accessdate=2007-07-20
author=Foley, Mary Jo
publisher=ZDNet ] Microsoft claims that the lack of official support for EFI booting on 32-bit CPUs is due to lack of support from PC manufacturers and vendors. Microsoft’s migration to x64 operating systems is not supportable by EFI 1.10, since the x86-64 processor extensions required by x64 operating systems were not a supported processor binding. Support for x86-64 was added inUEFI 2.0.Microsoft has released a video with Andrew Ritz and Jamie Schwarz explaining Pre-OS support involving UEFI on Windows Vista and Windows Server 2008. [ [http://channel9.msdn.com/showpost.aspx?postid=292774 Microsoft Pre-OS Video] ]
Graphic feature
EFI supports graphical menus and features, such as is implemented on Aptio or Great Wall UEFI. [ [http://apcmag.com/5862/intel_shows_pc_booting_windows_with_uefi_firmware Intel shows PC booting Windows with UEFI firmware] ]
Criticism
EFI has been criticized for bringing more complexity to the system, without bringing significant advantages [ [http://kerneltrap.org/node/6884 Linux: Linus On The Extensible Firmware Interface] ] and disabling fully open-source BIOS replacements like
OpenBIOS andcoreboot . [ [http://archive.fosdem.org/2007/interview/ronald+g+minnich Interview: Ronald G Minnich] ]ee also
*
x86-64
*Advanced Configuration and Power Interface (ACPI)
*Basic Input/Output System (BIOS)
*Booting
*Coreboot
*El Torito
*Functional specification
*Live USB
*Open Firmware
*OpenBIOS
*System Management BIOS (SMBIOS)
*System Management Mode
*Unified EFI Forum References
External links
* [http://www.uefi.org/ UEFI Homepage]
* [http://www.ddj.com/dept/embedded/199500688?cid=RSSfeed_DDJ_All EFI Architecture] Dr. Dobbs Portal Article
* [http://gnu-efi.sourceforge.net/ EFI Linux gnu toolchain (gnu-efi)]
* [http://elilo.sourceforge.net/ EFI Linux Loader project (ELILO)]
* [http://refit.sourceforge.net/ rEFIt, a boot menu and maintenance toolkit for EFI-based machines] .
* [http://www.intel.com/technology/efi/ Intel’s EFI page]
* [http://www.intel.com/technology/Framework/ Intel’s Framework page]
* [http://softwarecommunity.intel.com/articles/eng/2553.htm Intel List of commands]
* [http://www.tianocore.org/ Intel-sponsored open-source EFI Framework initiative]
* [http://www.microsoft.com/whdc/system/platform/firmware/efibrief.mspx Microsoft’s official stance on EFI]
Wikimedia Foundation. 2010.