Apr 9, 2013

Demystifying UEFI, the long-overdue BIOS replacement

After more than 30 years of unerring and yet surprising supremacy, BIOS — the IBM PC’s Basic Input Output System — is taking its final bows and shuffling into the theater’s wings. Taking its place in the limelight is UEFI, a specification that begun its life as the Intel Boot Initiative way back in 1998 when BIOS’s antiquated limitations were hampering systems built with Intel’s Itanium processors. Later, the Initiative became EFI, and in 2005 Intel donated EFI to the newly-formed UEFI Forum, a consortium made up of the usual suspects: AMD, Apple, IBM, Intel, Microsoft, and so on.


UEFI, or Unified Extensible Firmware Interface, is a complete re-imagining of a computer boot environment, and as such it has almost no similarities to the PC BIOS that it replaces. While BIOS is fundamentally a solid piece of firmware, UEFI is a programmable software interface that sits on top a computer’s hardware and firmware (and indeed UEFI can and does sit on top of BIOS). Rather than all of the boot code being stored in the motherboard’s BIOS, UEFI sits in the/EFI/ directory in some non-volatile memory; either in NAND on the motherboard, on your hard drive, or on a network share (more on that later).

UEFI stackAs a result, UEFI almost resembles a light-weight operating system. A computer boots into UEFI, an arbitrary set of actions are carried out, and then it triggers the loading of an operating system. Further reinforcing its OSness, the UEFI spec defines boot and runtime services, protocols for communication between services, device drivers (UEFI is designed to work across all platforms), extensions, and even an EFI shell, where you can run EFI applications. On top of all this is the boot loader, which executes an operating system’s boot loader.

UEFI, being a pseudo-operating system, can access all of the hardware on the computer — you can surf the internet from the UEFI interface, or backup your hard drives — and it even has a full, mouse-driven GUI (below right). The fact that all of this boot data is stored on NAND flash or on a hard drive means that there’s a lot more space for things like language localization, boot-time diagnostics (begone meaningless POST beeps!), utilities (backup, restore, malware scanners), and so on.

As a corollary, the fact that UEFI is entirely software-based is what makes it unified. So far UEFI has been used by almost every combination of 32- and 64-bit ARM, Intel, and AMD chips, and in each case the boot code just had to be compiled for the target platform. Every major desktop (OS X, Windows) and server OS (Linux) supports UEFI boot today — and Windows 8, when it rolls out, will have features that only work with UEFI (though it will still run on conventional, BIOS-booted computers).

Asus EFI BIOSUnderneath this crazy, extensible, software-driven interface, UEFI also specifies a few standard features that must be implemented. Windows 8′s ability to detect rootkit and malware infections (and rogue Linux installations), for example, relies on UEFI’s secure boot functionality. Low-level cryptography, network authentication, universal graphics drivers, and more, are all provided as standard. Update: Microsoft now has an excellent article about UEFI, Windows 8, and secure boot (Linux will be able to run just fine!)

Finally, it’s worth noting that UEFI is still incredibly young, and very few operating systems actually take advantage of any of the features listed above. Linux certainly supports UEFI, but no Linux distro really utilizes it. Mac OS X makes slightly better use of UEFI with the Bootcamp boot manager. Windows 8, when it launches in 2012, will probably be the first major OS to take extensive advantage of UEFI, with Restore, Refresh, secure boot, and possibly more.

Read more about UEFI on Wikipedia, UEFI Forum website, or How-To Geek

If you know how to pronounce UEFI, do let us know in the comments. We want to pronounce it “you-eff-eye,” but it could also be “you-fee,” or even “oo-fee”…

0 comments:

Post a Comment