sfdisk is a Scripted version of
It is part of
util-linux, just like
fdisk, so availability should be the same.
A partition table with a single partition that takes the whole disk can be
echo 'type=83' | sudo sfdisk /dev/sdX
and more complex partition tables are explained below.
To generate an example script, get the setup of one of your disks:
sudo sfdisk -d /dev/sda > sda.sfdisk
Sample output on my Lenovo T430 Windows 7 / Ubuntu dual boot:
/dev/sda1 : start= 2048, size= 3072000, type=7, bootable
/dev/sda2 : start= 3074048, size= 195430105, type=7
/dev/sda3 : start= 948099072, size= 28672000, type=7
/dev/sda4 : start= 198504446, size= 749594626, type=5
/dev/sda5 : start= 198504448, size= 618891264, type=83
/dev/sda6 : start= 940277760, size= 7821312, type=82
/dev/sda7 : start= 817397760, size= 61437952, type=83
/dev/sda8 : start= 878837760, size= 61437500, type=83
Once you have the script saved to a file, you can apply it to
sudo sfdisk /dev/sdX < sda.sfdisk
sfdisk input, you can just omit the device names, and use lines of type:
start= 2048, size= 3072000, type=7, bootable
They are just ignored if present, and the device name is taken from the command line argument.
- header lines: all optional:
label: type of partition table.
dos (MBR) is the old and widely supported one,
gpt the new shiny thing.
sector is supported. 1 sector usually equals 512 bytes. Find with
cat /sys/block/sda/queue/hw_sector_size. See also: Finding the sector size of a partition
device: informative only I think
- partition lines:
start: offset inside the disk at which the partition starts.
start has very good defaults, and can often be omitted:
- on the first line,
start is 2048, i.e. 1Mb (2048 + 512), which is a sane default for disk compatibility
start entries default to the first unallocated position
man sfdisk says:
The default value of size indicates "as much as possible". So to fill the disk with a single partition use:
/dev/sda : start=2048, type=83
type: magic byte stored on the boot sector for each partition entry. Possible values here: https://en.wikipedia.org/wiki/Partition_type On this example we observe:
3): filesystems that Windows supports. Preinstalled Windows stuff and Lenovo recovery partitions.
sudo blkid labels help identify them.
sda4): extended primary partition, which will contain other logical partitions (because we can only have 4 primary partitions with MBR)
8): partitions which Linux supports. For me one
home, and two roots with different Ubuntu versions
fdisk can also read
sfdisk scripts with the
I command, which "sources" them during an interactive
fdisk session, allowing you further customization before writing the partition.
Tested on Ubuntu 16.04,
Format and populate the partitions an image file without
This answer is a good way to learn to use
sfdisk without blowing up your hard disks.