MacBooks don’t have BIOS, but they use Intel’s Extensible Firmware Interface or OpenFirmware. Beyond the different disk formats used by Macs (HFS+) and Windows, (FAT or NTFS), there are problems about the partitioning system too, which is directly linked to platform’s firmware. Prior to the Intel Mac series released in 2006, Apple had been using Open Firmware on all systems, and also their disk partitonary module, called APD. New Intel Macs can read but not book from the latest APM drives.BIOS-based computers always have had used MBR and EFI introduced the new GPT format.

The Unified Extensible Firmware Interface, or UEFI, which was previously known as EFI specification is a interface between the OS and platform firmware. This interface consists of data tables which contain information about boot service calls, platform-related data and runtime service calls, which are available for the OS and for the loader. All this information provides a standard environment for booting the OS and for the pre-boot applications.

UEFI was initially designed for the next generation of IA computers, and it is a development of the “Intel® Boot Initiative” (IBI), an Intel program which began in 1998. The original version was named EFI, and it ended with EFI 1.10. The Unified EFI Forum was formed in 2005, and it is an organization which promotes continous EFI specification development. Relying on EFI 1.10 specification, this group released a new version, named Unified EFI. You can check the latest version of the UEFI specification on their website, here.

The framework for this interface is a product-strenght firmware implementation and it conforms to this interface specification. It is composed of a set of architectural interfaces, all implemented in C, and they have been designed to enable this firmware industry. The framework specifications are migrating towards the UEFI Platform Initialization, and they are designed to perform the full range of basic operations required to power the platform and initialize it and also control and start the operating system. The typical scheme of the firmware on Intel architecture based system is the following:

EFI uses a modular component design and language coding at highest levels, where this is possible; it is designed to support innovation and full-power capabilities of the preboot environment, and it provides a single code base which is the same for all platforms in the Intel architecture family, and this means that it serves all the needs from high-end servers to handheld devices.

Open firmware, or OpenBoot defines the intefaces of the computer’s firmware system, and it has been created by Sun, and used by Sun, Apple, IBM and many other non-x86 chipset manufacturers. This allows loading of platform-independent drivers from the PCI card, and this means better compatibility. Open Firmware can be accessed through the Forth languale interface and it offers the same functionality as the later EFI version. A lot of commercial implementations have been released to the community of Open Source in 2006, and these implementations include Sun OpenBoot, Firmworks OpenFirmware and Codegen SmartFirmware. This Sun implementation is available under a BSD license ( Berkeley Software Distribution, a family of permissive free software licenses).

Open Firmware is accessible by pressing Command-Option-O-F at startup. When you run an OS besides Mac OS X, the computer will emulate BIOS in the EFI, but it is not directly accesible to the common users. The Open Firmware interface is generally used by developers or IT personnel, and for the common users, Mac OS X offers a graphical user interface, for changing the basic settings. For example it is possible to set the boot disk or partition without accessing the OF interface. Many other OF settings can be changed using the nvram command, even when the system software is running.

EFI is just an improved OpenFirmware, and the EFI based GUID Partition Table isn’t a too big leap from APM either. A significant amount of work was required to make Macs work perfect under EFI, but it wasn’t a revolution, it is just a big difference in details and semantics. For the end user, it actually is a working interface, and it offers more security, because it isn’t so easy accessible, and the risks of breaking something is smaller.