.\" cfdisk.8 -- man page for cfdisk
.\" Copyright 1994 Kevin E. Martin (martin@cs.unc.edu)
.\"
.\" 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.
.\"
.\" " for hilit mode
.TH CFDISK 8 "3 June 1995" "The BOGUS Linux Release" "Linux Programmer's Manual"
.SH NAME
cfdisk \- Curses based disk partition table manipulator for Linux
.SH SYNOPSIS
.B cfdisk
.RB [ \-agvz ]
.RB [ \-c
.IR cylinders ]
.RB [ \-h
.IR heads ]
.RB [ \-s
.IR sectors-per-track ]
.RB [ \-P
.IR opt ]
.RI [ device ]
.SH DESCRIPTION
.B cfdisk
is a curses based program for partitioning any hard disk drive.
Typical values of the
.I device
argument are:
.sp
.nf
.RS
/dev/hda [default]
/dev/hdb
/dev/sda
/dev/sdb
/dev/sdc
/dev/sdd
.RE
.fi

In order to write the partition table
.B 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
.B cfdisk
chooses for you. The geometry used by
.B 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
is assumed. The geometry can be overridden on the command line
or by use of the `g' command. When partitioning an empty large modern
disk, picking 255 heads and 63 sectors/track is always a good idea.
There is no need to set the number of cylinders, since
.B cfdisk
knows the disk size.

Next,
.B 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
.B \-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 contains the program name and version number followed by 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 current partition
is highlighted with reverse video (or an arrow if the
.B \-a
option is given).  All partition specific commands apply to the
current partition.

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 partition device name.  The flags can be
.IR Boot ,
which designates a bootable partition or
.IR 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).
.B cfdisk
allows you to recover these "lost" sectors with the maximize command
.RB ( m ).
.I Note:
.BR fdisk (8)
and some early versions of DOS create all partitions with the number
of sectors already maximized.  For more information, see the maximize
command below.  The partition type can be one of
.IR Primary " or " Logical .
For unallocated space on the drive, the partition type can also be
.IR 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
.I 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
.IR 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
.RB ( * )
appears after the size, this means that the partition is not aligned
on cylinder boundaries.
.SH "DOS 6.x WARNING"

The DOS 6.x FORMAT command looks for some information in the first
sector 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
.B 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
partition 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:

.B BE EXTREMELY CAREFUL
if you use the
.B 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 program.

.SH COMMANDS
.B cfdisk
commands can be entered by pressing the desired key (pressing
.I Enter
after the command is not necessary).  Here is a list of the available
commands:
.TP
.B b
Toggle bootable flag of the current partition.  This allows you to
select which primary partition is bootable on the drive.
.TP
.B d
Delete the current partition.  This will convert the current partition
into free space and merge it with any free space immediately
surrounding the current partition.  A partition already marked as free
space or marked as unusable cannot be deleted.
.TP
.B g
Change the disk geometry (cylinders, heads, or sectors-per-track).
.B WARNING:
This option should only be used by people who know what they are
doing.  A command line option is also available to change the disk
geometry.  While at the change disk geometry command line, you can
choose to change cylinders
.RB ( c ),
heads
.RB ( h ),
and sectors per track
.RB ( s ).
The default value will be printed at the prompt which you can accept
by simply pressing the
.I Enter
key, or you can exit without changes by pressing the
.I ESC
key.  If you want to change the default value, simply enter the
desired value and press
.IR Enter .
The altered disk parameter values do not take effect until you return
to the main menu (by pressing
.IR 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.
.TP
.B h
Print the help screen.
.TP
.B 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 partition
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 creating a partition is
to create DOS, OS/2, etc. compatible partitions.
.TP
.B n
Create new partition from free space.  If the partition type is
.IR Primary " or " Logical ,
a partition of that type will be created, but if the partition type is
.IR 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 drives, all of the logical drives must be contiguous (with
no intervening primary partition).
.B cfdisk
next prompts you for the size of the partition you want to create.
The default size, equal to the entire free space of the current
partition, is displayed in megabytes.  You can either press the
.I Enter
key to accept the default size or enter a different size at the
prompt.
.B cfdisk
accepts size entries in megabytes
.RB ( M )
[default], kilobytes
.RB ( K ),
cylinders
.RB ( C )
and sectors
.RB ( S )
by entering the number immediately followed by one of
.RB ( M ", " K ", " C " or " S ).
If the partition fills the free space available, the partition is
created and you are returned to the main command line.  Otherwise, the
partition can be created at the beginning or the end of the free
space, and
.B cfdisk
will ask you to choose where to place the partition.  After the
partition is created,
.B cfdisk
automatically adjusts the other partitions' partition types if all of
the primary partitions are used.
.TP
.B p
Print the partition table to the screen or to a file. There are
several different formats for the partition that you can choose from:
.sp
.RS
.TP
.B r
Raw data format (exactly what would be written to disk)
.TP
.B s
Partition table in sector order format
.TP
.B t
Partition table in raw format
.RE

.RS
The
.I raw data format
will print the sectors that would be written to disk if a
.BR w rite
command is selected.  First, the primary partition table is printed,
followed by the partition tables associated with each logical
partition.  The data is printed in hex byte by byte with 16 bytes per
line.

The
.I partition table in sector order format
will print the partition 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 parenthesis),
and the flags (with the hex value in parenthesis).  In addition to the
primary and logical partitions, free and unusable 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
.RB ( * )
is printed after the non-aligned sector number/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 information.  If you know the disk geometry of
the other operating system, you could enter the geometry information
with the change geometry command
.RB ( g ).

For the first partition on the disk and for all logical partitions, 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
.RB ( # )
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 corresponds to the
.I NC
flag in the partitions section of the main display.

The
.I 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, sector and cylinder, the starting sector in the partition
and the number of sectors in the partition.  The information in this
table can be directly translated to the
.IR "raw data format" .

The partition table entries only have 10 bits available to represent
the starting and ending cylinders.  Thus, when the absolute 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.
.RE
.TP
.B q
Quit program.  This will exit the program without writing any data to
disk.
.TP
.B t
Change the filesystem type.  By default, new partitions are created as
.I Linux
partitions, but since
.B 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 type
.RI [ Linux ].
.TP
.B u
Change units of the partition size display.  It will rotate through
megabytes, sectors and cylinders.
.TP
.B W
Write partition table to disk (must enter an upper case 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',
.B cfdisk
will write the partition table to disk and the 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
particular case you need to inform kernel about new
partitions by
.B partprobe(8),
.B kpartx(8)
or reboot the system.
.TP
.I Up Arrow
.TP
.I Down Arrow
Move cursor to the previous or next partition.  If there are more
partitions than can be displayed on a screen, you can display the next
(previous) set of partitions by moving down (up) at the last (first)
partition displayed on the screen.
.TP
.I CTRL-L
Redraws the screen.  In case something goes wrong and you cannot read
anything, you can refresh the screen from the main command line.
.TP
.B ?
Print the help screen.

.RE
All of the commands can be entered with either upper or lower case
letters (except for
.BR W rites).
When in a sub-menu or at a prompt to enter a filename, you can hit the
.I ESC
key to return to the main command line.
.SH OPTIONS
.TP
.B \-a
Use an arrow cursor instead of reverse video for highlighting the
current partition.
.TP
.B \-g
Do not use the geometry given by the disk driver, but try to
guess a geometry from the partition table.
.TP
.B \-v
Print the version number and copyright.
.TP
.B \-z
Start with zeroed partition table.  This option is useful when you
want to repartition your entire disk.
.I Note:
this option does not zero the partition table on the disk; rather, it
simply starts the program without reading the existing partition
table.
.TP
.BI \-c " cylinders"
.TP
.BI \-h " heads"
.TP
.BI \-s " 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.
.TP
.BI \-P " opt"
Prints the partition table in specified formats.
.I opt
can be one or more of "r", "s" or "t".  See the
.BR p rint
command (above) for more information on the print formats.
.SH "EXIT STATUS"
0: No errors; 1: Invocation error; 2: I/O error;
3: cannot get geometry; 4: bad partition table on disk.
.SH "SEE ALSO"
.BR fdisk (8),
.BR sfdisk (8),
.BR mkfs (8),
.BR parted (8),
.BR partprobe (8),
.BR kpartx(8)
.SH BUGS
The current version does not support multiple disks.
.SH AUTHOR
Kevin E. Martin (martin@cs.unc.edu)

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