EFI is a software interface that operates between the operating system and the platform firmware, allowing it to be capable of replacing the BIOS. As a matter of fact, EFI is complex enough to be called “OS-like.” It not only offers driver support, interfaces, and services, but it also has a shell that allows users to execute applications on a command line interface.
EFI contains system information organized into tables, and it offers boot and runtime services to the operating system. Boot services include initialization, file services, and textual and graphical user consoles. Runtime services include date, time, and NVRAM services. To enable or facilitate inter-device communication, all EFI drivers and components communicate through specified protocols. Drivers are also important, since the EFI device driver environment, the EFI Byte Code (EBC), is a processor-independent environment that allows for both device initialization and operation (with the exception of OS-specific hardware with specific feature and driver support requirements, such as high-end graphics cards).
Gone are the days when you needed boot manager software to start different operating systems. EFI implements its own boot manager to take care of this job. System builders have new opportunities as well, because EFI extensions may be added from various, non-volatile locations. This means that a PC maker could use the customer’s desired motherboard and platform while adding additional system features via EFI through a partition of the system hard drive or, eventually, even through Internet downloads.
Apple’s Boot Camp, which allows users to install a Windows version next to an existing Mac OS installation in a non-destructive manner, actually utilizes Intel’s EFI implementation on Intel-powered Macs instead of Open Firmware. This has been available since April of 2005 and is not nearly as easily to pull off on x86 PC platforms.
Since EFI’s Platform Initialization (PI) feature offers a Compatibility Support Mode (CSM) through which it can publish additional interfaces, it’s also possible to provide a legacy BIOS runtime. Given the benefits, this makes it very appealing for manufacturers to adopt UEFI quickly. However, today’s broad support exists mostly on paper.