NAME
gdisk - GUID partition table (GPT) manipulator for Linux and Unix
SYNOPSIS
gdisk [ -l ] device
DESCRIPTION
GPT fdisk (aka gdisk) is a text-mode menu-driven program for creation
and manipulation of partition tables. It will automatically convert an
old-style Master Boot Record (MBR) partition table or BSD disklabel
stored without an MBR carrier partition to the newer Globally Unique
Identifier (GUID) Partition Table (GPT) format, or will load a GUID
partition table. When used with the -l command-line option, the program
displays the current partition table and then exits.
GPT fdisk operates mainly on the GPT headers and partition tables;
however, it can and will generate a fresh protective MBR, when
required. (Any boot loader code in the protective MBR will not be
disturbed.) If you’ve created an unusual protective MBR, such as a
hybrid MBR created by gptsync or gdisk’s own hybrid MBR creation
feature, this should not be disturbed by most ordinary actions. Some
advanced data recovery options require you to understand the
distinctions between the main and backup data, as well as between the
GPT headers and the partition tables. For information on MBR vs. GPT,
as well as GPT terminology and structure, see the extended gdisk
documentation at http://www.rodsbooks.com/gdisk/ or consult Wikipedia.
The gdisk program employs a user interface similar to that of Linux’s
fdisk, but gdisk modifies GPT partitions. It also has the capability of
transforming MBR partitions or BSD disklabels into GPT partitions. Like
the original fdisk program, gdisk does not modify disk structures until
you explicitly write them to disk, so if you make a mistake, you can
exit from the program with the ’q’ option to save your partitions.
Ordinarily, gdisk operates on disk device files, such as /dev/sda or
/dev/hda under Linux, /dev/disk0 under Mac OS X, or /dev/ad0 or
/dev/da0 under FreeBSD. The program can also operate on disk image
files, which can be either copies of whole disks (made with dd, for
instance) or raw disk images used by emulators such as QEMU or VMWare.
Note that only raw disk images are supported; gdisk cannot work on
compressed or other advanced disk image formats.
The MBR partitioning system uses a combination of cylinder/head/sector
(CHS) addressing and logical block addressing (LBA). The former is
klunky and limiting. GPT drops CHS addressing and uses 64-bit LBA mode
exclusively. Thus, GPT data structures, and therefore gdisk, do not
need to deal with CHS geometries and all the problems they create.
Users of fdisk will note that gdisk lacks the options and limitations
associated with CHS geometries.
For best results, you should use an OS-specific partition table program
whenever possible. For example, you should make Mac OS X partitions
with the Mac OS X Disk Utility program and Linux partitions with the
Linux gdisk or GNU Parted program.
Upon start, gdisk attempts to identify the partition type in use on the
disk. If it finds valid GPT data, gdisk will use it. If gdisk finds a
valid MBR or BSD disklabel but no GPT data, it will attempt to convert
the MBR or disklabel into GPT form. (BSD disklabels are likely to have
unusable first and/or final partitions because they overlap with the
GPT data structures, though.) GPT fdisk can identify, but not use data
in, Apple Partition Map (APM) disks, which are used on 680x0- and
PowerPC-based Macintoshes. Upon exiting with the ’w’ option, gdisk
replaces the MBR or disklabel with a GPT. This action is potentially
dangerous! Your system may become unbootable, and partition type codes
may become corrupted if the disk uses unrecognized type codes. Boot
problems are particularly likely if you’re multi-booting with any
GPT-unaware OS. If you mistakenly launch gdisk on an MBR disk, you can
safely exit the program without making any changes by using the ’q’
option.
The MBR-to-GPT conversion will leave at least one gap in the partition
numbering if the original MBR used logical partitions. These gaps are
harmless, but you can eliminate them by using the ’s’ option, if you
like. (Doing this may require you to update your /etc/fstab file.)
When creating a fresh partition table, certain considerations may be in
order:
* For data (non-boot) disks, and for boot disks used on BIOS-based
computers with GRUB as the boot loader, partitions may be
created in whatever order and in whatever sizes are desired.
* Boot disks for EFI-based systems require an EFI System Partition
(gdisk internal code 0xEF00) formatted as FAT-32. The
recommended size of this partition is between 100 and 200 MiB.
Boot-related files are stored here. (Note that GNU Parted
identifies such partitions as having the "boot flag" set.)
* Some boot loaders for BIOS-based systems make use of a BIOS Boot
Partition (gdisk internal code 0xEF02), in which the secondary
boot loader is stored, possibly without the benefit of a
filesystem. This partition can typically be quite small (roughly
32 to 200 KiB), but you should consult your boot loader
documentation for details.
* If Windows is to boot from a GPT disk, a partition of type
Microsoft Reserved (gdisk internal code 0x0C01) is recommended.
This partition should be about 128 MiB in size. It ordinarily
follows the EFI System Partition and immediately precedes the
Windows data partitions. (Note that GNU Parted creates all FAT
partitions as this type, which actually makes the partition
unusable for normal file storage in both Windows and Mac OS X.)
* Some OSes’ GPT utilities create some blank space (typically 128
MiB) after each partition. The intent is to enable future disk
utilities to use this space. Such free space is not required of
GPT disks, but creating it may help in future disk maintenance.
You can use GPT fdisk’s relative partition positioning option
(specifying the starting sector as ’+128M’, for instance) to
simplify creating such gaps.
OPTIONS
-l List the partition tables for the specified devices and then
exit.
Most interactions with gdisk occur with its interactive text-mode
menus. Three menus exist: the main menu, the recovery & transformation
menu, and the experts’ menu. The main menu provides the functions that
are most likely to be useful for typical partitioning tasks, such as
creating and deleting partitions, changing partition type codes, and so
on. Specific functions are:
b Save partition data to a backup file. You can back up your
current in-memory partition table to a disk file using this
option. The resulting file is a binary file consisting of the
protective MBR, the main GPT header, the backup GPT header, and
one copy of the partition table, in that order. Note that the
backup is of the current in-memory data structures, so if you
launch the program, make changes, and then use this option, the
backup will reflect your changes. Note also that the restore
option is on the recovery & transformation menu; the backup
option is on the main menu to encourage its use.
c Change the GPT name of a partition. This name is encoded as a
UTF-16 string, but gdisk supports only ASCII characters as
names. For the most part, Linux ignores the partition name, but
it may be important in some OSes. GPT fdisk sets a default name
based on the partition type code.
d Delete a partition. This action deletes the entry from the
partition table but does not disturb the data within the sectors
originally allocated to the partition on the disk. If a
corresponding hybrid MBR partition exists, gdisk deletes it, as
well, and expands any adjacent 0xEE (EFI GPT) MBR protective
partition to fill the new free space.
i Show detailed partition information. The summary information
produced by the ’p’ command necessarily omits many details, such
as the partition’s unique GUID and the translation of gdisk’s
internal partition type code to a plain type name. The ’i’
option displays this information for a single partition.
l Display a summary of partition types. GPT uses a GUID to
identify partition types for particular OSes and purposes. For
ease of data entry, gdisk compresses these into two-byte
(four-digit hexadecimal) values that are related to their
equivalent MBR codes. Specifically, the MBR code is multiplied
by hexadecimal 0x0100. For instance, the code for Linux swap
space in MBR is 0x82, and it’s 0x8200 in gdisk. A one-to-one
correspondence is impossible, though. Most notably, many DOS,
Windows, and Linux data partition codes correspond to a single
GPT code (entered as 0x0700 in gdisk). Some OSes use a single
MBR code but employ many more codes in GPT. For these, gdisk
adds code numbers sequentially, such as 0xa500 for a FreeBSD
disklabel, 0xa501 for FreeBSD boot, 0xa502 for FreeBSD swap, and
so on. Note that these two-byte codes are unique to gdisk.
n Create a new partition. This command is modelled after the
equivalent fdisk option, although some differences exist. You
enter a partition number, starting sector, and an ending sector.
Both start and end sectors can be specified in absolute terms as
sector numbers or as positions measured in kilobytes (K),
megabytes (M), gigabytes (G), or terabytes (T); for instance,
40M specifies a position 40MiB from the start of the disk. You
can specify locations relative to the start or end of the
specified range by preceding the number by a ’+’ or ’-’ symbol,
as in +2G to specify a point 2GiB after the first available
sector, or -200M to specify a point 200MiB before the last
available sector. Pressing the Enter key with no input specifies
the default value, which is the start of the largest available
block for the start sector and the last available block for the
end sector.
o Clear out all partition data. This includes GPT header data, all
partition definitions, and the protective MBR.
p Display basic partition summary data. This includes partition
numbers, starting and ending sector numbers, partition sizes,
gdisk’s partition types codes, and partition names. For
additional information, use the ’i’ command.
q Quit from the program without saving your changes. Use this
option if you just wanted to view information or if you make a
mistake and want to back out of all your changes.
r Enter the recovery & transformation menu. This menu includes
emergency recovery options (to fix damaged GPT data structures)
and options to transform to or from other partitioning systems,
including creating hybrid MBRs.
s Sort partition entries. GPT partition numbers need not match the
order of partitions on the disk. If you want them to match, you
can use this option. Note that some partitioning utilities sort
partitions whenever they make changes. Such changes will be
reflected in your device filenames, so you may need to edit
/etc/fstab if you use this option.
t Change a single partition’s type code. You enter the type code
using a two-byte hexadecimal number, as described earlier. You
may also enter a GUID directly, if you have one and gdisk
doesn’t know it.
v Verify disk. This option checks for a variety of problems, such
as incorrect CRCs and mismatched main and backup data. This
option does not automatically correct most problems, though; for
that, you must use options on the recovery & transformation
menu. If no problems are found, this command displays a summary
of unallocated disk space.
w Write data. Use this command to save your changes.
x Enter the experts’ menu. Using this option provides access to
features you can use to get into even more trouble than the main
menu allows.
? Print the menu. Type this command (or any other unrecognized
command) to see a summary of available options.
The second gdisk menu is the recovery & transformation menu, which
provides access to data recovery options and features related to the
transformation of partitions between partitioning schemes (converting
BSD disklabels into GPT partitions or creating hybrid MBRs, for
instance). A few options on this menu duplicate functionality on the
main menu, for the sake of convenience. The options on this menu are:
b Rebuild GPT header from backup. You can use the backup GPT
header to rebuild the main GPT header with this option. It’s
likely to be useful if your main GPT header was damaged or
destroyed (say, by sloppy use of dd).
c Load backup partition table. Ordinarily, gdisk uses only the
main partition table (although the backup’s integrity is checked
when you launch the program). If the main partition table has
been damaged, you can use this option to load the backup from
disk and use it instead. Note that this will almost certainly
produce no or strange partition entries if you’ve just converted
an MBR disk to GPT format, since there will be no backup
partition table on disk.
d Use main GPT header and rebuild the backup. This option is
likely to be useful if the backup GPT header has been damaged or
destroyed.
e Load main partition table. This option reloads the main
partition table from disk. It’s only likely to be useful if
you’ve tried to use the backup partition table (via ’c’) but
it’s in worse shape then the main partition table.
f Load MBR and build fresh GPT from it. Use this option if your
GPT is corrupt or conflicts with the MBR and you want to use the
MBR as the basis for a new set of GPT partitions.
g Convert GPT into MBR and exit. This option converts up to four
GPT partitions into MBR form, destroys the GPT data structures,
saves the new MBR, and exits. Use this option if you’ve tried
GPT and find that MBR works better for you. Note that this
function generates up to four primary MBR partitions; it cannot
generate logical partitions, and so it cannot transform more
than four partitions. If four or fewer partitions exist, and if
they can be represented in the 32-bit MBR LBA scheme, this
function converts them all. If more than four partitions exist,
you’ll be asked to select which ones to convert. See also the
’h’ option.
h Create a hybrid MBR. This is an ugly workaround that enables
GPT-unaware OSes, or those that can’t boot from a GPT disk, to
access up to three of the partitions on the disk by creating MBR
entries for them. Note that these hybrid MBR entries can easily
go out of sync with the GPT entries, particularly when
hybrid-unaware GPT utilities are used to edit the disk. Thus,
you may need to recreate the hybrid MBR if you use such tools.
i Show detailed partition information. This option is identical to
the ’i’ option on the main menu.
l Load partition data from a backup file. This option is the
reverse of the ’b’ option on the main menu. Note that restoring
partition data from anything but the original disk is not
recommended.
m Return to the main menu. This option enables you to enter
main-menu commands.
o Print protective MBR data. You can see a summary of the
protective MBR’s partitions with this option. This may enable
you to spot glaring problems or help identify the partitions in
a hybrid MBR.
p Print the partition table. This option is identical to the ’p’
option in the main menu.
q Quit without saving changes. This option is identical to the ’q’
option in the main menu.
t Transform BSD partitions into GPT partitions. This option works
on BSD disklabels held within GPT (or converted MBR) partitions.
Converted partitions’ type codes are likely to need manual
adjustment. gdisk will attempt to convert BSD disklabels stored
on the main disk when launched, but this conversion is likely to
produce first and/or last partitions that are unusable. The many
BSD variants means that the probability of gdisk being unable to
convert a BSD disklabel is high compared to the likelihood of
problems with an MBR conversion.
v Verify disk. This option is identical to the ’v’ option in the
main menu.
w Write table to disk and exit. This option is identical to the
’w’ option in the main menu.
x Enter the experts’ menu. This option is identical to the ’x’
option in the main menu.
? Print the menu. This option (or any unrecognized entry) displays
a summary of the menu options.
The third gdisk menu is the experts’ menu. This menu provides advanced
options that aren’t closely related to recovery or transformation
between partitioning systems. Its options are:
a Set attributes. GPT provides a 64-bit attributes field that can
be used to set features for each partition. gdisk supports four
attributes: system partition, read-only, hidden, and do not
automount. You can set other attributes, but their numbers
aren’t translated into anything useful. In practice, most OSes
seem to ignore these attributes.
c Change partition GUID. You can enter a custom unique GUID for a
partition using this option. (Note this refers to the GUID that
uniquely identifies a partition, not to its type code, which you
can change with the ’t’ main-menu option.) Ordinarily, gdisk
assigns this number randomly; however, you might want to adjust
the number manually if you’ve wound up with the same GUID on two
partitions because of buggy GUID assignments (hopefully not in
gdisk) or sheer incredible coincidence.
e Move backup GPT data structures to the end of the disk. Use this
command if you’ve added disks to a RAID array, thus creating a
virtual disk with space that follows the backup GPT data
structures. This command moves the backup GPT data structures to
the end of the disk, where they belong.
g Change disk GUID. Each disk has a unique GUID code, which gdisk
assigns randomly upon creation of the GPT data structures. You
can generate a fresh random GUID or enter one manually with this
option.
i Show detailed partition information. This option is identical to
the ’i’ option on the main menu.
m Return to the main menu. This option enables you to enter
main-menu commands.
n Create a new protective MBR. Use this option if the current
protective MBR is damaged in a way that gdisk doesn’t
automatically detect and correct, or if you want to convert a
hybrid MBR into a "pure" GPT with a conventional protective MBR.
o Print protective MBR data. You can see a summary of the
protective MBR’s partitions with this option. This may enable
you to spot glaring problems or help identify the partitions in
a hybrid MBR.
p Print the partition table. This option is identical to the ’p’
option in the main menu.
q Quit without saving changes. This option is identical to the ’q’
option in the main menu.
r Enter the recovery & transformations menu. This option is
identical to the ’r’ option on the main menu.
s Resize partition table. The default partition table size is 128
entries. Officially, sizes of less than 16KB (128 entries,
given the normal entry size) are unsupported by the GPT
specification; however, in practice they seem to work, and can
sometimes be useful in converting MBR disks. Larger sizes also
work fine. OSes may impose their own limits on the number of
partitions, though.
v Verify disk. This option is identical to the ’v’ option in the
main menu.
z Zap (destroy) the GPT data structures and exit. Use this option
if you want to repartition a GPT disk using fdisk or some other
GPT-unaware program. You’ll be given the choice of preserving
the existing MBR, in case it’s a hybrid MBR with salvageable
partitions or if you’ve already created new MBR partitions and
want to erase the remnants of your GPT partitions. If youve
already created new MBR partitions, its conceivable that this
option will damage the first and/or last MBR partitions! Such an
event is unlikely, but could occur if your new MBR partitions
overlap the old GPT data structures.
? Print the menu. This option (or any unrecognized entry) displays
a summary of the menu options.
In many cases, you can press the Enter key to select a default option
when entering data. When only one option is possible, gdisk usually
bypasses the prompt entirely.
BUGS
As of November 2009 (version 0.5.1), gdisk should be considered beta
software. Known bugs and limitations include:
* The program compiles correctly only on Linux, FreeBSD, and Mac
OS X. Linux versions for x86-64 (64-bit), x86 (32-bit), and
PowerPC (32-bit) have been tested, with the x86-64 version
having seen the most testing. The Mac OS X support was added
with version 0.3.1 and has not been as thoroughly tested.
FreeBSD support was added with version 0.4.0 and has seen even
less testing.
* The FreeBSD version of the program can’t write changes to the
partition table to a disk when existing partitions on that disk
are mounted. (The same problem exists with many other FreeBSD
utilities, such as gpt, fdisk, and dd.)
* The fields used to display the start and end sector numbers for
partitions in the ’p’ command are 14 characters wide. This
translates to a limitation of about 45 PiB. On larger disks, the
displayed columns will go out of alignment.
* Only ASCII characters are supported in the partition name field.
If an existing partition uses non-ASCII UTF-16 characters,
they’re likely to be corrupted in the ’i’ and ’p’ menu options’
displays; however, they should be preserved when loading and
saving partitions.
* The program can load only up to 128 partitions (4 primary
partitions and 124 logical partitions) when converting from MBR
format. This limit can be raised by changing the #define
MAX_MBR_PARTS line in the mbr.h source code file and
recompiling; however, such a change will require using a
larger-than-normal partition table. (The limit of 128 partitions
was chosen because that number equals the 128 partitions
supported by the most common partition table size.)
* Converting from MBR format sometimes fails because of
insufficient space at the start or (more commonly) the end of
the disk. Resizing the partition table (using the ’s’ option in
the experts’ menu) can sometimes overcome this problem; however,
in extreme cases it may be necessary to resize a partition using
GNU Parted or a similar tool prior to conversion with gdisk.
* MBR conversions work only if the disk has correct LBA partition
descriptors. These descriptors should be present on any disk
over 8 GiB in size or on smaller disks partitioned with any but
very ancient software.
* BSD disklabel support can create first and/or last partitions
that overlap with the GPT data structures. This can sometimes be
compensated by adjusting the partition table size, but in
extreme cases the affected partition(s) may need to be deleted.
* Because of the highly variable nature of BSD disklabel
structures, conversions from this form may be unreliable --
partitions may be dropped, converted in a way that creates
overlaps with other partitions, or converted with incorrect
start or end values. Use this feature with caution!
* Booting after converting an MBR or BSD disklabel disk is likely
to be disrupted. Sometimes re-installing a boot loader will fix
the problem, but other times you may need to switch boot
loaders. Except on EFI-based platforms, Windows through at least
Windows 7 RC doesn’t support booting from GPT disks. Creating a
hybrid MBR (using the ’h’ option on the recovery &
transformation menu) or abandoning GPT in favor of MBR may be
your only options in this case.
The support for big-endian CPUs (PowerPC, for example) is new, as of
version 0.3.5. I advise using caution on that platform, particularly
with the more obscure features of the program.
AUTHORS
Primary author: Roderick W. Smith (rodsmith@rodsbooks.com)
Contributors:
* Yves Blusseau (1otnwmz02@sneakemail.com)
* David Hubbard (david.c.hubbard@gmail.com)
SEE ALSO
cfdisk (8), fdisk (8), mkfs (8), parted (8), sfdisk (8)
http://en.wikipedia.org/wiki/GUID_Partition_Table
http://developer.apple.com/technotes/tn2006/tn21.html
http://www.rodsbooks.com/gdisk/
AVAILABILITY
The gdisk command is part of the GPT fdisk package and is available
from Rod Smith.