blob: 703ee1908966b017af16eceb23ffe64f91aef725 [file] [log] [blame]
.\" 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/.