Difference between revisions of "GUID Partition Table"
(→Bootloader Support: flag with Template:Merge: content needs to be relocated to Category:Boot loaders) |
m (→Bootloader Support: Template:Merge doesn't like Category:Boot loaders as target, use Boot loaders) |
||
Line 49: | Line 49: | ||
== Bootloader Support == | == Bootloader Support == | ||
− | {{Merge| | + | {{Merge|Boot loaders|Keep boot loader ''feature support'' in one place.}} |
=== UEFI systems === | === UEFI systems === |
Revision as of 12:19, 25 August 2016
GUID Partition Table (GPT) is a partitioning scheme that is part of the Unified Extensible Firmware Interface specification; it uses a globally unique identifier for qualifying devices. It is the next generation partitioning scheme designed to succeed the Master Boot Record partitioning scheme method. It evolved to deal with several shortcomings of the MBR partitioning scheme method and offers additional advantages.
Contents
About the GUID Partition Table
GUID Partition Table (GPT) uses GUIDs (or UUIDs in linux world) to define partitions and its types, hence the name. The GPT consists of:
Location in the HDD | Purpose |
---|---|
First logical sector of the disk or First 512 bytes | Protective MBR - Same as a normal MBR but the 64-byte area contains a single 0xEE type Primary partition entry defined over the entire size of the disk or in case of >2 TiB, upto a partition size of 2 TiB. |
Second logical sector of the disk or Next 512 bytes | Primary GPT Header - Contains the Unique Disk GUID, Location of the Primary Partition Table, Number of possible entries in partition table, CRC32 checksums of itself and the Primary Partition Table, Location of the Secondary (or Backup) GPT Header |
16 KiB (by default) following the second logical sector of the disk | Primary GPT Table - 128 Partition entries (by default, can be higher), each with an entry of size 128 bytes (hence total of 16 KiB for 128 partition entries). Sector numbers are stored as 64-bit LBA and each partition has a Partition Type GUID and a Unique Partition GUID. |
16 KiB (by default) before the last logical sector of the disk | Secondary GPT table - It is byte-for-byte identical to the Primary table. Used mainly for recovery in case the primary partition table is damaged. |
Last logical sector of the disk or Last 512 bytes | Secondary GPT Header - Contains the Unique Disk GUID, Location of the Secondary Partition Table, Number of possible entries in the partition table, CRC32 checksums of itself and the Secondary Partition Table, Location of the Primary GPT Header. This header can be used to recover GPT info in case the primary header is corrupted. |
Advantages of GPT
- Uses GUIDs (UUIDs) to identify partition types - No collisions.
- Provides a unique disk GUID and unique partition GUID for each partition - A good filesystem-independent way of referencing partitions and disks.
- Arbitrary number of partitions - depends on space allocated for the partition table - No need for extended and logical partitions. By default the GPT table contains space for defining 128 partitions. However if the user wants to define more partitions, he/she can allocate more space to the partition table (currently only gdisk is known to support this feature).
- Uses 64-bit LBA for storing Sector numbers - maximum addressable disk size is 2 ZiB. MBR is limited to addressing 2 TiB of space per drive.
- Stores a backup header and partition table at the end of the disk that aids in recovery in case the primary ones are damaged.
- CRC32 checksums to detect errors and corruption of the header and partition table.
Kernel Support
CONFIG_EFI_PARTITION
option in the kernel config enables GPT support in the kernel (despite the name EFI PARTITION). This options must be built-in the kernel and not compiled as a loadable module. This option is required even if GPT disks are used only for data storage and not for booting. This option is enabled by default in Arch's linux and linux-lts kernels in [core] repo. In case of a custom kernel enable this option by doing CONFIG_EFI_PARTITION=y
.
Bootloader Support
UEFI systems
All UEFI Bootloaders support GPT disks since GPT is a part of UEFI Specification and thus mandatory for UEFI boot. See Boot loaders for more information.
BIOS systems
While GPT support on BIOS systems is theoretically possible it sometimes isn't practical and other times there are complete incompatibilities. Technically the BIOS is only supposed to execute the code on the MBR, therefore leaving the possibility of differing partitioning schemes... However a BIOS may do additional checks including: checking a MBR's integrity, and possibly even for a MBR partition table (though usually only the first partition). If this is a case, a number of workarounds exist that may be able to repair the problem (listed below).
Bootloaders that support GPT/BIOS partitioning scheme bootloading:
Not suported: GRUB Legacy and LILO.
Workarounds
A few workarounds may help boot a BIOS/GPT partitioning scheme; however, before trying these, try booting a BIOS/GPT partitioning scheme with the bootloaders standard procedure. If it doesn't work, these may help boot them (read this for full reference):
- Set the boot flag on the protective MBR partition (type 0xEE) . This can be done with
parted /dev/sdX
anddisk_toggle pmbr_boot
or usingsgdisk /dev/sdX --attributes=1:set:2
. - Be sure there is no EFI system partition
- Create a hybrid MBR. This will be needed for a BIOS that looks for a valid MBR partition (see example below).
- Recompute CHS (Cylinder/Head/Sector) values in the protective MBR. GPT does not use these values but the protective MBR may need to be calibrated to them to work for those BIOS that test them.
- A second disk that has a valid MBR table may signify to the BIOS that it is alright to execute the code on the protective MBR.
- Many computers since 2011 may have support for an EFI booting if wanting from a BIOS option.
Partitioning Utilities
Several partitioning utilities exists.
fdisk and gdisk
See the fdisk article.
GNU Parted
GNU Parted is a full-featured command line program for creating and manipulating partition tables. It can be used interactively and is the backend for the popular GParted GUI partitioning tool.
It supports GPT as well as MBR.
Partitioning examples
Examples of various partitioning setups.
gdisk basic
gdisk basic (with hybrid MBR)
Tip: use MiB, GiB to align to 2048 sectors:
# gdisk /dev/sdX o # create new empty GUID partition table n # partition 1 [enter], from beginning [enter], to 100GiB [+100GiB], linux fs type [enter] n # partition 2 [enter], from beginning [enter], to 108GiB [+8GiB], linux swap [8200] n # partition 3 [enter], from beginning [enter], [+1MiB], linux fs type [enter] r # recovery/transformation menu h # make hybrid mbr 3 # add partition 3 to hybrid mbr Place EFI GPT (0xEE) partition first in MBR (good for GRUB)? (Y/N): N Enter an MBR hex code (default 83): [enter] Set the bootable flag? (Y/N): Y Unused partition space(s) found. Use one to protect more partitions? (Y/N): N w # write table to disk and exit
parted basic (via command line options)
See GNU Parted#Command line mode.
Convert from MBR to GPT
See fdisk#Convert between MBR and GPT.
Resize a partition
See GNU Parted#Resizing Partitions.
Sort the partitions
See also
- Wikipedia's Page on GPT and MBR
- Homepage of Rod Smith's GPT fdisk tool and its Sourceforge.net Project page - gptfdisk
- Rod Smith's page on What's a GPT? Converting MBR to GPT and Booting OSes from GPT
- Rod Smith's page on the New Partition Type GUID for Linux data partitions
- System Rescue CD's page on GPT
- Wikipedia page on BIOS Boot Partition
- Make the most of large drives with GPT and Linux - IBM Developer Works
- Microsoft's Windows and GPT FAQ
- Fedora developer discussion on BIOS/GPT configuration