.\" Copyright 2011-2015 Roderick W. Smith (rodsmith@rodsbooks.com)
.\" May be distributed under the GNU General Public License
.TH "SGDISK" "8" "1.0.1" "Roderick W. Smith" "GPT fdisk Manual"
.SH "NAME"
sgdisk \- Command\-line GUID partition table (GPT) manipulator for Linux and Unix
.SH "SYNOPSIS"
.BI "sgdisk "
[ options ]
.I device

.SH "DESCRIPTION"
GPT fdisk is a text\-mode menu\-driven package for creation and manipulation of
partition tables. It consists of two programs: the text\-mode interactive
\fBgdisk\fR and the command\-line \fBsgdisk\fR. Either program 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. This man page documents the command\-line \fBsgdisk\fR
program.

Some advanced data manipulation and
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 \fBgdisk\fR documentation at
\fIhttp://www.rodsbooks.com/gdisk/\fR or consult Wikipedia.

The \fBsgdisk\fR program employs a user interface that's based entirely on
the command line, making it suitable for use in scripts or by experts who
want to make one or two quick changes to a disk. (The program may query the
user when certain errors are encountered, though.) The program's name is
based on \fBsfdisk\fR, but the user options of the two programs are
entirely different from one another.

Ordinarily, \fBsgdisk\fR operates on disk device files, such as
\fI/dev/sda\fR or \fI/dev/hda\fR under Linux, \fI/dev/disk0\fR under
Mac OS X, or \fI/dev/ad0\fR or \fI/dev/da0\fR under FreeBSD. The program
can also operate on disk image files, which can be either copies of whole
disks (made with \fBdd\fR, for instance) or raw disk images used by
emulators such as QEMU or VMWare. Note that only \fIraw\fR disk images
are supported; \fBsgdisk\fR 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
\fBsgdisk\fR, do not need to deal with CHS geometries and all the problems
they create.

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 \fBgdisk\fR, \fBsgdisk\fR, or GNU Parted programs.

Upon start, \fBsgdisk\fR attempts to identify the partition type in use on
the disk. If it finds valid GPT data, \fBsgdisk\fR will use it. If
\fBsgdisk\fR 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. If you specify any option that results in
changes to an MBR or BSD disklabel, \fBsgdisk\fR ignores those changes
unless the \fI\-g\fR (\fI\-\-mbrtogpt\fR), \fI\-z\fR (\fI\-\-zap\fR), or
\fI\-Z\fR (\fI\-\-zap\-all\fR) option is used. If you use the \fI\-g\fR
option, \fBsgdisk\fR replaces the MBR or disklabel with a GPT. \fIThis
action is potentially dangerous!\fR 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.

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 \fI\-s\fR (\fI\-\-sort\fR)
option, if you like. (Doing this may require you to update your
\fI/etc/fstab\fR file.)

When creating a fresh partition table, certain considerations may be in
order:

.TP 
.B *
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.

.TP 
.B *
Boot disks for EFI\-based systems require an \fIEFI System
Partition\fR (\fBsgdisk\fR internal code 0xEF00) formatted as FAT\-32.
The recommended size of this partition is between 100 and 300 MiB.
Boot\-related files are stored here. (Note that GNU Parted identifies
such partitions as having the "boot flag" set.)

