CFDISK(8) System Administration CFDISK(8)NAMEcfdisk - display or manipulate disk partition table
SYNOPSIScfdisk [-agvz] [-c cylinders] [-h heads] [-s sectors-per-track] [-P
DESCRIPTIONcfdisk is a curses-based program for partitioning any hard disk drive.
Typical values of the device argument are:
/dev/sda [the fallback when /dev/hda does not exist]
Note that cfdisk does not align partitions to block-device I/O limits.
This functionality is provided by fdisk(8).
In order to write the partition table, cfdisk needs something called
the `geometry' of the disk: the number of `heads' and the number of
`sectors per track'. Linux does not use any geometry, so if the disk
will not be accessed by other operating systems, you can safely accept
the defaults that cfdisk chooses for you. The geometry used by cfdisk
is found as follows. First the partition table is examined, to see
what geometry was used by the previous program that changed it. If the
partition table is empty, or contains garbage, or does not point at a
consistent geometry, the kernel is asked for advice. If nothing works,
255 heads and 63 sectors/track are assumed. The geometry can be over‐
ridden on the command line or by use of the `g' command. When parti‐
tioning an empty large modern disk, picking 255 heads and 63 sec‐
tors/track is always a good idea. There is no need to set the number
of cylinders, since cfdisk knows the disk size.
Next, cfdisk tries to read the current partition table from the disk
drive. If it is unable to figure out the partition table, an error is
displayed and the program will exit. This might also be caused by
incorrect geometry information, and can be overridden on the command
line. Another way around this problem is with the -z option. This
will ignore the partition table on the disk.
The main display is composed of four sections, from top to bottom: the
header, the partitions, the command line and a warning line. The
header gives the program name and version number followed by informa‐
tion about the disk drive and its geometry. The partitions section
always displays the current partition table. The command line is the
place where commands and text are entered. The available commands are
usually displayed in brackets. The warning line is usually empty
except when there is important information to be displayed. The cur‐
rent partition is highlighted with reverse video (or with an arrow if
the -a option is given). All partition-specific commands apply to the
The format of the partition table in the partitions section is, from
left to right: Name, Flags, Partition Type, Filesystem Type and Size.
The name is the device name of the partition. The flags can be Boot,
which designates a bootable partition, or NC, which stands for "Not
Compatible with DOS or OS/2". DOS, OS/2 and possibly other operating
systems require the first sector of the first partition on the disk and
all logical partitions to begin on the second head. This wastes the
second through the last sector of the first track of the first head
(the first sector is taken by the partition table itself). cfdisk
allows you to recover these "lost" sectors with the maximize command
(m). Note: fdisk(8) and some early versions of DOS create all parti‐
tions with the number of sectors already maximized. For more informa‐
tion, see the maximize command below. The partition type can be one of
Primary or Logical. For unallocated space on the drive, the partition
type can also be Pri/Log, or empty (if the space is unusable). The
filesystem type section displays the name of the filesystem used on the
partition, if known. If it is unknown, then Unknown and the hex value
of the filesystem type are displayed. A special case occurs when there
are sections of the disk drive that cannot be used (because all of the
primary partitions are used). When this is detected, the filesystem
type is displayed as Unusable. The size field displays the size of the
partition in megabytes (by default). It can also display the size in
sectors and cylinders (see the change units command below). If an
asterisk (*) appears after the size, this means that the partition is
not aligned on cylinder boundaries.
DOS 6.x WARNING
The DOS 6.x FORMAT command looks for some information in the first sec‐
tor of the data area of the partition, and treats this information as
more reliable than the information in the partition table. DOS FORMAT
expects DOS FDISK to clear the first 512 bytes of the data area of a
partition whenever a size change occurs. DOS FORMAT will look at this
extra information even if the /U flag is given -- we consider this a
bug in DOS FORMAT and DOS FDISK.
The bottom line is that if you use cfdisk or fdisk to change the size
of a DOS partition table entry, then you must also use dd to zero the
first 512 bytes of that partition before using DOS FORMAT to format the
partition. For example, if you were using cfdisk to make a DOS parti‐
tion table entry for /dev/hda1, then (after exiting fdisk or cfdisk and
rebooting Linux so that the partition table information is valid) you
would use the command "dd if=/dev/zero of=/dev/hda1 bs=512 count=1" to
zero the first 512 bytes of the partition. Note:
BE EXTREMELY CAREFUL if you use the dd command, since a small typo can
make all of the data on your disk useless.
For best results, you should always use an OS-specific partition-table
program. For example, you should make DOS partitions with the DOS
FDISK program and Linux partitions with the Linux fdisk or Linux cfdisk
COMMANDScfdisk commands can be entered by pressing the desired key (pressing
Enter after the command is not necessary). Here is a list of the
b Toggle bootable flag of the current partition. This allows you
to select which primary partition is bootable on the drive.
d Delete the current partition. This will convert the current
partition into free space and merge it with any free space imme‐
diately surrounding the current partition. A partition already
marked as free space or marked as unusable cannot be deleted.
g Change the disk geometry (cylinders, heads, or sectors-per-
track). WARNING: This option should only be used by people who
know what they are doing. A command-line option is also avail‐
able to change the disk geometry. While at the change-disk-
geometry command line, you can choose to change cylinders (c),
heads (h), and sectors per track (s). The default value will be
printed at the prompt which you can accept by simply pressing
the Enter key, or you can exit without changes by pressing the
ESC key. If you want to change the default value, simply enter
the desired value and press Enter. The altered disk parameter
values do not take effect until you return to the main menu (by
pressing Enter or ESC at the change-disk-geometry command line).
If you change the geometry such that the disk appears larger,
the extra sectors are added at the end of the disk as free
space. If the disk appears smaller, the partitions that are
beyond the new last sector are deleted and the last partition on
the drive (or the free space at the end of the drive) is made to
end at the new last sector.
h Print the help screen.
m Maximize disk usage of the current partition. This command will
recover the unused space between the partition table and the
beginning of the partition, but at the cost of making the parti‐
tion incompatible with DOS, OS/2 and possibly other operating
systems. This option will toggle between maximal disk usage and
DOS, OS/2, etc. compatible disk usage. The default when creat‐
ing a partition is to create DOS, OS/2, etc. compatible parti‐
n Create a new partition from free space. If the partition type
is Primary or Logical, a partition of that type will be created,
but if the partition type is Pri/Log, you will be prompted for
the type you want to create. Be aware that (1) there are only
four slots available for primary partitions and (2) since there
can be only one extended partition, which contains all of the
logical partitions, all the logical partitions must be contigu‐
ous (with no intervening primary partition). cfdisk next
prompts you for the size of the partition you want to create.
The default size, equal to the entire available free space at
the current position, is displayed in megabytes. You can either
press the Enter key to accept the default size, or enter a dif‐
ferent size at the prompt. cfdisk accepts size entries in
megabytes (M) [default], kilobytes (K), cylinders (C) and sec‐
tors (S) by entering the number immediately followed by one of
M, K, C or S. If the partition fills the free space available,
the partition is created and you are returned to the main com‐
mand line. Otherwise, the partition can be created at the
beginning or the end of the free space, and cfdisk will ask you
to choose where to place the partition. After the partition is
created, cfdisk automatically adjusts the other partitions' par‐
tition types if all of the primary partitions are used.
p Print the partition table to the screen or to a file. There are
three different formats for the partition that you can choose
r Raw data format (exactly what would be written to disk)
s Partition table in sector-order format
t Partition table in raw format
The raw data format will print the sectors that would be written
to disk if a write command is selected. First, the primary par‐
tition table is printed, followed by the partition tables asso‐
ciated with each logical partition. The data is printed in hex
byte by byte with 16 bytes per line.
The partition table in sector-order format will print the parti‐
tion table ordered by sector number. The fields, from left to
right, are the number of the partition, the partition type, the
first sector, the last sector, the offset from the first sector
of the partition to the start of the data, the length of the
partition, the filesystem type (with the hex value in parenthe‐
sis), and the flags (with the hex value in parenthesis). In
addition to the primary and logical partitions, free and unus‐
able space is printed and the extended partition is printed
before the first logical partition.
If a partition does not start or end on a cylinder boundary or
if the partition length is not divisible by the cylinder size,
an asterisk (*) is printed after the non-aligned sector num‐
ber/count. This usually indicates that a partition was created
by an operating system that either does not align partitions to
cylinder boundaries or that used different disk-geometry infor‐
mation. If you know the disk geometry of the other operating
system, you could enter the geometry information with the
change-geometry command (g).
For the first partition on the disk and for all logical parti‐
tions, if the offset from the beginning of the partition is not
equal to the number of sectors per track (i.e., the data does
not start on the first head), a number sign (#) is printed after
the offset. For the remaining partitions, if the offset is not
zero, a number sign will be printed after the offset. This cor‐
responds to the NC flag in the partitions section of the main
The partition table in raw format will print the partition table
ordered by partition number. It will leave out all free and
unusable space. The fields, from left to right, are the number
of the partition, the flags (in hex), the starting head, sector
and cylinder, the filesystem ID (in hex), the ending head, sec‐
tor and cylinder, the starting sector in the partition and the
number of sectors in the partition. The information in this ta‐
ble can be directly translated to the raw data format.
The partition table entries only have 10 bits available to rep‐
resent the starting and ending cylinders. Thus, when the abso‐
lute starting (ending) sector number is on a cylinder greater
than 1023, the maximal values for starting (ending) head, sector
and cylinder are printed. This is the method used by OS/2, and
thus fixes the problems associated with OS/2's fdisk rewriting
the partition table when it is not in this format. Since Linux
and OS/2 use absolute sector counts, the values in the starting
and ending head, sector and cylinder are not used.
q Quit program. This will exit the program without writing any
data to disk.
t Change the filesystem type. By default, new partitions are cre‐
ated as Linux partitions, but since cfdisk can create partitions
for other operating systems, change partition type allows you to
enter the hex value of the filesystem you desire. A list of the
know filesystem types is displayed. You can type in the
filesystem type at the prompt or accept the default filesystem
u Change the unit of the partition-size display. It will rotate
through megabytes, sectors, and cylinders.
W Write the partition table to disk (you must enter an uppercase
W). Since this might destroy data on the disk, you must either
confirm or deny the write by entering `yes' or `no'. If you
enter `yes', cfdisk will write the partition table to disk and
then tell the kernel to re-read the partition table from the
disk. The re-reading of the partition table does not work in
some cases, for example for device-mapper devices. In such a
case you need to inform the kernel about new partitions by part‐
probe(8), kpartx(8) or reboot the system.
Up Arrow, Down Arrow
Move the cursor to the previous or next partition. If there are
more partitions than can be displayed on a screen, you can dis‐
play the next (previous) set of partitions by moving down (up)
at the last (first) partition displayed on the screen.
CTRL-L Redraws the screen. In case something goes wrong and you cannot
read anything, you can refresh the screen from the main command
? Print the help screen.
All of the commands can be entered with either upper or lower case let‐
ters (except for Write). When in a sub-menu or at a prompt to enter a
filename, you can hit the ESC key to return to the main command line.
Use an arrow cursor instead of reverse video for highlighting
the current partition.
Do not use the geometry given by the disk driver, but try to
guess a geometry from the partition table.
-v, -V, --version
Display version information and exit.
Start with a zeroed partition table. This option is useful when
you want to repartition your entire disk. Note: this option
does not zero the partition table on the disk; rather, it simply
starts the program without reading the existing partition table.
-c, --cylinders cylinders
-h, --heads heads
-s, --sectors sectors-per-track
Override the number of cylinders, heads and sectors per track
read from the BIOS. If your BIOS or adapter does not supply
this information or if it supplies incorrect information, use
these options to set the disk geometry values.
-P, --print r|s|t
Print the partition table in the specified format(s). See the
print command (above) for more information on what the available
0: no errors; 1: invocation error; 2: I/O error; 3: cannot get geome‐
try; 4: bad partition table on disk.
SEE ALSOfdisk(8), sfdisk(8), mkfs(8), parted(8), partprobe(8), kpartx(8)BUGS
The current version does not support multiple disks.
Kevin E. Martin (firstname.lastname@example.org)
The cfdisk command is part of the util-linux package and is available
util-linux April 2013 CFDISK(8)