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
ocommand. - Create a new partition with the
ncommand (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+0instead. - Select the partition's type id, the default,
Linux filesystem(code8300), should be fine for most use. PressLto 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
wcommand. - 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
ocommand. - Create a new partition with the
ncommand (primary type/1st partition). - Use the
+xGformat 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 thetcommand. 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 thelcommand. - Assign other partitions in a like fashion.
- Write the table to disk and exit via the
wcommand.
Using cgdisk to create GPT partitions
Launch cgdisk with:
# cgdisk /dev/sda
Root:
- Choose New (or press
N) –Enterfor the first sector (2048) – type in15G–Enterfor the default hex code (8300) –Enterfor 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) –Enterfor the first sector –Enterto use the rest of the drive (or you could type in the desired size; for example30G) –Enterfor the default hex code (8300) –Enterfor 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):typeoand pressEnter
Then create the first partition:
-
Command (m for help):typenand 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+15Gand pressEnter
Then create a second partition:
-
Command (m for help):typenand 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):typepand 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):typewand 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.