.TP 
.B *
Some boot loaders for BIOS\-based systems make use of a \fIBIOS Boot
Partition\fR (\fBsgdisk\fR 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.

.TP 
.B *
If Windows is to boot from a GPT disk, a partition of type \fIMicrosoft
Reserved\fR (\fBsgdisk\fR
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.)

.TP 
.B *
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.

.SH "OPTIONS"
Some options take no arguments, others take one argument (typically a partition
number), and others take compound arguments with colon delimitation. For
instance, \fI\-n\fR (\fI\-\-new\fR) takes a partition number, a starting
sector number, and an ending sector number, as in \fBsgdisk \-n 2:2000:50000
/dev/sdc\fR, which creates a new partition, numbered 2, starting at sector
2000 an ending at sector 50,000, on \fI/dev/sdc\fR.

Unrelated options may be combined; however, some such combinations will be
nonsense (such as deleting a partition and then changing its GUID type code).
\fBsgdisk\fR interprets options in the order in which they're entered, so
effects can vary depending on order. For instance, \fBsgdisk \-s \-d 2\fR
sorts the partition table entries and then deletes partition 2 from the
newly\-sorted list; but \fBsgdisk \-d 2 \-s\fR deletes the original partition
2 and then sorts the modified partition table.

Error checking and opportunities to correct mistakes in \fBsgdisk\fR are
minimal. Although the program endeavors to keep the GPT data structures legal,
it does not prompt for verification before performing its actions. Unless you
require a command\-line\-driven program, you should use the interactive
\fBgdisk\fR instead of \fBsgdisk\fR, since \fBgdisk\fR allows you to
quit without saving your changes, should you make a mistake.

Although \fBsgdisk\fR is based on the same partition\-manipulation code as
\fBgdisk\fR, \fBsgdisk\fR implements fewer features than its interactive
sibling. Options available in \fBsgdisk\fR are:

.TP 
.B \-a, \-\-set\-alignment=value
Set the sector alignment multiple. GPT fdisk aligns the start of partitions
to sectors that are multiples of this value, which defaults to 1MiB (2048
on disks with 512-byte sectors) on freshly formatted disks. This alignment
value is necessary to obtain optimum performance with Western Digital
Advanced Format and similar drives with larger physical than logical sector
sizes, with some types of RAID arrays, and with SSD devices.

.TP
.B \-A, \-\-attributes=list|[partnum:show|or|nand|xor|=|set|clear|toggle|get[:bitnum|hexbitmask]]
View or set partition attributes. Use \fIlist\fR to see defined (known)
attribute values. Omit the partition number (and even the device filename)
when using this option. The others require a partition number. The
\fIshow\fR and \fIget\fR options show the current attribute settings
(all attributes or for a particular bit, respectively). The \fIor\fR,
\fInand\fR, \fIxor\fR, \fI=\fR, \fIset\fR, \fIclear\fR, and
\fItoggle\fR options enable you to change the attribute bit value. The
\fIset\fR, \fIclear\fR, \fItoggle\fR, and \fIget\fR options work on a
bit number; the others work on a hexadecimal bit mask. For example, type 
\fBsgdisk -A 4:set:2 /dev/sdc\fR to set the bit 2 attribute (legacy BIOS
bootable) on partition 4 on \fI/dev/sdc\fR.

.TP 
.B \-b, \-\-backup=file
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. If the GPT data structures are damaged,
the backup may not accurately reflect the damaged state; instead, they
will reflect GPT fdisk's first\-pass interpretation of the GPT.

.TP 
.B \-c, \-\-change\-name=partnum:name
Change the GPT name of a partition. This name is encoded as a UTF\-16
string, but proper entry and display of anything beyond basic ASCII values
requires suitable locale and font support. For the most part, Linux ignores
the partition name, but it may be important in some OSes. If you want to
set a name that includes a space, enclose it in quotation marks, as in
\fIsgdisk \-c 1:"Sample Name" /dev/sdb\fR. Note that the GPT name of a
partition is distinct from the filesystem name, which is encoded in the
filesystem's data structures.

.TP
.B \-C, \-\-recompute-chs
Recompute CHS values in protective or hybrid MBR. This option can sometimes
help if a disk utility, OS, or BIOS doesn't like the CHS values used by the
partitions in the protective or hybrid MBR. In particular, the GPT
specification requires a CHS value of 0xFFFFFF for over-8GiB partitions,
but this value is technically illegal by the usual standards. Some BIOSes
hang if they encounter this value. This option will recompute a more normal
CHS value -- 0xFEFFFF for over-8GiB partitions, enabling these BIOSes to
boot.

.TP 
.B \-d, \-\-delete=partnum
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,
\fBgdisk\fR deletes it, as well, and expands any adjacent 0xEE (EFI GPT)
MBR protective partition to fill the new free space.

.TP 
.B \-D, \-\-display\-alignment
Display current sector alignment value. Partitions will be created on multiples
of the sector value reported by this option. You can change the alignment value
with the \-a option.

.TP 
.B e, \-\-move\-second\-header
Move backup GPT data structures to the end of the disk. Use this option 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.

.TP 
.B \-E, \-\-end\-of\-largest
Displays the sector number of the end of the largest available block of
sectors on the disk. A script may store this value and pass it back as
part of \fI\-n\fR's option to create a partition. If no unallocated
sectors are available, this function returns the value 0.

.TP 
.B \-f, \-\-first\-in\-largest
Displays the sector number of the start of the largest available block of
sectors on the disk. A script may store this value and pass it back as
part of \fI\-n\fR's option to create a partition. If no unallocated
sectors are available, this function returns the value 0. Note that this
parameter is blind to partition alignment; when you actually create a
partition, its start point might be changed from this value.

.TP
.B \-F, \-\-first\-aligned\-in\-largest
Similar to \fI\-f\fR (\fI\-\-first\-in\-largest\fR), except returns the
sector number with the current alignment correction applied. Use this
function if you need to compute the actual partition start point rather
than a theoretical start point or the actual start point if you set the
alignment value to 1.

.TP 
.B \-g, \-\-mbrtogpt
Convert an MBR or BSD disklabel disk to a GPT disk. As a safety measure, use of
this option is required on MBR or BSD disklabel disks if you intend to save your
changes, in order to prevent accidentally damaging such disks.

.TP
.B \-G, \-\-randomize\-guids
Randomize the disk's GUID and all partitions' unique GUIDs (but not their
partition type code GUIDs). This function may be used after cloning a disk
in order to render all GUIDs once again unique.

.TP 
.B \-h, \-\-hybrid
Create a hybrid MBR. This option takes from one to three partition numbers,
separated by colons, as arguments. The created hybrid MBR places an EFI GPT
(type 0xEE) partition first in the table, followed by the partition(s) you
specify. Their type codes are based on the GPT fdisk type codes divided by
0x0100, which is usually correct for Windows partitions. If the
active/bootable flag should be set, you must do so in another program, such
as \fBfdisk\fR. The \fBgdisk\fR program offers additional hybrid MBR
creation options.

.TP 
.B \-i, \-\-info=partnum
Show detailed partition information. The summary information produced by
the \fI\-p\fR command necessarily omits many details, such as the partition's
unique GUID and the translation of \fBsgdisk\fR's
internal partition type code to a plain type name. The \fI\-i\fR option
displays this information for a single partition.

.TP 
.B \-l, \-\-load\-backup=file
Load partition data from a backup file. This option is the reverse of the
\fI\-b\fR option. Note that restoring partition data from anything
but the original disk is not recommended. This option will work even if the
disk's original partition table is bad; however, most other options on the
same command line will be ignored.

.TP 
.B \-L, \-\-list\-types
Display a summary of partition types. GPT uses a GUID to identify partition
types for particular OSes and purposes. For ease of data entry,
\fBsgdisk\fR 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 \fBgdisk\fR. A
one\-to\-one correspondence is impossible, though. Most notably, the codes
for all varieties of FAT and NTFS partition correspond to a single GPT code
(entered as 0x0700 in \fBsgdisk\fR). Some OSes use a single MBR code but
employ many more codes in GPT. For these, \fBsgdisk\fR 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 \fBgdisk\fR and \fBsgdisk\fR. This option does not require
you to specify a valid disk device filename.

.TP 
.B \-m, \-\-gpttombr
Convert disk from GPT to MBR form. This option takes from one to four
partition numbers, separated by colons, as arguments. Their type codes are
based on the GPT fdisk type codes divided by 0x0100. If the active/bootable
flag should be set, you must do so in another program, such as \fBfdisk\fR.
The \fBgdisk\fR program offers additional MBR conversion options. It is not
possible to convert more than four partitions from GPT to MBR form or to
convert partitions that start above the 2TiB mark or that are larger than
2TiB.

.TP 
.B \-n, \-\-new=partnum:start:end
Create a new partition. 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 kibibytes (K),
mebibytes (M), gibibytes (G), tebibytes (T), or pebibytes (P); for
instance, \fI\fB40M\fR\fR specifies a position 40MiB from the start of the
disk. You can specify locations relative to the start or end of the
specified default range by preceding the number by a '+' or '\-' symbol, as
in \fI\fB+2G\fR\fR to specify a point 2GiB after the default start sector,
or \fI\fB\-200M\fR\fR to specify a point 200MiB before the last available
sector. A start or end value of 0 specifies the default value, which is the
start of the largest available block for the start sector and the end of
the same block for the end sector. A partnum value of 0 causes the program
to use the first available partition number. Subsequent uses of the
\fI\-A\fR, \fI\-c\fR, \fI\-t\fR, and \fI\-u\fR options may also use
\fI0\fR to refer to the same partition.

.TP
.B \-N, \-\-largest\-new=num
Create a new partition that fills the largest available block of space on
the disk. You can use the \fI\-a\fR (\fI\-\-set\-alignment\fR) option to
adjust the alignment, if desired. A num value of 0 causes the program to
use the first available partition number.

.TP 
.B \-o, \-\-clear
Clear out all partition data. This includes GPT header data, all partition
definitions, and the protective MBR. Note that this operation will, like
most other operations, fail on a damaged disk. If you want to prepare a
disk you know to be damaged for GPT use, you should first wipe it with -Z
and then partition it normally. This option will work even if the
disk's original partition table is bad; however, most other options on the
same command line will be ignored.

.TP 
.B \-O, \-\-print\-mbr
Display basic \fIMBR\fR partition summary data. This includes partition
numbers, starting and ending sector numbers, partition sizes, MBR partition
types codes, and partition names. This option is useful mainly for
diagnosing partition table problems, particularly on disks with hybrid
MBRs.

.TP 
.B \-p, \-\-print
Display basic GPT partition summary data. This includes partition numbers,
starting and ending sector numbers, partition sizes, \fBsgdisk\fR's
partition types codes, and partition names. For additional information, use
the \fI\-i\fR (\fI\-\-info\fR) option.

.TP 
.B \-P, \-\-pretend
Pretend to make specified changes. In\-memory GPT data structures are
altered according to other parameters, but changes are not written
to disk.

.TP 
.B \-r, \-\-transpose
Swap two partitions' entries in the partition table. One or both partitions
may be empty, although swapping two empty partitions is pointless. For
instance, if partitions 1\-4 are defined, transposing 1 and 5 results in a
table with partitions numbered from 2\-5. Transposing partitions in this
way has no effect on their disk space allocation; it only alters their
order in the partition table.

.TP
.B \-R, \-\-replicate=second_device_filename
Replicate the main device's partition table on the specified second device.
Note that the replicated partition table is an exact copy, including all
GUIDs; if the device should have its own unique GUIDs, you should use the
\-G option on the new disk.

.TP 
.B \-s, \-\-sort
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 \fI/etc/fstab\fR if you use this option.

.TP 
.B \-t, \-\-typecode=partnum:{hexcode|GUID}
Change a single partition's type code. You enter the type code using either
a two\-byte hexadecimal number, as described earlier, or a fully-specified
GUID value, such as EBD0A0A2-B9E5-4433-87C0-68B6B72699C7.

.TP 
.B \-T, \-\-transform\-bsd=partnum
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. \fBsgdisk\fR
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 \fBsgdisk\fR being unable to convert a BSD disklabel is
high compared to the likelihood of problems with an MBR conversion.

.TP
.B \-u, \-\-partition-guid=partnum:guid
Set the partition unique GUID for an individual partition. The GUID may be
a complete GUID or 'R' to set a random GUID.

.TP
.B \-U, \-\-disk-guid=guid
Set the GUID for the disk. The GUID may be a complete GUID or 'R' to set a
random GUID.

.TP 
.B \-\-usage
Print a brief summary of available options.

.TP 
.B \-v, \-\-verify
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. This option will work
even if the disk's original partition table is bad; however, most other
options on the same command line will be ignored.

.TP 
.B \-V, \-\-version
Display program version information. This option may be used without
specifying a device filename.

.TP 
.B \-z, \-\-zap
Zap (destroy) the GPT data structures and then exit. Use this option if you
want to repartition a GPT disk using \fBfdisk\fR or some other GPT\-unaware
program. This option destroys only the GPT data structures; it leaves the
MBR intact. This makes it useful for wiping out GPT data structures after a
disk has been repartitioned for MBR using a GPT\-unaware utility; however,
there's a risk that it will damage boot loaders or even the start of the
first or end of the last MBR partition. If you use it on a valid GPT disk,
the MBR will be left with an inappropriate EFI GPT (0xEE) partition
definition, which you can delete using another utility.

.TP 
.B \-Z, \-\-zap\-all
Zap (destroy) the GPT and MBR data structures and then exit. This option
works much like \fI\-z\fR, but as it wipes the MBR as well as the GPT, it's
more suitable if you want to repartition a disk after using this option,
and completely unsuitable if you've already repartitioned the disk.

.TP 
.B \-?, \-\-help
Print a summary of options.

.SH "RETURN VALUES"
\fBsgdisk\fR returns various values depending on its success or failure:

.TP 
.B 0
Normal program execution

.TP 
.B 1
Too few arguments

.TP 
.B 2
An error occurred while reading the partition table

.TP 
.B 3
Non\-GPT disk detected and no \fI\-g\fR option, but operation requires a
write action

.TP 
.B 4
An error prevented saving changes

.TP
.B 5
An error occurred while reading standard input (should never occur with
sgdisk, but may with gdisk)

.TP
.B 8
Disk replication operation (-R) failed

.SH "BUGS"
Known bugs and limitations include:

.TP 
.B *
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.

.TP 
.B *
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
\fBgpt\fR, \fBfdisk\fR, and \fBdd\fR.) This limitation can be overcome
by typing \fBsysctl kern.geom.debugflags=16\fR at a shell prompt.

