HDD

From Q
Revision as of 13:01, 8 April 2014 by Tgurr (talk | contribs)
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

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

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 bind /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         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.

Then proceed to configure GRUB and your Kernel.