GUID Partition Table


The GUID Partition Table is a standard for the layout of partition tables of a physical computer storage device, such as a hard disk drive or solid-state drive, using universally unique identifiers, which are also known as globally unique identifiers. Forming a part of the Unified Extensible Firmware Interface standard, it is nevertheless also used for some BIOS systems, because of the limitations of master boot record partition tables, which use 32 bits for logical block addressing of traditional 512-byte disk sectors.
All modern personal computer operating systems support GPT. Some, including macOS and Microsoft Windows on the x86 architecture, support booting from GPT partitions only on systems with EFI firmware, but FreeBSD and most Linux distributions can boot from GPT partitions on systems with either firmware interface: the legacy BIOS or the modern EFI.

History

The Master Boot Record partitioning scheme, widely used since the early 1980s, imposed limitations for use of modern hardware. A major deficiency is the limited size of 32 bits for block addresses and related information. For hard disks with 512-byte sectors, the MBR partition table entries allow a maximum size of 2 TiB.
In the late 1990s, Intel developed a new partition table format as part of what eventually became the Unified Extensible Firmware Interface., the GUID Partition Table forms a subset of the UEFI specification. GPT uses 64 bits for logical block addresses, allowing a maximum disk size of 264 sectors. For disks with 512-byte sectors, the maximum size is 9.4 ZB or 8 ZiB.

Features

Like MBR, GPTs use logical block addressing in place of the historical cylinder-head-sector addressing. The protective MBR is stored at LBA 0, the GPT header is in LBA 1, and the GPT header has a pointer to the partition table, typically at LBA 2. The UEFI specification stipulates that a minimum of 16,384 bytes, regardless of sector size, are allocated for the Partition Entry Array. Each entry has a size of 128 bytes. Thus, on a disk with 512-byte sectors, sector number 34 is the first usable sector on the disk.
Hard-disk manufacturers are transitioning new products to using 4,096-byte sectors. The first such drives continued to present 512-byte physical sectors to the operating system; degraded performance could result when the drive's physical 4-KiB sector boundaries did not coincide with the 4 KiB logical blocks, clusters and virtual memory pages common in many operating systems and file systems. This was a particular problem on write operations, when the drive is forced to perform two read-modify-write operations to satisfy a single misaligned 4 KiB write operation.

MBR variants

Protective MBR (LBA 0)

For limited backward compatibility, the space of the legacy MBR is still reserved in the GPT specification, but it is now used in a way that prevents MBR-based disk utilities from misrecognizing and possibly overwriting GPT disks. This is referred to as a protective MBR.
A single partition type of, encompassing the entire GPT drive, is indicated and identifies it as GPT. Operating systems and tools which cannot read GPT disks will generally recognize the disk as containing one partition of unknown type and no empty space, and will typically refuse to modify the disk unless the user explicitly requests and confirms the deletion of this partition. This minimizes accidental erasures. Furthermore, GPT-aware OSes may check the protective MBR and if the enclosed partition type is not of type or if there are multiple partitions defined on the target device, the OS may refuse to manipulate the partition table.
If the actual size of the disk exceeds the maximum partition size representable using the legacy 32-bit LBA entries in the MBR partition table, the recorded size of this partition is clipped at the maximum, thereby ignoring the rest of the disk. This amounts to a maximum reported size of 2 TiB, assuming a disk with 512 bytes per sector. It would result in 16 TiB with 4 KiB sectors, but since many older operating systems and tools are hard coded for a sector size of 512 bytes or are limited to 32-bit calculations, exceeding the 2 TiB limit could cause compatibility problems.

Hybrid MBR (LBA 0 + GPT)

In operating systems that support GPT-based boot through BIOS services rather than EFI, the first sector may also still be used to store the first stage of the bootloader code, but modified to recognize GPT partitions. The bootloader in the MBR must not assume a sector size of 512 bytes.

Partition table header (LBA 1)

The partition table header defines the usable blocks on the disk. It also defines the number and size of the partition entries that make up the partition table.

Partition entries (LBA 2–33)

