Fdisk
Related articles
Contents
Using GPT - modern method
Gdisk usage summary
Using GPT, the utility for editing the partition table is called gdisk. It can perform partition alignment automatically on a 2048 sector (or 1024KiB) block size base which should be compatible with the vast majority of SSDs if not all. GNU parted also supports GPT, but is less user-friendly for aligning partitions. The environment provided by the Arch install ISO includes the gdisk command. If you need it later on in the installed system, gdisk is available in the gptfdisk package.
A summary of the typical usage of gdisk:
- Start gdisk against your drive as root (disk-device may be e.g.
/dev/sda
):
# gdisk disk-device
- If the drive is brand new or if you are wanting to start over, create a new empty GUID partition table with the
o
command. - Create a new partition with the
n
command (primary type/1st partition). - Assuming the partition is new, gdisk will pick the highest possible alignment. Otherwise, it will pick the largest power of two that divides all partition offsets.
- If choosing to start on a sector before the 2048th gdisk will automatically shift the partition start to the 2048th disk sector. This is to ensure a 2048-sectors alignment (as a sector is 512B, this is a 1024KiB alignment which should fit any SSD NAND erase block).
- Use the
+x{M,G}
format to extend the partition x mebibytes or gibibytes, if choosing a size that is not a multiple of the alignment size (1024kiB), gdisk will shrink the partition to the nearest inferior multiple. For example, if you want to create a 15GiB partition, you would enter+15G
. To take all of the remaining space, press enter right away, or enter+0
instead. - Select the partition's type id, the default,
Linux filesystem
(code8300
), should be fine for most use. PressL
to show the codes list. If planning to use LVM selectLinux LVM
(8e00
). - Assign other partitions in a like fashion.
- Write the table to disk and exit via the
w
command. - Format the new partitions with a file system.
Using MBR - legacy method
Using MBR, the utility for editing the partition table is called fdisk. Recent versions of fdisk have abandoned the deprecated system of using cylinders as the default display unit, as well as MS-DOS compatibility by default. The latest fdisk automatically aligns all partitions to 2048 sectors, or 1024 KiB, which should work for all EBS sizes that are known to be used by SSD manufacturers. This means that the default settings will give you proper alignment.
Note that in the olden days, fdisk used cylinders as the default display unit, and retained an MS-DOS compatibility quirk that messed with SSD alignment. Therefore one will find many guides around the internet from around 2008-2009 making a big deal out of getting everything correct. With the latest fdisk, things are much simpler, as reflected in this guide.
Fdisk usage summary
- Start fdisk against your drive as root (disk-device may be e.g.
/dev/sda
):
# fdisk disk-device
- If the drive is brand new or if you are wanting to start over, create a new empty DOS partition table with the
o
command. - Create a new partition with the
n
command (primary type/1st partition). - Use the
+xG
format to extend the partition x gibibytes. For example, if you want to create a 15GiB partition, you would enter+15G
- Change the partition's system id from the default type of Linux (
type 83
) to the desired type via thet
command. This is an optional step should the user wish to create another type of partition for example, swap, NTFS, LVM, etc. Note that a complete listing of all valid partition types is available via thel
command. - Assign other partitions in a like fashion.
- Write the table to disk and exit via the
w
command.
Using cgdisk to create GPT partitions
Launch cgdisk with:
# cgdisk /dev/sda
Root:
- Choose New (or press
N
) –Enter
for the first sector (2048) – type in15G
–Enter
for the default hex code (8300) –Enter
for a blank partition name.
Home:
- Press the down arrow a couple of times to move to the larger free space area.
- Choose New (or press
N
) –Enter
for the first sector –Enter
to use the rest of the drive (or you could type in the desired size; for example30G
) –Enter
for the default hex code (8300) –Enter
for a blank partition name.
Here is what it should look like:
Part. # Size Partition Type Partition Name ---------------------------------------------------------------- 1007.0 KiB free space 1 15.0 GiB Linux filesystem 2 123.45 GiB Linux filesystem
Double check and make sure that you are happy with the partition sizes as well as the partition table layout before continuing.
If you would like to start over, you can simply select Quit (or press Q
) to exit without saving changes and then restart cgdisk.
If you are satisfied, choose Write (or press Shift+W
) to finalize and to write the partition table to the drive. Type yes
and choose Quit (or press Q
) to exit without making any more changes.
Using fdisk to create MBR partitions
Launch fdisk with:
# fdisk /dev/sda
Create the partition table:
-
Command (m for help):
typeo
and pressEnter
Then create the first partition:
-
Command (m for help):
typen
and pressEnter
- Partition type:
Select (default p):
pressEnter
-
Partition number (1-4, default 1):
pressEnter
-
First sector (2048-209715199, default 2048):
pressEnter
-
Last sector, +sectors or +size{K,M,G,T,P} (2048-209715199....., default 209715199):
type+15G
and pressEnter
Then create a second partition:
-
Command (m for help):
typen
and pressEnter
- Partition type:
Select (default p):
pressEnter
-
Partition number (1-4, default 2):
pressEnter
-
First sector (31459328-209715199, default 31459328):
pressEnter
-
Last sector, +sectors or +size{K,M,G,T,P} (31459328-209715199....., default 209715199):
pressEnter
Now preview the new partition table:
-
Command (m for help):
typep
and pressEnter
Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x5698d902 Device Boot Start End Blocks Id System /dev/sda1 2048 31459327 15728640 83 Linux /dev/sda2 31459328 209715199 89127936 83 Linux
Then write the changes to disk:
-
Command (m for help):
typew
and pressEnter
If everything went well fdisk will now quit with the following message:
The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
In case this does not work because fdisk encountered an error, you can use the q
command to exit.