1 efi partition header – Intel Extensible Firmware Interface User Manual

Page 368

Advertising
background image

Extensible Firmware Interface Specification

11-8

12/01/02

Version 1.10

11.2.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 depicted in Figure 11-2. The GUID Partition Table Header (see
Table 11-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 Header’s size may increase in the
future it cannot 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 Header’s

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 Header’s 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

LastUsableLBA

on 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 Partition Entry array is the

PartitionEntrySize

multiplied by

NumberOfPartitionEntries

. When a GUID

Partition Entry is updated, the

PartitionEntryArrayCRC

must be updated. When the

PartitionEntryArrayCRC

is updated, the GUID Partition Table Header CRC must also be

updated, since the

PartitionEntryArrayCRC

is stored in the GUID Partition Table Header.

Advertising