.TP 
.B *
The fields used to display the start and end sector numbers for partitions
in the \fI\-p\fR option are 14 characters wide. This translates to a limitation
of about 45 PiB. On larger disks, the displayed columns will go out of
alignment.

.TP 
.B *
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 \fI#define MAX_MBR_PARTS\fR line in the
\fIbasicmbr.h\fR 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.)

.TP 
.B *
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
\fBgdisk\fR.

.TP 
.B *
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.

.TP 
.B *
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.

.TP 
.B *
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!

.TP 
.B *
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.

.PP

.SH "AUTHORS"
Primary author: Roderick W. Smith (rodsmith@rodsbooks.com)

Contributors:

* Yves Blusseau (1otnwmz02@sneakemail.com)

* David Hubbard (david.c.hubbard@gmail.com)

* Justin Maggard (justin.maggard@netgear.com)

* Dwight Schauer (dschauer@gmail.com)

* Florian Zumbiehl (florz@florz.de)


.SH "SEE ALSO"
\fBcfdisk (8)\fR,
\fBcgdisk (8)\fR,
\fBfdisk (8)\fR,
\fBgdisk (8)\fR,
\fBmkfs (8)\fR,
\fBparted (8)\fR,
\fBsfdisk (8)\fR
\fBfixparts (8)\fR

\fIhttp://en.wikipedia.org/wiki/GUID_Partition_Table\fR

\fIhttp://developer.apple.com/technotes/tn2006/tn2166.html\fR

\fIhttp://www.rodsbooks.com/gdisk/\fR

.SH "AVAILABILITY"
The \fBsgdisk\fR command is part of the \fIGPT fdisk\fR package and is
available from Rod Smith.