OffsetLengthContents
0 16 bytesPartition type GUID
16 16 bytesUnique partition GUID
32 8 bytesFirst LBA
40 8 bytesLast LBA
48 8 bytesAttribute flags
56 72 bytesPartition name

After the header, the Partition Entry Array describes partitions, using a minimum size of 128 bytes for each entry block. The starting location of the array on disk, and the size of each entry, are given in the GPT header. The first 16 bytes of each entry designate the partition type's globally unique identifier. For example, the GUID for an EFI system partition is. The second 16 bytes are a GUID unique to the partition. Then follow the starting and ending 64 bit LBAs, partition attributes, and the 36 character Unicode partition name. As is the nature and purpose of GUIDs and as per RFC4122, no central registry is needed to ensure the uniqueness of the GUID partition type designators.
The 64-bit partition table attributes are shared between 48-bit common attributes for all partition types, and 16-bit type-specific attributes:
BitContent
0Platform required
1EFI firmware should ignore the content of the partition and not try to read from it
2Legacy BIOS bootable
3–47Reserved for future use
48–63Defined and used by the individual partition type

Microsoft defines the type-specific attributes for basic data partition as:
BitContent
60Read-only
61Shadow copy
62Hidden
63No drive letter

Google defines the type-specific attributes for Chrome OS kernel as:
BitContent
56Successful boot flag
55–52Tries remaining
51–48Priority

Support by various operating systems

UNIX and Unix-like systems

Windows: 32-bit versions

Windows 7 and earlier do not support UEFI on 32-bit platforms, and therefore do not allow booting from GPT partitions.
OS versionRelease datePlatformRead or write supportBoot supportNote
Windows XP2001-10-25IA-32
Windows Server 20032003-04-24IA-32
Windows Server 2003 SP12005-03-30IA-32MBR takes precedence in hybrid configuration.
Windows Vista2006-07-22IA-32MBR takes precedence in hybrid configuration.
Windows Server 20082008-02-27IA-32MBR takes precedence in hybrid configuration.
Windows 72009-10-22IA-32MBR takes precedence in hybrid configuration.
Windows 82012-08-01IA-32MBR takes precedence in hybrid configuration.
Windows 8.12013-08-27IA-32MBR takes precedence in hybrid configuration.
Windows 102015-07-29IA-32MBR takes precedence in hybrid configuration.

Windows: 64-bit versions

Limited to 128 partitions per disk.
OS versionRelease datePlatformRead and write supportBoot supportNote
Windows XP Professional x64 Edition
Windows Server 2003
2005-04-25x64MBR takes precedence in hybrid configuration.
Windows Server 20032005-04-25IA-64MBR takes precedence in hybrid configuration.
Windows Vista2006-07-22x64MBR takes precedence in hybrid configuration.
Windows Server 20082008-02-27x64MBR takes precedence in hybrid configuration.
Windows Server 20082008-02-27IA-64MBR takes precedence in hybrid configuration.
Windows 72009-10-22x64MBR takes precedence in hybrid configuration.
Windows Server 2008 R22009-10-22IA-64MBR takes precedence in hybrid configuration.
Windows 8
Windows Server 2012
2012-08-01x64MBR takes precedence in hybrid configuration.
Windows 8.12013-08-27x64MBR takes precedence in hybrid configuration.
Windows 102015-07-29x64MBR takes precedence in hybrid configuration.
Windows Server 20162016-10-12x64MBR takes precedence in hybrid configuration.

Partition Type GUIDs

