

Extensible Firmware Interface's position in the software stack.
The
Extensible Firmware Interface (
EFI) is a specification that defines a software
interface between an
operating system and platform
firmware. EFI is intended as a significantly improved replacement of the old legacy
BIOS firmware interface historically used by all
IBM PC compatible personal computers[1].
The EFI specification was originally developed by
Intel, and is now managed by the
Unified 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
[2].
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
[3].)
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
[4] 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 the
User Interface Architecture (Human Interface Infrastructure in UEFI).
Contents


Interaction between the EFI boot manager and EFI drivers
The interface defined by the EFI specification includes data tables which contain platform information, and boot and runtime services which 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 resides in or is loaded into the environment. In that sense, EBC is similar to
Open Firmware, the hardware-independent firmware used in
PowerPC-based
Apple Macintosh computers and
Sun 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 a
GUID Partition Table (GPT), which does not suffer from the same limitations. The EFI specification does not include a description for a
file system; implementations of EFI typically support
FAT32 as their file system
[5].
The EFI shell
The EFI community has created an
open source shell environment[6].; 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 files.
Shell command names are often inherited from the
DOS command line interpreter COMMAND.COM or the
Unix shell. The shell can be viewed as a functional replacement for the DOS
command line interface and the BIOS
text 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 by
UEFI. The Framework has been tested on Intel
XScale, Intel
Itanium and
IA32 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
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 the
BSD license and the
Eclipse Public License.
Products based on EFI,
UEFI & the Framework specifications are available through independent BIOS vendors, such as
American Megatrends (AMI) and
Insyde 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.
[7].
Platforms that use EFI or the Framework
Intel's first
Itanium workstations and servers, released in 2000, supported EFI 1.02.
Hewlett-Packard's first
Itanium 2 systems, released in 2002, supported EFI 1.10; they were able to boot
Windows,
Linux,
FreeBSD and
HP-UX.
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 Computer shipped their first
Intel-based Macintosh computers. These systems use EFI and the Framework instead of
Open Firmware, which had been used on their previous PowerPC-based systems.
[8] On April 5, 2006 Apple released
Boot Camp which produces a Windows XP Drivers Disk as well as a non-destructive partitioning tool to help users easily install Windows XP. A firmware update was also released which 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 boot
legacy BIOS Operating Systems like Windows XP.
The grand majority of Intel motherboards ship with Framework-based firmware. During 2005 more than one million Intel systems shipped with the Framework
[9]. 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
[10].
Since 2005, EFI has also been implemented on non-PC architectures, such as
embedded systems based on
XScale cores
[11].
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 series
multifunction printers with EFI compliant firmware.
[12]
Operating systems
- Linux systems have been able to use EFI at boot time since early 2000, using the elilo EFI boot loader. elilo is the only means to boot Linux on IA-64 platforms; it can also be used on IA-32 platforms. As of July 2007, elilo support for x86-64 mode is available through a beta release.
- HP-UX has used EFI as its boot mechanism on IA-64 systems since 2002. OpenVMS has used it on production releases since January 2005.
- Apple has adopted EFI for its line of Intel-based Macs. Mac OS X v10.4 "Tiger" for Intel and Mac OS X v10.5 "Leopard" thoroughly support EFI.
Microsoft Windows
The
Itanium versions of
Windows 2000 (Advanced Server Limited Edition and Datacenter Server Limited Edition) supported EFI 1.1 in 2002.
Windows Server 2003 for
IA64,
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.
[13]
Microsoft plans to introduce UEFI support for 64-bit x64 with
Windows Server 2008. UEFI support for x64 versions of
Windows Vista are planned to be included in a
service pack,
[14] possibly Vista Service Pack 1.
[15] 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/EM64T processor extensions required by x64 operating systems were not a supported processor binding. Support for x86-64/EM64T was added in
UEFI 2.0.
Microsoft has released a video with Andrew Ritz and Jamie Schwarz explaining Pre-OS support involving UEFI on Vista and Longhorn.
[16]
Intellectual property
According to Ron Minnich, the lead developer for
LinuxBIOS, one of the stated goals of EFI is to "protect hardware vendors' intellectual property". This raises security concerns and notably makes creating a
free software implementation impossible. EFI could be used to create a "DRM BIOS", thus letting vendors build computers which limit what the user can do.
[17]
EFI is not open source. Its specificiation is not publicly viewable and EFI site suggests that it is a supporter of the Trust Computing Group.
Graphic feature
EFI supports graphical menus and features, such as is implemented on Aptio or Great Wall UEFI.
[18]
See also
References
1.
^ Michael Kinney. "
Solving BIOS Boot Issues with EFI".
Intel DeveloperUPDATEMagazine. September, 2000, page 1.
2.
^ Dong Wei,
Beyond BIOS (foreword), Intel Press, 2006, ISBN 9-780974-364902
3.
^ See the Revision History section of specification version 1.10
4.
^ Unified EFI Forum. "
UEFI - About UEFI."
5.
^ see
fat-driver.Tianocore.org for info on EFI FAT driver. (requires registration)
6.
^ See [https://efi-shell.tianocore.org/ efi-shell.tianocore.org] for EFI shell information
7.
^ See
Intel Platform Innovation Framework for EFI on the
Intel site
8.
^ Apple Computer. "
Universal Binary Programming Guidelines, Second Edition: Extensible Firmware Interface (EFI)."
9.
^ Intel,
Framework Overview
10.
^ An Intel pdf with information about EFI on their boards
[1]
11.
^ See
Overview of the Intel Platform Innovation Framework
12.
^ HP Printer's site [https://h30046.www3.hp.com/campaigns/2007/promo/edgeline-mfp/index.php?regioncode=NA&langcode=USENG]
13.
^ Microsoft Windows Server TechCenter. "
Extensible Firmware Interface."
14.
^ Microsoft bombshell: no EFI support for Vista
15.
^ Foley, Mary Jo (2007-07-08).
Vista SP1 beta 1 to launch in mid-July.
ZDNet. Retrieved on 2007-07-20.
16.
^ Microsoft Pre-OS Video
17.
^ Interview with Ronald Minnich, author of LinuxBIOS
18.
^ [2]
External links
Interface may refer to:
In
computer science:
- Interface (computer science), an abstraction of a software component
- Interface (Java), an abstract type which is used to specify an interface that classes must implement
..... Click the link for more information. An operating system (OS) is the software that manages the sharing of the resources of a computer. An operating system processes system data and user input, and responds by allocating and managing tasks and internal system resources as a service to users and programs of the
..... Click the link for more information.
firmware is a computer program that is embedded in a hardware device, for example a microcontroller. It can also be provided on flash ROMs or as a binary image file that can be uploaded onto existing hardware by a user.
..... Click the link for more information.
Bios or
BIOS may refer to:
- Life (in Greek, βίος/Bios)
- Biographies, a genre of literature/media based on accounts of people's lives
..... Click the link for more information. IBM PC compatible computers are those generally similar to the original IBM PC, XT, and AT. Such computers used to be referred to as PC clones, or IBM clones since they almost exactly duplicated all the significant features of the PC, XT, or AT internal design,
..... Click the link for more information.
personal computer (PC) is a computer whose original sales price, size, and capabilities make it useful for individuals.
It is unknown who coined the phrase with the intent of a small affordable computing device but John W.
..... Click the link for more information.
Intel Corporation
Public (NASDAQ: INTC , SEHK: 4335 )
Founded 1968 1
Headquarters Santa Clara, California
United States
Key people Paul S.
..... Click the link for more information.
The Unified Extensible Firmware Interface Forum
Collaborative trade organization
Founded 2005
Headquarters Beaverton, Oregon, USA
Industry Firmware
Products Specifications
Website www.UEFI.
..... Click the link for more information.
Itanium 2
Central processing unit
Itanium 2 logo
Produced: From mid 2002 to present
Manufacturer: Intel
CPU Speeds: 733 MHz to 1.
..... Click the link for more information.
Type Personal Computer
Released 1984
Discontinued 1987
Processor Intel 80286 @ 6 and 8 MHz
Memory 256 KiB ~ 16 MiB
OS PC-DOS 3.0+, OS/2 1.
..... Click the link for more information.
The Unified Extensible Firmware Interface Forum
Collaborative trade organization
Founded 2005
Headquarters Beaverton, Oregon, USA
Industry Firmware
Products Specifications
Website www.UEFI.
..... Click the link for more information.
Cryptography (or cryptology; derived from Greek κρυπτός kryptós "hidden," and the verb γράφω gráfo "write" or λεγειν legein
..... Click the link for more information.
The user interface (or Human Machine Interface) is the aggregate of means by which people (the users) interact with a particular machine, device, computer program or other complex tool (the system).
..... Click the link for more information.
The Advanced Configuration and Power Interface (ACPI) specification is an open industry standard first released in December 1996 developed by HP, Intel, Microsoft, Phoenix and Toshiba that defines common interfaces for hardware recognition, motherboard and device
..... Click the link for more information.
System Management BIOS (SMBIOS) is a specification to lay out data structures (and access methods) in a BIOS which allows a user or application to store and retrieve information specifically about the PC in question.
..... Click the link for more information.
Open Firmware (also, OpenBoot) is a hardware-independent firmware (computer software which loads the operating system), developed by Mitch Bradley at Sun Microsystems, and used in post-NuBus PowerPC-based Apple Macintosh computers, Sun Microsystems SPARC based workstations
..... Click the link for more information.
PowerPC is a RISC microprocessor architecture created by the 1991 Apple–IBM–Motorola alliance, known as AIM. Originally intended for personal computers, PowerPC CPUs have since become popular embedded and high-performance processors as well.
..... Click the link for more information.
Macintosh, commonly known as Mac, is a brand name which covers several lines of personal computers designed, developed, and marketed by Apple Inc. Named after the McIntosh variety of apple, the original Macintosh was released on January 24, 1984.
..... Click the link for more information.
Sun Microsystems
Public (NASDAQ: JAVA )
Founded 1982
Headquarters Santa Clara, California, United States
Key people Scott McNealy, Chairman
Jonathan I.
..... Click the link for more information.
SPARC (Scalable Processor ARChitecture) is a RISC microprocessor instruction set architecture originally designed in 1985 by Sun Microsystems.
SPARC is a registered trademark of SPARC International, Inc.
..... Click the link for more information.
A Master Boot Record (MBR), or partition sector, is the 512-byte boot sector that is the first sector ("Sector 0") of a partitioned data storage device such as a hard disk. (The boot sector of a non-partitioned device is a Volume Boot Record.
..... Click the link for more information.
In computer hardware, GUID Partition Table (GPT) is a standard for the layout of the partition table on a physical hard disk. It is a part of the Extensible Firmware Interface (EFI) standard proposed by Intel as a replacement for the outdated PC BIOS, one of the few
..... Click the link for more information.
file system (often also written as filesystem) is a method for storing and organizing computer files and the data they contain to make it easy to find and access them.
..... Click the link for more information.
File Allocation Table (FAT) is a partially patented file system developed by Microsoft for MS-DOS and was the primary file system for consumer versions of Microsoft Windows up to and including Windows Me.
..... Click the link for more information.
Open source is a set of principles and practices that promote access to the design and production of goods and knowledge. The term is most commonly applied to the source code of software that is available to the general public with relaxed or non-existent intellectual property
..... Click the link for more information.
In computing, a shell is a piece of software that provides an interface for users. Typically, the term refers to an operating system shell which provides access to the services of a kernel.
..... Click the link for more information.
Microsoft Batch File
File extension: .bat .cmd .btm
Type of format: Scripting In MS-DOS, OS/2, and Windows, a batch file is a text file containing a series of commands intended to be executed by the command interpreter.
..... Click the link for more information.
DOS (from Disk Operating System) commonly refers to the family of closely related operating systems which dominated the IBM PC compatible market between 1981 and 1995 (or until about 2000, if Windows 9x systems are included): DR-DOS, FreeDOS, MS-DOS, Novell-DOS, OpenDOS, PC-DOS,
..... Click the link for more information.
command line interpreter (also command line shell, command language interpreter) is a computer program that reads lines of text entered by a user and interprets them in the context of a given operating system or programming language.
..... Click the link for more information.
COMMAND.COM is the filename of the default operating system shell (or command line interpreter) for DOS and 16/32bits versions of Windows (95/98/98 SE/Me). It also has an additional role, as the first program run after boot, hence being responsible for setting up the system by
..... Click the link for more information.