The Intel Mac boot process
This page collects information about the boot process on the Intel-based Apple Macintosh models.
The firmware in the Intel Macs is based on the Extensible Firmware Interface (EFI) specification. Actually, Apple has used Intel’s reference implementation, called the Platform Innovation Framework, also called just “Framework” or “Tiano”, its development codename. A stripped-down branch of the Framework has been released as Open Source under the name TianoCore. All interesting parts of the Framework are written in C, and extensive documentation is freely available.
The firmware is responsible for initializing the hardware and performing a POST (Power-On Self Test). During this phase, the video hardware will be initialized and set to display a blank grey screen.
While initializing the hardware the firmware also sets up EFI drivers for all relevant hardware devices. On the Intel Macs that includes the USB mouse and the IR remote receiver. Partitions on disk drives are discovered and file system drivers are set up for FAT and HFS+ volumes.
Operating System Selection
When it comes to locating and loading operating systems, Apple has customized the firmware. Like on PowerPC Macs, Apple takes a per-volume approach, with a graphical boot volume chooser that comes up when you boot with the Option key pressed. The default boot volume is stored in NVRAM and can be set through the “Startup Disk” preference pane.
Under the hood, things are a bit complicated. Apple’s firmware uses most of the EFI infrastructure, but has both extended the base functionality and added its own UI on top.
The main extension is that for HFS+ volumes, there is no need to specify the full path to the actual boot loader. Instead, HFS+ volume header fields are used to point to a “blessed file” to be loaded as an EFI application. When this feature is used, the NVRAM variables contain just the device path to the disk partition, without any file path.
For booting legacy BIOS-based operating systems, Apple takes a completely non-standard approach. The CSM (compatibility support module) is not loaded at all by default. When the decision is made to boot a BIOS-based operating system, a special EFI application is loaded from the firmware ROM to kick off the BIOS boot process. When the user chooses Windows as the default operating system in the “Startup Disk” pane, the NVRAM variables are actually set to point at this special loader, plus a parameter that tells it which device to boot from.
In addition to these two main booting methods, the firmware also supports booting from the network and booting an EFI loader specified by a full file path on an accessible FAT volume.
Booting Mac OS X
The Mac OS X boot loader is located in /System/Library/CoreServices/boot.efi. When loaded by the firmware, it displays a dark grey Apple logo on the screen. Then it loads the Darwin kernel from disk, as well as the essential driver extensions. Once the kernel gets control of the machine, the rest of the boot process is identical to PowerPC machines.
Booting a BIOS-based Operating System
Once the compatibility support module (CSM) is engaged, the boot process proceeds the same way as on a standard PC. For hard disk boots, the master boot record (MBR) is loaded into RAM and executed. In most cases, the MBR holds code that loads the boot sector of the active partition, which then contains actual OS loader code.
The Role of bless
The bless command has two functions. One is to fill in the special fields in the HFS+ volume header. As outlined above, this lets the firmware boot Mac OS X just by picking a volume. The other role is in setting the NVRAM variables for the default operating system to boot.