Skip to content

Disk Setup ​

This section is 1.9-1.11 of the Arch Linux Installation Guide.

List the disks ​

Run fdisk -l to list the disks.

You will see something like this for a virtual machine.

Disk /dev/sda: 256 GiB, 274877906944 bytes, 536870912 sectors
Disk model: Virtual Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

You will see something like this for a physical machine. Note I have 2 SSDs and the USB drive I booted from.

Disk /dev/nvme0n1: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: Manufacturer
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 /dev/nvme1n1: 1.82 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: Manufacturer
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 /dev/sda: 15 GiB, 16107175936 bytes, 31459328 sectors
Disk model: USB DISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

You can setup the disks however you want. This is my setup

  • One Boot/OS Disk (Typically the fastest)
    • EFI Partition for booting
    • Swap Partition
    • Root Partition
  • Secondary Data Disk with one partition, typically a slower disk

Partition Boot Drive ​

We will have:

  1. 1GB for the EFI partitions, for 2 kernels we will be installing later
  2. 8GB for the swap partition
  3. The rest for the root partition

Run the following to enter parted. Replace /dev/sda with the disk you want to partition.

bash
parted -a optimal /dev/sda

Then do this:

  1. Create a GPT partition table
    mklabel gpt
  2. Create a partition for EFI
    mkpart primary fat32 0% 1GiB
  3. Set it as the EFI System Partition
    set 1 esp on
  4. Create the swap partition of 8GiB (9-1=8)
    mkpart primary 1GiB 9GiB
  5. Create the root partition
    mkpart primary 9GiB 100%
  6. print to make sure everything is OK
    Number  Start   End     Size    File system  Name     Flags
    1      1049kB  1074MB  1073MB  fat32        primary  boot, esp
    2      1074MB  9664MB  8590MB               primary
    3      9664MB  275GB   265GB                primary
  7. quit to exit parted

Partition Data Disk ​

First again run parted, replace /dev/nvme1n1 with the disk you want to partition.

bash
parted -a optimal /dev/nvme1n1

Then Create one partition that uses the whole disk

mklabel gpt
mkpart primary 0% 100%

Again, print to make sure everything is OK and quit to exit.

Format the partitions ​

Run fdisk -l again to see the partitions and their labels

Disk /dev/sda: 256 GiB, 274877906944 bytes, 536870912 sectors
...

Device        Start       End   Sectors  Size Type
/dev/sda1      2048   2097151   2095104 1023M EFI System
/dev/sda2   2097152  18874367  16777216    8G Linux filesystem
/dev/sda3  18874368 536868863 517994496  247G Linux filesystem

WARNING

Make sure you select the right partition to format. Keep in mind it's the partition, not the disk

Format EFI Partition ​

Replace /dev/sda1 with the EFI partition devive

bash
mkfs.vfat -F32 /dev/sda1

TIP

The difference between vfat and fat is that vfat supports longer file names. Read more here: https://en.wikipedia.org/wiki/File_Allocation_Table. You can also run mkfs.fat though.

Format Swap Partition ​

Replace /dev/sda2 with the swap partition device

bash
mkswap -L swap /dev/sda2

This will label it swap

Format Root Partition ​

Replace /dev/sda3 with the root partition device

bash
mkfs.ext4 -L root /dev/sda3

This will label it root

TIP

Formatting the root/data partition might be a bit slower than the other partitions

Format Data Partition ​

Replace /dev/nvme1n1p1 with the data partition device

bash
mkfs.ext4 -L data /dev/nvme1n1p1

This will label it data

TIP

Formatting the root/data partition might be a bit slower than the other partitions

Mount the file systems ​

Now that the partitions and file systems are created, we need to mount them so we can control them from the live environment.

  1. Mount the root partition to /mnt, replace /dev/sda3 with the root partition device
    bash
    mount /dev/sda3 /mnt
  2. Mount the EFI partition to /mnt/boot, replace /dev/sda1 with the EFI partition device
    bash
    mount --mkdir /dev/sda1 /mnt/boot
  3. Enable the swap volume, replace /dev/sda2 with the swap partition device
    bash
    swapon /dev/sda2

TIP

You probably don't need to mount the data partition when installing the system.