Each partition has a "partition type GUID" that identifies the type of the partition and therefore partitions of the same type will all have the same "partition type GUID". Each partition also has a "partition unique GUID" as a separate entry, which as the name implies is a unique id for each partition.
Operating systemPartition typeGlobally unique identifier
rowspan="7" Unused entry
MBR partition scheme-
EFI System partition-
BIOS boot partition-
Intel Fast Flash partition -
Sony boot partition-
Lenovo boot partition-
WindowsMicrosoft Reserved Partition
WindowsBasic data partition
WindowsLogical Disk Manager metadata partition
WindowsLogical Disk Manager data partition
WindowsWindows Recovery Environment
WindowsIBM General Parallel File System partition
WindowsStorage Spaces partition
WindowsStorage Replica partition
HP-UXData partition
HP-UXService partition
LinuxLinux filesystem data
LinuxRAID partition
LinuxRoot partition
LinuxRoot partition
LinuxRoot partition
LinuxRoot partition
Linux partition
LinuxSwap partition
LinuxLogical Volume Manager partition
Linux partition
Linux partition
LinuxPlain dm-crypt partition
LinuxLUKS partition
LinuxReserved
FreeBSDBoot partition
FreeBSDData partition
FreeBSDSwap partition
FreeBSDUnix File System partition
FreeBSDVinum volume manager partition
FreeBSDZFS partition
macOS
Darwin
Hierarchical File System Plus partition
macOS
Darwin
Apple APFS container
APFS FileVault volume container
macOS
Darwin
Apple UFS container
macOS
Darwin
ZFS
macOS
Darwin
Apple RAID partition
macOS
Darwin
Apple RAID partition, offline
macOS
Darwin
Apple Boot partition
macOS
Darwin
Apple Label
macOS
Darwin
Apple TV Recovery partition
macOS
Darwin
Apple Core Storage Container
HFS+ FileVault volume container
macOS
Darwin
SoftRAID_Status
macOS
Darwin
SoftRAID_Scratch
macOS
Darwin
SoftRAID_Volume
macOS
Darwin
SoftRAID_Cache
Solaris
illumos
Boot partition
Solaris
illumos
Root partition
Solaris
illumos
Swap partition
Solaris
illumos
Backup partition
Solaris
illumos
partition
Solaris
illumos
partition
Solaris
illumos
partition
Solaris
illumos
Alternate sector
Solaris
illumos
Reserved partition
Solaris
illumos
Reserved partition
Solaris
illumos
Reserved partition
Solaris
illumos
Reserved partition
Solaris
illumos
Reserved partition
NetBSDSwap partition
NetBSDFFS partition
NetBSDLFS partition
NetBSDRAID partition
NetBSDConcatenated partition
NetBSDEncrypted partition
Chrome OSChrome OS kernel
Chrome OSChrome OS rootfs
Chrome OSChrome OS future use
Container Linux by CoreOS/usr partition
Container Linux by CoreOSResizable rootfs
Container Linux by CoreOSOEM customizations
Container Linux by CoreOSRoot filesystem on RAID
HaikuHaiku BFS
MidnightBSDBoot partition
MidnightBSDData partition
MidnightBSDSwap partition
MidnightBSDUnix File System partition
MidnightBSDVinum volume manager partition
MidnightBSDZFS partition
CephJournal
Cephdm-crypt journal
CephOSD
Cephdm-crypt OSD
CephDisk in creation
Cephdm-crypt disk in creation
CephBlock
CephBlock DB
CephBlock write-ahead log
CephLockbox for dm-crypt keys
CephMultipath OSD
CephMultipath journal
CephMultipath block
CephMultipath block
CephMultipath block DB
CephMultipath block write-ahead log
Cephdm-crypt block
Cephdm-crypt block DB
Cephdm-crypt block write-ahead log
Cephdm-crypt LUKS journal
Cephdm-crypt LUKS block
Cephdm-crypt LUKS block DB
Cephdm-crypt LUKS block write-ahead log
Cephdm-crypt LUKS OSD
OpenBSDData partition
QNXPower-safe file system
Plan 9Plan 9 partition
VMware ESXvmkcore
VMware ESXVMFS filesystem partition
VMware ESXVMware Reserved
Android-IABootloader
Android-IABootloader2
Android-IABoot
Android-IARecovery
Android-IAMisc
Android-IAMetadata
Android-IASystem
Android-IACache
Android-IAData
Android-IAPersistent
Android-IAVendor
Android-IAConfig
Android-IAFactory
Android-IAFactory
Android-IAFastboot / Tertiary
Android-IAOEM
Android 6.0+ ARMAndroid Meta
Android 6.0+ ARMAndroid EXT
Open Network Install Environment Boot
Open Network Install Environment Config
PowerPCPReP boot
freedesktop.org OSes Shared boot loader configuration
Atari TOSBasic data partition
VeraCryptEncrypted data partition

See Also