File System Format
Version 1.02 12/12/00 309
EFI supports the nesting of legacy MBR partitions, by allowing any legacy MBR partition to
contain more legacy MBR partitions. This is accomplished by supporting the same partition
discovery algorithm on every logical block device. It should be noted that the GUID Partition
Table does not allow nesting of GUID Partition Table Headers. Nesting is not needed since a
GUID Partition Table Header can support an arbitrary number of partitions (the addressability
limits of a 64-bit LBA is the limiting factor).
16.2.1 EFI Partition Header
EFI defines a new partitioning scheme that must be supported by EFI firmware. The following list
outlines the advantages of using the GUID Partition Table over the legacy MBR partition table:
Logical Block Addressing is 64-bits.
Supports many partitions.
Uses a primary and backup table for redundancy.
Uses version number and size fields for future expansion.
Uses CRC32 fields for improved data integrity.
Defines a GUID for uniquely identifying each partition.
Uses a GUID and attributes to define partition content type.
Each partition contains a 36 Unicode character human readable name.
The EFI partitioning scheme is depi cted in Figure 16-2. The GUID Partition Table Header (see
Table 16-1) starts with a signature and a revision number that specifies which version of the EFI
specification defines the data bytes in the partition header. The GUID Partition Table Header
contains a header size field that is used in calculating the CRC32 that confirms the integrity of the
GUID Partition Table Header. While the GUID Partition Table Headers size may increase in the
future it can not span more than one block on the device.
Two GUID Partition Table Header structures are stored on the device: the primary and the backup.
The primary GUID Partition Table Header must be located in block 1 of the logical device, and the
backup GUID Partition Table Header must be located in the last block of the logical device. Within
the GUID Partition Table Header there are the MyLBA and AlternateLBA fields. The MyLBA
field contains the logical block address of the GUID Partition Table Header itself, and the
AlternateLBA field contains the logical block address of the other GUID Partition Table Header.
For example, the primary GUID Partition Table Headers MyLBA value would be 1 and its
AlternateLBA would be the value for the last block of the logical device. The backup GUID
Partition Table Headers fields would be reversed.
The GUID Partition Table Header defines the range of logical block addresses that are usable by
Partition Entries. This range is defined to be inclusive of FirstUsableLBA through
LastUsableLBAon the logical device. All data stored on the volume must be stored between the
FirstUsableLBA through LastUsableLBA, and only the data structures defined by EFI to manage
partitions may reside outside of the usable space. The value of DiskGUID is a GUID that uniquely
identifies the entire GUID Partition Table Header and all its associated storage. This value can be
used to uniquely identify the disk. The start of the GUID Partition Entry array is located at the
logical block address PartitionEntryLBA. The size of a GUID Partition Entry element is defined in
the GUID Partition Table Header. There is a 32-bit CRC of the GUID Partition Entry array that is
stored in the GUID Partition Table Header in PartitionEntryArrayCRC. The size of the GUID