Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
FDISK(8)		      System Administration			FDISK(8)

NAME
     fdisk - manipulate disk partition table

SYNOPSIS
     fdisk [options] device

     fdisk -l [device...]

DESCRIPTION
     fdisk is a dialog-driven program for creation and manipulation of partition
     tables. It understands GPT, MBR, Sun, SGI and BSD partition tables.

     Block  devices  can be divided into one or more logical disks called parti-
     tions. This division is recorded in the partition table, usually  found  in
     sector 0 of the disk. (In the BSD world one talks about `disk slices' and a
     `disklabel'.)

     All  partitioning is driven by device I/O limits (the topology) by default.
     fdisk is able to optimize the disk layout for a 4K-sector size and  use  an
     alignment	offset	on  modern  devices for MBR and GPT. It is always a good
     idea to follow fdisk's defaults as the default values (e.g., first and last
     partition sectors) and partition sizes specified by the  +/-<size>{M,G,...}
     notation are always aligned according to the device properties.

     CHS  (Cylinder-Head-Sector)  addressing  is  deprecated and not used by de-
     fault. Please, do not follow old articles and recommendations with fdisk -S
     <n> -H <n> advice for SSD or 4K-sector devices.

     Note that partx(8) provides a rich interface for scripts to print disk lay-
     outs, fdisk is mostly designed for humans. Backward  compatibility  in  the
     output  of  fdisk is not guaranteed. The input (the commands) should always
     be backward compatible.

OPTIONS
     -b, --sector-size sectorsize
	 Specify the sector size of the disk. Valid values are 512, 1024,  2048,
	 and  4096. The kernel is aware of the sector size for regular block de-
	 vices. Use this option only on very old kernels, when working with disk
	 images,  or  to  override  the  kernel's  default  sector  size.  Since
	 util-linux-2.17,  fdisk distinguishes between logical and physical sec-
	 tor size. This option changes both sector sizes to the  specified  sec-
	 torsize.

     -B, --protect-boot
	 Don't	erase the beginning of the first disk sector when creating a new
	 disk label. This feature is supported for GPT and MBR.

     -c, --compatibility[=mode]
	 Specify the compatibility mode,  'dos'  or  'nondos'.	The  default  is
	 non-DOS mode. For backward compatibility, it is possible to use the op-
	 tion  without	the mode argument -- then the default is used. Note that
	 the optional mode argument cannot be separated from the -c option by  a
	 space, the correct form is for example -c=dos.

     -L, --color[=when]
	 Colorize  the	output. The optional argument when can be auto, never or
	 always. If the when argument is omitted, it defaults to auto. The  col-
	 ors  can  be  disabled; for the current built-in default see the --help
	 output. See also the COLORS section.

     -l, --list
	 List the partition tables for the specified devices and then exit.

	 If no devices are given, the devices mentioned in /proc/partitions  (if
	 this  file  exists) are used. Devices are always listed in the order in
	 which they are specified on the command-line, or by the  kernel  listed
	 in /proc/partitions.

     -x, --list-details
	 Like --list, but provides more details.

     --lock[=mode]
	 Use exclusive BSD lock for device or file it operates. The optional ar-
	 gument  mode can be yes, no (or 1 and 0) or nonblock. If the mode argu-
	 ment is omitted, it defaults to yes. This option overwrites environment
	 variable $LOCK_BLOCK_DEVICE. The default is not to use any lock at all,
	 but it's recommended to avoid collisions with systemd-udevd(8) or other
	 tools.

     -n, --noauto-pt
	 Don't automatically create a default partition table on  empty  device.
	 The  partition  table	has to be explicitly created by user (by command
	 like 'o', 'g', etc.).

     -o, --output list
	 Specify which output columns to print. Use --help to get a list of  all
	 supported columns.

	 The default list of columns may be extended if list is specified in the
	 format +list (e.g., -o +UUID).

     -s, --getsz
	 Print the size in 512-byte sectors of each given block device. This op-
	 tion is DEPRECATED in favour of blockdev(8).

     -t, --type type
	 Enable  support  only for disklabels of the specified type, and disable
	 support for all other types.

     -u, --units[=unit]
	 When listing partition tables, show sizes in 'sectors'  or  in  'cylin-
	 ders'.  The  default is to show sizes in sectors. For backward compati-
	 bility, it is possible to use the option without the unit  argument  --
	 then  the  default is used. Note that the optional unit argument cannot
	 be separated from the -u option by a space, the correct form is for ex-
	 ample '-u=cylinders'.

     -C, --cylinders number
	 Specify the number of cylinders of the disk. I have no idea why anybody
	 would want to do so.

     -H, --heads number
	 Specify the number of heads of the disk. (Not the physical  number,  of
	 course,  but  the  number used for partition tables.) Reasonable values
	 are 255 and 16.

     -S, --sectors number
	 Specify the number of sectors per track of the disk. (Not the	physical
	 number, of course, but the number used for partition tables.) A reason-
	 able value is 63.

     -w, --wipe when
	 Wipe  filesystem,  RAID and partition-table signatures from the device,
	 in order to avoid possible collisions. The argument when can  be  auto,
	 never or always. When this option is not given, the default is auto, 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 wipefs(8) command.

     -W, --wipe-partitions when
	 Wipe filesystem, RAID and partition-table signatures from a newly  cre-
	 ated  partitions,  in	order to avoid possible collisions. The argument
	 when can be auto, never or always. When this option is not  given,  the
	 default is auto, in which case signatures are wiped only when in inter-
	 active  mode and after confirmation by user. In all cases detected sig-
	 natures are reported by warning messages before a new partition is cre-
	 ated. See also wipefs(8) command.

     -h, --help
	 Display help text and exit.

     -V, --version
	 Display version and exit.

