HDD

From Q
Jump to navigation Jump to search

Apart from the last step, setting up /etc/fstab there are no differences between partitioning a HDD or SSD drive. All modern Linux partitioning tools take care of aligning the partitions automatically.

Relevant Partition IDs

Note: Supported as of GPT fdisk 0.8.10.1.


Partition ID Description Auto-mounted by systemd Mount point
EF02 BIOS boot partition -
EF00 EFI System Partition -
FD00 Linux RAID -
8200 Linux swap yes
8300 Linux filesystem -
8302 Linux /home yes /home
8303 Linux x86 root (/) yes /
8304 Linux x86-64 root (/) yes /
8305 Linux ARM64 root (/) yes /
8306 Linux /srv yes /srv

Create a simple Linux GPT partition layout (UEFI with or without secure boot)

Code: GPT partition layout for UEFI
/dev/sda1	200 MiB	/boot/efi	EF00	vfat		EFI System Partition
/dev/sda2	500 MiB	/boot		8300	ext4		Linux filesystem
/dev/sda3	512 MiB			8200	swap		Linux swap
/dev/sda4	25  GiB	/		8304	ext4		Linux x86-64 root (/)
# gdisk /dev/sda


Code: gdisk commands
Command (? for help): p
Disk /dev/sda: 156301488 sectors, 74.5 GiB
[...]

n
1
enter
+200M
EF00

c
1
EFI System Partition

n
2
enter
+500M
8300

n
3
enter
+512M
8200

n
4
enter
enter
8304

p
w
Y

Create a simple Linux GPT partition layout (Legacy BIOS)

Code: GPT partition layout for legacy BIOS
/dev/sda1	1   MiB		EF02	BIOS boot	BIOS boot partition
/dev/sda2	100 MiB	/boot	8300	ext4		Linux filesystem
/dev/sda3	512 MiB		8200	swap		Linux swap
/dev/sda4	25  GiB	/	8304	ext4		Linux x86-64 root (/)


# gdisk /dev/sda


Code: gdisk commands
Command (? for help): p
Disk /dev/sda: 156301488 sectors, 74.5 GiB
[...]

n
1
enter
+1M
EF02

n
2
enter
+100M
8300

n
3
enter
+512M
8200

n
4
enter
enter
8304

p
w
Y

Create the filesystems

# mkfs.ext4 /dev/sda2
# mkswap /dev/sda3
# mkfs.ext4 /dev/sda4

Additional for UEFI:

# mkfs.vfat -F 32 /dev/sda1

Label the filesystems

# tune2fs -L boot /dev/sda2
# mkswap -L swap /dev/sda3
# tune2fs -L root /dev/sda4

Additional for UEFI:

# fatlabel /dev/sda1 efi

And verify with:

# blkid

Mount the filesystems

# mkdir -p /mnt/exherbo
# swapon /dev/sda3
# mount /dev/sda4 /mnt/exherbo
# mkdir /mnt/exherbo/boot
# mount /dev/sda2 /mnt/exherbo/boot

Additional for UEFI:

# mkdir /mnt/exherbo/boot/efi
# mount /dev/sda1 /mnt/exherbo/boot/efi

Optional: For installation or rescue purposes you might also need to mount the following.

# mount -o rbind /dev /mnt/exherbo/dev/
# mount -o rbind /sys /mnt/exherbo/sys/
# mount -t proc none /mnt/exherbo/proc/

Configure /etc/fstab

List the UUIDs with:

# blkid


For HDDs

File: /etc/fstab
UUID=cf602240-7bac-4b29-8930-2080a5aac7cd       /            ext4    defaults                      0 1
UUID=0930a69b-f2d5-4607-93fe-4f8bfdf2ea87       /boot        ext4    defaults                      0 2
UUID=8E3D-60F5                                  /boot/efi    vfat    umask=0077,shortname=winnt    0 0
UUID=8431f5f2-0cb1-4831-aed2-00d618543e0a       swap         swap    defaults                      0 0

For SSDs

  • You could go for relatime as a compromise instead, but there are currently no known issues (exception is mutt) when using noatime
  • discard enables the TRIM function which should be available on all modern SSDs, check with
    # hdparm -I /dev/sda
  • mdraid, dm-crypt and the loopback block driver support passing discard commands to the underlying layer(s) since kernel 3.7


File: /etc/fstab
UUID=cf602240-7bac-4b29-8930-2080a5aac7cd       /            ext4    defaults,noatime,discard             0 1
UUID=0930a69b-f2d5-4607-93fe-4f8bfdf2ea87       /boot        ext4    defaults,noatime,discard,noauto      0 2
UUID=8E3D-60F5                                  /boot/efi    vfat    umask=0077,shortname=winnt,noauto    0 0
UUID=8431f5f2-0cb1-4831-aed2-00d618543e0a       swap         swap    defaults                             0 0

SSD: Check estimated remaining life time / Wear Leveling Count

To check the current Wear Leveling Count (supported e.g. by Samsung SSDs).

# smartctl -a /dev/sda
Code: smartctl Wear_Leveling_Count Output
177 Wear_Leveling_Count     0x0013   099   099   000    Pre-fail  Always       -       2

The Wear_Leveling_Count starts to count down from 100 to 01, in this example it's 099 since the drive is pretty new.

Edit reserved block count (on pure data partitions)

# tune2fs -m 0 /dev/sdd1
# tune2fs -l /dev/sdd1