.\" sfdisk.8 -- man page for sfdisk
.\" Copyright (C) 2014 Karel Zak <kzak@redhat.com>
.\"
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one.
.\"
.TH SFDISK 8 "June 2015" "util-linux" "System Administration"
.SH NAME
sfdisk \- display or manipulate a disk partition table
.SH SYNOPSIS
.B sfdisk
[options]
.I device
.RB [ \-N
.IR partition-number ]
.sp
.B sfdisk
[options]
.I command
.SH DESCRIPTION
.B sfdisk
is a script-oriented tool for partitioning any block device.

Since version 2.26
.B sfdisk
supports MBR (DOS), GPT, SUN and SGI disk labels, but no longer provides any
functionality for CHS (Cylinder-Head-Sector) addressing.  CHS has
never been important for Linux, and this addressing concept does not make any
sense for new devices.
.sp
.B sfdisk
(since version 2.26) aligns the start and end of partitions to
block-device I/O limits when relative sizes are specified, or when the
default values are used.
.sp
.B sfdisk
does not create the standard system partitions for SGI and SUN disk labels like
.BR fdisk (8)
does.
It is necessary to explicitly create all partitions including whole-disk system
partitions.

.SH COMMANDS
The commands are mutually exclusive.
.TP
.RB [ \-N " \fIpartition-number\fR] " \fIdevice\fR
The default \fBsfdisk\fR command is to read the specification for the desired
partitioning of \fIdevice\fR from standard input, and then create a partition
table according to the specification.  See below for the description of the
input format.  If standard input is a terminal, then \fBsfdisk\fR starts an
interactive session.
.sp
If the option \fB\-N\fR is specified, then the changes are applied to
the partition addressed by \fIpartition-number\fR.  The unspecified fields
of the partition are not modified.
.sp
Note that it's possible to address an unused partition with \fB\-N\fR.
For example, an MBR always contains 4 partitions, but the number of used
partitions may be smaller.  In this case \fBsfdisk\fR follows the default
values from the partition table and does not use built-in defaults for the
unused partition given with \fB\-N\fR.  See also \fB\-\-append\fR.
.TP
.BR \-A , " \-\-activate \fIdevice " [ \fIpartition-number ...]
Switch on the bootable flag for the specified partitions.
If no \fIpartition-number\fR is specified,
then list the partitions with an enabled flag.
.TP
.BR "\-\-delete \fIdevice " [ \fIpartition-number ...]
Delete all or the specified partitions.
.TP
.BR \-d , " \-\-dump " \fIdevice\fR
Dump the partitions of a device in a format that is usable as input to \fBsfdisk\fR.
See the section \fBBACKING UP THE PARTITION TABLE\fR.
.TP
.BR \-g , " \-\-show\-geometry " [ \fIdevice ...]
List the geometry of all or the specified devices. For backward
compatibility the deprecated option \fB\-\-show\-pt\-geometry\fR have the same
meaning as this one.
.TP
.BR \-J , " \-\-json " \fIdevice\fR
Dump the partitions of a device in JSON format.  Note that \fBsfdisk\fR is
not able to use JSON as input format.
.TP
.BR \-l , " \-\-list " [ \fIdevice ...]
List the partitions of all or the specified devices.  This command can be used
together with \fB\-\-verify\fR.
.TP
.BR \-F , " \-\-list-free " [ \fIdevice ...]
List the free unpartitioned areas on all or the specified devices.
.TP
.BR "\-\-part\-attrs \fIdevice partition-number " [ \fIattributes ]
Change the GPT partition attribute bits.  If \fIattributes\fR is not specified,
then print the current partition settings.  The \fIattributes\fR argument is a
comma- or space-delimited list of bits.  The currently supported attribute
bits are: RequiredPartition, NoBlockIOProtocol, LegacyBIOSBootable
and GUID-specific bits in the range from 48 to 63.  For example, the string
"RequiredPartition,50,51" sets three bits.
.TP
.BR "\-\-part\-label \fIdevice partition-number " [ \fIlabel ]
Change the GPT partition name (label).  If \fIlabel\fR is not specified,
then print the current partition label.
.TP
.BR "\-\-part\-type \fIdevice partition-number " [ \fItype ]
Change the partition type.  If \fItype\fR is not specified, then print the
current partition type.  The \fItype\fR argument is hexadecimal for MBR,
or a GUID for GPT.  For backward compatibility the options \fB\-c\fR and
\fB\-\-id\fR have the same meaning as this one.
.TP
.BR "\-\-part\-uuid \fIdevice partition-number " [ \fIuuid ]
Change the GPT partition UUID.  If \fIuuid\fR is not specified,
then print the current partition UUID.
.TP
.BR \-r , " \-\-reorder " \fIdevice
Renumber the partitions, ordering them by their start offset.
.TP
.BR \-s , " \-\-show\-size " [ \fIdevice ...]
List the sizes of all or the specified devices.
.TP
.BR \-T , " \-\-list\-types"
Print all supported types for the current disk label or the label specified by
\fB\-\-label\fR.
.TP
.BR \-V , " \-\-verify " [ \fIdevice ...]
Test whether the partition table and partitions seem correct.

.SH OPTIONS
.TP
.BR \-a , " \-\-append"
Don't create a new partition table, but only append the specified partitions.
.TP
.BR \-b , " \-\-backup"
Back up the current partition table sectors before starting the partitioning.
The default backup file name is ~/sfdisk-<device>-<offset>.bak; to use another
name see option \fB\-O\fR, \fB\-\-backup\-file\fR.
.TP
.BR \-\-color [ =\fIwhen ]
Colorize the output.  The optional argument \fIwhen\fP
can be \fBauto\fR, \fBnever\fR or \fBalways\fR.  If the \fIwhen\fR argument is omitted,
it defaults to \fBauto\fR.  The colors can be disabled; for the current built-in default
see the \fB\-\-help\fR output.  See also the \fBCOLORS\fR section.
.TP
.BR \-f , " \-\-force"
Disable all consistency checking.
.TP
.BR \-\-Linux
Deprecated and ignored option.  Partitioning that is compatible with
Linux (and other modern operating systems) is the default.
.TP
.BR \-n , " \-\-no\-act"
Do everything except writing to the device.
.TP
.B \-\-no\-reread
Do not check through the re-read-partition-table ioctl whether the device is in use.
.TP
.B \-\-no\-tell\-kernel
Don't tell the kernel about partition changes. This option is recommended together
with \fB\-\-no\-reread\fR to modify a partition on used disk. The modified partition
should not be used (e.g. mounted).
.TP
.BR \-O , " \-\-backup\-file " \fIpath
Override the default backup file name.  Note that the device name and offset
are always appended to the file name.
.TP
.BR \-\-move-data [ =\fIpath ]
Move data after partition relocation, for example when moving the beginning
of a partition to another place on the disk.  The size of the partition has
to remain the same, the new and old location may overlap.  This option requires
option \fB\-N\fR in order to be processed on one specific partition only.

The \fIpath\fR overrides the default log file name
(the default is ~/sfdisk-<devname>.move).  The log file contains information
about all read/write operations on the partition data.

Note that this operation is risky and not atomic. \fBDon't forget to backup your data!\fR

In the example below, the first command creates a 100MiB free area before
the first partition and moves the data it contains (e.g. a filesystem),
the next command creates a new partition from the free space (at offset 2048),
and the last command reorders partitions to match disk order
(the original sdc1 will become sdc2).
.RS
.sp
.B "echo '+100M,' | sfdisk --move-data /dev/sdc -N 1"
.br
.B "echo '2048,' | sfdisk /dev/sdc --append
.br
.B sfdisk /dev/sdc --reorder
.sp
.RE

.TP
.BR \-o , " \-\-output " \fIlist
Specify which output columns to print.  Use
.B \-\-help
to get a list of all supported columns.
.sp
The default list of columns may be extended if \fIlist\fP is
specified in the format \fI+list\fP (e.g. \fB-o +UUID\fP).
.TP
.BR \-q , " \-\-quiet"
Suppress extra info messages.
.TP
.BR \-u , " \-\-unit S"
Deprecated option.  Only the sector unit is supported.
.TP
.BR \-X , " \-\-label " \fItype
Specify the disk label type (e.g. \fBdos\fR, \fBgpt\fR, ...).  If this option
is not given, then \fBsfdisk\fR defaults to the existing label, but if there
is no label on the device yet, then the type defaults to \fBdos\fR. The default
or the current label may be overwritten by the "label: <name>" script header
line. The option \fB\-\-label\fR does not force \fBsfdisk\fR to create empty
disk label (see the \fBEMPTY DISK LABEL\fR section below).
.TP
.BR \-Y , " \-\-label\-nested " \fItype
Force editing of a nested disk label.  The primary disk label has to exist already.
This option allows to edit for example a hybrid/protective MBR on devices with GPT.

.TP
.BR -w , " \-\-wipe "\fIwhen
Wipe filesystem, RAID and partition-table signatures from the device, in order
to avoid possible collisions.  The argument \fIwhen\fR can be \fBauto\fR,
\fBnever\fR or \fBalways\fR.  When this option is not given, the default is
\fBauto\fR, in which case signatures are wiped only when in interactive mode.
In all cases detected signatures are reported by warning messages
before a new partition table is created.  See also
.BR wipefs (8)
command.

.TP
.BR -W , " \-\-wipe-partitions "\fIwhen
Wipe filesystem, RAID and partition-table signatures from a newly created
partitions, in order to avoid possible collisions.  The argument \fIwhen\fR can
be \fBauto\fR, \fBnever\fR or \fBalways\fR.  When this option is not given, the
default is \fBauto\fR, in which case signatures are wiped only when in
interactive mode and after confirmation by user.  In all cases detected
signatures are reported by warning messages after a new partition is created.
See also
.BR wipefs (8)
command.

.TP
.BR \-v , " \-\-version"
Display version information and exit.
.TP
.BR \-h , " \-\-help"
Display help text and exit.

.SH "INPUT FORMATS"
.B sfdisk
supports two input formats and generic header lines.

.B Header lines
.RS
The optional header lines specify generic information that apply to the partition
table.  The header-line format is:
.RS
.sp
.B "<name>: <value>"
.sp
.RE
The currently recognized headers are:
.RS
.TP
.B unit
Specify the partitioning unit.  The only supported unit is \fBsectors\fR.
.TP
.B label
Specify the partition table type.  For example \fBdos\fR or \fBgpt\fR.
.TP
.B label-id
Specify the partition table identifier.  It should be a  hexadecimal number
(with a 0x prefix) for MBR and a UUID for GPT.
.RE
.sp
Note that it is only possible to use header lines before the first partition
is specified in the input.
.RE

.B Unnamed-fields format
.RS
.RS
.sp
.I start size type bootable
.sp
.RE
where each line fills one partition descriptor.
.sp
Fields are separated by whitespace, comma or semicolon possibly
followed by whitespace; initial and trailing whitespace is ignored.
Numbers can be octal, decimal or hexadecimal; decimal is the default.
When a field is absent, empty or specified as '-' a default value is
used.  But when the \fB-N\fR option (change a single partition) is
given, the default for each field is its previous value.
.sp
The default value of
.I start
is the first non-assigned sector aligned according to device I/O limits.
The default start offset for the first partition is 1 MiB.  The offset may
be followed by the multiplicative suffixes (KiB, MiB, GiB, TiB, PiB,
EiB, ZiB and YiB) then the number is interpreted as offset in bytes.
.sp
The default value of
.I size
indicates "as much as possible"; i.e. until the next partition or
end-of-device.  A numerical argument is by default interpreted as a
number of sectors, however if the size is followed by one of the
multiplicative suffixes (KiB, MiB, GiB, TiB, PiB, EiB, ZiB and YiB)
then the number is interpreted as the size of the partition in bytes
and it is then aligned according to the device I/O limits.  A '+' can
be used instead of a number to enlarge the partition as much as
possible.  Note '+' is equivalent to the default behaviour for a new
partition; existing partitions will be resized as required.
.sp
The partition
.I type
is given in hex for MBR (DOS), without the 0x prefix, a GUID string for GPT, or
a shortcut:
.RS
.TP
.B L
Linux; means 83 for MBR and 0FC63DAF-8483-4772-8E79-3D69D8477DE4 for GPT.
.TP
.B S
swap area; means 82 for MBR and 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F for GPT
.TP
.B E
extended partition; means 5 for MBR
.TP
.B H
home partition; means 933AC7E1-2EB4-4F13-B844-0E14E2AEF915 for GPT
.TP
.B X
linux extended partition; means 85 for MBR.
.TP
.B U
EFI System partition, means EF for MBR and C12A7328-F81F-11D2-BA4B-00A0C93EC93B for GPT
.RE
.PP
The default
.I type
value is
.I L

.I bootable
is specified as [\fB*\fR|\fB-\fR], with as default not-bootable.  The
value of this field is irrelevant for Linux - when Linux runs it has
been booted already - but ir might play a role for certain boot
loaders and for other operating systems.
.RE

.B Named-fields format
.RS
This format is more readable, robust, extensible and allows to specify additional
information (e.g. a UUID).  It is recommended to use this format to keep your scripts
more readable.
.RS
.sp
.RI [ "device \fB:" ] " name" [\fB= value "], ..."
.sp
.RE
The
.I device
field is optional.  \fBsfdisk\fR extracts the partition number from the
device name.  It allows to specify the partitions in random order.
This functionality is mostly used by \fB\-\-dump\fR.
Don't use it if you are not sure.

The
.I value
can be between quotation marks (e.g. name="This is partition name").
The currently supported fields are:
.RS
.TP
.BI start= number
The first non-assigned sector aligned according to device I/O limits.  The default
start offset for the first partition is 1 MiB. The offset may be followed by
the multiplicative suffixes (KiB, MiB, GiB, TiB, PiB, EiB, ZiB and YiB) then
the number is interpreted as offset in bytes.
.TP
.BI size= number
Specify the partition size in sectors.  The number may be followed by the multiplicative
suffixes (KiB, MiB, GiB, TiB, PiB, EiB, ZiB and YiB), then it's interpreted as size
in bytes and the size is aligned according to device I/O limits.
.TP
.B bootable
Mark the partition as bootable.
.TP
.BI attrs= string
Partition attributes, usually GPT partition attribute bits.  See
\fB\-\-part\-attrs\fR for more details about the GPT-bits string format.
.TP
.BI uuid= string
GPT partition UUID.
.TP
.BI name= string
GPT partition name.
.TP
.BI type= code
A hexadecimal number (without 0x) for an MBR partition, or a GUID for a GPT partition.
For backward compatibility the \fBId=\fR field has the same meaning.
.RE
.RE

.SH "EMPTY DISK LABEL"
.B sfdisk
does not create partition table without partitions by default. The lines with
partitions are expected in the script by default. The empty partition table has
to be explicitly requested by "label: <name>" script header line without any
partitions lines. For example:
.RS
.sp
.B "echo 'label: gpt' | sfdisk /dev/sdb"
.sp
.RE
creates empty GPT partition table. Note that the \fB\-\-append\fR disables this feature.

.SH "BACKING UP THE PARTITION TABLE"
It is recommended to save the layout of your devices.
.B sfdisk
supports two ways.
.sp
Use the \fB\-\-dump\fR option to save a description of the device layout
to a text file.  The dump format is suitable for later \fBsfdisk\fR input.
For example:
.RS
.sp
.B "sfdisk --dump /dev/sda > sda.dump"
.sp
.RE
This can later be restored by:
.RS
.sp
.B "sfdisk /dev/sda < sda.dump"
.RE

If you want to do a full (binary) backup of all sectors where the
partition table is stored,
then use the \fB\-\-backup\fR option.  It writes the sectors to
~/sfdisk-<device>-<offset>.bak files.  The default name of the backup file can
be changed with the \fB\-\-backup\-file\fR option.  The backup files
contain only raw data from the \fIdevice\fR.
Note that the same concept of backup files is used by
.BR wipefs (8).
For example:
.RS
.sp
.B "sfdisk --backup /dev/sda"
.sp
.RE
The GPT header can later be restored by:
.RS
.sp
.nf
.B "dd  if=~/sfdisk-sda-0x00000200.bak  of=/dev/sda  \e"
.B "  seek=$((0x00000200))  bs=1  conv=notrunc"
.fi
.sp
.RE
Note that \fBsfdisk\fR since version 2.26 no longer provides the \fB\-I\fR option to
restore sectors.
.BR dd (1)
provides all necessary functionality.

.SH COLORS
Implicit coloring can be disabled by an empty file \fI/etc/terminal-colors.d/sfdisk.disable\fR.

See
.BR terminal-colors.d (5)
for more details about colorization configuration. The logical color names
supported by
.B sfdisk
are:
.TP
.B header
The header of the output tables.
.TP
.B warn
The warning messages.
.TP
.B welcome
The welcome message.

.SH NOTES
Since version 2.26 \fBsfdisk\fR no longer provides the \fB\-R\fR or
\fB\-\-re\-read\fR option to force the kernel to reread the partition table.
Use \fBblockdev \-\-rereadpt\fR instead.
.PP
Since version 2.26 \fBsfdisk\fR does not provide the \fB\-\-DOS\fR, \fB\-\-IBM\fR, \fB\-\-DOS\-extended\fR,
\fB\-\-unhide\fR, \fB\-\-show\-extended\fR, \fB\-\-cylinders\fR, \fB\-\-heads\fR, \fB\-\-sectors\fR,
\fB\-\-inside\-outer\fR, \fB\-\-not\-inside\-outer\fR options.

.SH ENVIRONMENT
.IP SFDISK_DEBUG=all
enables sfdisk debug output.
.IP LIBFDISK_DEBUG=all
enables libfdisk debug output.
.IP LIBBLKID_DEBUG=all
enables libblkid debug output.
.IP LIBSMARTCOLS_DEBUG=all
enables libsmartcols debug output.

.SH "SEE ALSO"
.BR fdisk (8),
.BR cfdisk (8),
.BR parted (8),
.BR partprobe (8),
.BR partx (8)

.SH AUTHOR
Karel Zak <kzak@redhat.com>
.PP
The current sfdisk implementation is based on the original sfdisk
from Andries E. Brouwer.

.SH AVAILABILITY
The sfdisk command is part of the util-linux package and is available from
ftp://ftp.kernel.org/pub/linux/utils/util-linux/.