DEVICES
     The device is usually /dev/sda, /dev/sdb or so. A device name refers to the
     entire disk. Old systems without libata (a library used  inside  the  Linux
     kernel  to  support ATA host controllers and devices) make a difference be-
     tween IDE and SCSI disks. In such cases the device name  will  be	/dev/hd*
     (IDE) or /dev/sd* (SCSI).

     The partition is a device name followed by a partition number. For example,
     /dev/sda1	is the first partition on the first hard disk in the system. See
     also Linux kernel documentation (the  Documentation/admin-guide/devices.txt
     file).

SIZES
     The "last sector" dialog accepts partition size specified by number of sec-
     tors or by +/-<size>{K,B,M,G,...} notation.

     If  the  size  is prefixed by '+' then it is interpreted as relative to the
     partition first sector. If the size is prefixed by '-' then  it  is  inter-
     preted  as relative to the high limit (last available sector for the parti-
     tion).

     In the case the size is specified in bytes, then the number may be followed
     by the multiplicative suffixes KiB (1024 bytes), MiB (1024*1024 bytes), and
     so on for GiB, TiB, PiB, EiB, ZiB and YiB. The "iB" is optional, e.g.,  "K"
     has the same meaning as "KiB".

     The relative sizes if specified with multiplicative suffixes (e.g. +100MiB)
     are    always    aligned	 according    to    device   I/O   limits.   The
     +/-<size>{K,B,M,G,...} notation is recommended.

     The last sector of the partition is strictly calculated as <start> + <size>
     (without -1) if the size is specified by the +<sectors> notation.	In  this
     case, the size is not aligned to the device I/O limits.

     For backward compatibility fdisk also accepts the suffixes KB (1000 bytes),
     MB  (1000*1000  bytes), and so on for GB, TB, PB, EB, ZB and YB. These 10^N
     suffixes are deprecated.

SCRIPT FILES
     fdisk allows reading (by 'I' command) sfdisk(8)  compatible  script  files.
     The script is applied to in-memory partition table, and then it is possible
     to modify the partition table before you write it to the device.

     And vice-versa it is possible to write the current in-memory disk layout to
     the script file by command 'O'.

     The  script  files  are  compatible between cfdisk(8), sfdisk(8), fdisk and
     other libfdisk applications. For more details see sfdisk(8).

