Apple has switched to a new disk partitioning scheme known as the GUID partition table, or GPT. This new scheme offers a number of advantages over the previous scheme, but it also presents some new challenges. This technote describes GPT in general, and gives some specific details about how Apple uses GPT.
You should read this technote if you’re writing software that interacts with Apple’s implementation of GPT. Specifically, this technote is vital if you’re writing a disk utility for Mac OS X, or trying to run some alternative operating system, like Linux, on a Macintosh computer.
The Road to GPT
Apple’s previous disk partitioning scheme, known as Apple partition map (APM), was introduced with the Macintosh II in 1987. The scheme was very well designed, and it has survived, with very few changes, for almost twenty years.
However, in recent years APM’s limitations have been looming on the horizon. Specifically, APM is restricted to 32-bits worth of blocks. With a standard block size of 512 bytes, this translates to a maximum disk size of 2 TB. With the rate that hard disks are growing, it’s easy to imagine a typical desktop computer shipping with more than 2 TB of storage in the next few years.
Apple did consider extending APM to support larger disks. However, as such a change would break all existing partitioning tools, it was just as convenient to switch to an entirely new partitioning scheme. After some serious thought, Apple decided to adopt GPT.
The GUID partition table (GPT) partitioning scheme was introduced by Intel as part of an effort to introduce more modern firmware to generic PC hardware. Traditional PC hardware uses BIOS firmware, which uses a partitioning scheme known as master boot record (MBR). MBR has lots of severe limitations, and is not appropriate for a modern computer. Intel’s modern firmware, known as the Extensible Firmware Interface (EFI), includes a new partitioning scheme, GPT.
One of the nice features about GPT is that it is defined by a formal standard. Specifically, GPT is defined by the following documents:
- Section 11.2.2 of “Extensible Firmware Interface Specification”, version 1.1, available from Intel
- Chapter 5 “GUID Partition Table (GPT) Format” of the “Unified Extensible Firmware Interface Specification”, version 2.0, available from the Unified EFI Forum
Because GPT is defined by a formal specification, it is not necessary to describe it in detail here. Thus, this technote concentrates on how GPT is used by Apple. It starts with a high-level overview of GPT. It then describes how Apple has rolled out support for GPT, including a discussion of our partitioning policies. Finally, it concludes with some hints and tips for working with GPT on the Macintosh.