DISK LABELS
     GPT (GUID Partition Table)
	 GPT is modern standard for the layout of the partition table. GPT  uses
	 64-bit  logical  block addresses, checksums, UUIDs and names for parti-
	 tions and an unlimited number of partitions  (although  the  number  of
	 partitions is usually restricted to 128 in many partitioning tools).

	 Note  that  the  first sector is still reserved for a protective MBR in
	 the GPT specification. It prevents  MBR-only  partitioning  tools  from
	 mis-recognizing and overwriting GPT disks.

	 GPT  is  always a better choice than MBR, especially on modern hardware
	 with a UEFI boot loader.

     DOS-type (MBR)
	 A DOS-type partition table can describe an unlimited number  of  parti-
	 tions.  In  sector  0 there is room for the description of 4 partitions
	 (called `primary'). One of these may be an extended partition; this  is
	 a  box  holding  logical partitions, with descriptors found in a linked
	 list of sectors, each preceding the corresponding  logical  partitions.
	 The  four  primary partitions, present or not, get numbers 1-4. Logical
	 partitions are numbered starting from 5.

	 In a DOS-type partition table the starting offset and the size of  each
	 partition  is	stored	in  two  ways:	as an absolute number of sectors
	 (given in 32 bits), and as a Cylinders/Heads/Sectors triple  (given  in
	 10+8+6  bits). The former is OK -- with 512-byte sectors this will work
	 up to 2 TB. The latter has two problems. First, these C/H/S fields  can
	 be  filled  only when the number of heads and the number of sectors per
	 track are known. And second, even if we know what these numbers  should
	 be, the 24 bits that are available do not suffice. DOS uses C/H/S only,
	 Windows uses both, Linux never uses C/H/S. The C/H/S addressing is dep-
	 recated and may be unsupported in some later fdisk version.

	 Please,  read	the  DOS-mode  section if you want DOS-compatible parti-
	 tions. fdisk does not care about cylinder boundaries by default.

     BSD/Sun-type
	 A BSD/Sun disklabel can describe  8  partitions,  the	third  of  which
	 should be a `whole disk' partition. Do not start a partition that actu-
	 ally uses its first sector (like a swap partition) at cylinder 0, since
	 that  will  destroy  the  disklabel.  Note  that a BSD label is usually
	 nested within a DOS partition.

     IRIX/SGI-type
	 An IRIX/SGI disklabel can describe 16 partitions, the eleventh of which
	 should be an entire `volume' partition, while the ninth should  be  la-
	 beled	`volume header'. The volume header will also cover the partition
	 table, i.e., it starts at block zero and extends by default  over  five
	 cylinders.  The  remaining  space  in	the volume header may be used by
	 header directory entries. No partitions may  overlap  with  the  volume
	 header.  Also	do  not  change  its type or make some filesystem on it,
	 since you will lose the partition table. Use this type  of  label  only
	 when  working	with  Linux on IRIX/SGI machines or IRIX/SGI disks under
	 Linux.

	 A sync(2) and an ioctl(BLKRRPART) (rereading the partition  table  from
	 disk)	are  performed	before exiting when the partition table has been
	 updated.

DOS MODE AND DOS 6.X WARNING
     Note that all this is deprecated. You don't have to care about things  like
     geometry  and  cylinders  on  modern  operating systems. If you really want
     DOS-compatible partitioning then you have to enable DOS mode  and	cylinder
     units by using the '-c=dos -u=cylinders' fdisk command-line options.

     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  re-
     liable  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 fdisk or cfdisk(8) to change the size of
     a DOS partition table entry, then you must also use dd(1) to zero the first
     512 bytes of that partition before using DOS FORMAT to  format  the  parti-
     tion.  For  example,  if you were using fdisk to make a DOS partition table
     entry for /dev/sda1, then (after exiting fdisk and rebooting Linux so  that
     the  partition  table  information  is  valid) you would use the command dd
     if=/dev/zero of=/dev/sda1 bs=512 count=1 to zero the first 512 bytes of the
     partition.

     fdisk usually obtains the disk geometry automatically. This is  not  neces-
     sarily  the physical disk geometry (indeed, modern disks do not really have
     anything like a physical geometry, certainly not something that can be  de-
     scribed in the simplistic Cylinders/Heads/Sectors form), but it is the disk
     geometry that MS-DOS uses for the partition table.

     Usually all goes well by default, and there are no problems if Linux is the
     only  system  on the disk. However, if the disk has to be shared with other
     operating systems, it is often a good idea to let an fdisk from another op-
     erating system make at least one partition. When Linux boots  it  looks  at
     the  partition  table, and tries to deduce what (fake) geometry is required
     for good cooperation with other systems.

     Whenever a partition table is printed out in DOS mode, a consistency  check
     is  performed  on the partition table entries. This check verifies that the
     physical and logical start and end points are identical, and that each par-
     tition starts and ends on a cylinder boundary (except for the first  parti-
     tion).

     Some  versions of MS-DOS create a first partition which does not begin on a
     cylinder boundary, but on sector 2 of the first cylinder. Partitions begin-
     ning in cylinder 1 cannot begin on a cylinder boundary,  but  this  is  un-
     likely to cause difficulty unless you have OS/2 on your machine.

     For best results, you should always use an OS-specific partition table pro-
     gram.  For  example, you should make DOS partitions with the DOS FDISK pro-
     gram and Linux partitions with the Linux fdisk or Linux cfdisk(8) programs.

COLORS
     The output colorization is implemented by terminal-colors.d(5)  functional-
     ity. Implicit coloring can be disabled by an empty file

	/etc/terminal-colors.d/fdisk.disable

     for the fdisk command or for all tools by

	/etc/terminal-colors.d/disable

     Since version 2.41, the $NO_COLOR environment variable is also supported to
     disable output colorization unless explicitly enabled by a command-line op-
     tion.

     The  user-specific $XDG_CONFIG_HOME/terminal-colors.d or $HOME/.config/ter-
     minal-colors.d overrides the global setting.

     Note that the output colorization may be enabled by default,  and	in  this
     case terminal-colors.d directories do not have to exist yet.

     The logical color names supported by fdisk are:

     header
	 The header of the output tables.

     help-title
	 The help section titles.

     warn
	 The warning messages.

     welcome
	 The welcome message.

ENVIRONMENT
     FDISK_DEBUG=all
	 enables fdisk debug output.

     LIBFDISK_DEBUG=all
	 enables libfdisk debug output.

     LIBBLKID_DEBUG=all
	 enables libblkid debug output.

     LIBSMARTCOLS_DEBUG=all
	 enables libsmartcols debug output.

     LIBSMARTCOLS_DEBUG_PADDING=on
	 use visible padding characters.

     LOCK_BLOCK_DEVICE=<mode>
	 use exclusive BSD lock. The mode is "1" or "0". See --lock for more de-
	 tails.

AUTHORS
     Karel Zak <kzak@redhat.com>, Davidlohr Bueso <dave@gnu.org>

     The original version was written by Andries E. Brouwer, A. V. Le Blanc and
     others.

SEE ALSO
     cfdisk(8), mkfs(8), partx(8), sfdisk(8)

REPORTING BUGS
     For	bug	  reports,	 use	   the	     issue	 tracker
     <https://github.com/util-linux/util-linux/issues>.

AVAILABILITY
     The fdisk command is part of the util-linux package which can be downloaded
     from		  Linux 		 Kernel 		 Archive
     <https://www.kernel.org/pub/linux/utils/util-linux/>.

util-linux 2.41.2		   2025-09-22				FDISK(8)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=fdisk&sektion=8&manpath=FreeBSD+Ports+15.1.quarterly>

home | help