Mounting Default Filesystems

Surely at some point you will come across the need to mount an additional partition, either temporarily or with persistance across reboots. To do this, you will need to modify the settings within the /etc/fstab configuration file. See the details below for more information.

ArchWiki - Fstab

Fstab Parameters

At first glance, knowing misconfiguration can cause system failure, editing this file can be intimidating. To ensure no mistakes are made, understand what you are specifying when creating a new Fstab entry. Its important to always backup your settings before modifying this file, as in the event of system failure you can always simply restore your misconfiguration with this last working Fstab entry.

From left to right, fstab requires six total parameters, including the UUID. Below, we will go over some settings that might be useful for common configurations.

Device

Describes the block special device or remote filesystem to be mounted

Dir

Describes the mount directory

Type

Sets the file system type

Options

Sets associated mount options

Dump

dump(8)

Option to check the filesystem with the dump(8) utility. This field is usually set to 0, which disables the check.

The fifth field, (fs_freq), is used for these filesystems by the dump(8) command to determine which filesystems need to be dumped. If the fifth field is not present, a value of zero is returned and dump will assume that the filesystem does not need to be dumped.

man 5 fstab

Fsck

fsck(8) Sets the order for filesystem checks at boot time

For the root device it should be 1. For other partitions it should be 2, or 0 to disable checking.

The sixth field, (fs_passno), is used by the fsck(8) program to determine the order in which filesystem checks are done at reboot time. The root filesystem should be specified with a fs_passno of 1, and other filesystems should have a fs_passno of 2. Filesystems within a drive will be checked sequentially, but filesystems on different drives will be checked at the same time to utilize parallelism available in the hardware. If the sixth field is not present or zero, a value of zero is returned and fsck will assume that the filesystem does not need to be checked.

man 5 fstab

Fstab Entry Examples

The sections below contain example configurations for various fstab scenarios

Mounting Swap Space

For example, to add a swap partition entry created by following the Swap Allocation instructions, an entry similar to the below would be added to our /etc/fstab

# <device> <dir> <type> <options> <dump> <fsck>
LABEL=SYSTEM   /        ext4   defaults        0 0
LABEL=UEFI      /boot/efi       vfat    defaults        0 0
/swapfile none swap defaults 0 0

Note that the first line is a comment I tossed into my /etc/fstab and is not there by default. The SYSTEM and UEFI lines are default mount configurations for our root filesystem and boot partitions, respectively. If you have defined a dedeicated parition for your /home directory, it would also be listed here, sometimes labeled as DATA.

Our swap partition is defined by the final line -

/swapfile none swap defaults 0 0

/swapfile points to the swapfile we created following the Swap Allocation instructions.

none tells our system not to mount this device anywhere within our filesystem for access / reading by the user.

swap defines the partition as the swap filesystem type

defaults passes the default set of options for this fstab entry

dump is set to 0, which disbales dump(8) from running its filesystem check

fsck is set to 0, which disables the fsck(8) integrity check, since this is swap space and not an actualy filesystem.

Optional Mounts

Sometimes, a filesystem may be removed from a system temporarily. We still use fstab to mount this filesystem, but we need to prepare the system for the case that it is not present for mounting at system boot.

External devices that are to be mounted when present but ignored if absent may require the nofail option. This prevents errors being reported at boot. For example:

/dev/sdg1        /media/backup    jfs    nofail,x-systemd.device-timeout=1ms    0  2

The nofail option is best combined with the x-systemd.device-timeout option. This is because the default device timeout is 90 seconds, so a disconnected external device with only nofail will make your boot take 90 seconds longer, unless you reconfigure the timeout as shown. Make sure not to set the timeout to 0, as this translates to infinite timeout.

ArchWiki - External Devices

Network Shares

If your external device requires another systemd unit to be loaded (for example the network for a network share) you can use x-systemd.requires=x combined with x-systemd.automount to postpone automounting until after the unit is available. For example:

//host/share    /net/share        cifs   noauto,nofail,x-systemd.automount,x-systemd.requires=network-online.target,x-systemd.device-timeout=10,workgroup=workgroup,credentials=/foo/credentials    0 0

ArchWiki - External Devices

Block Device Commands

When creating a new entry within fstab, sometimes you may need to find more information on the devices connected to your system. See the commands below for useful output. None of these commands, when ran verbatum, will make any changes to your system. They are only for gathering needed information.

Note that the output of the commands is present, but has been reduced (and obfuscated, where needed) to keep the length of this page down.

Print information on all connected block devices -

lsblk
sda      8:0    0 931.5G  0 disk 
├─sda1   8:1    0   128M  0 part 
├─sda2   8:2    0 925.5G  0 part 
└─sda3   8:3    0   5.9G  0 part 

Print the UUIDs of all connected block devices, along with some other hardware information -

sudo blkid
/dev/sdb2: UUID="436b3ae3-4301-4b8a-80d3-fdf52c7d7059" TYPE="swap" PARTUUID="590670f6-3b89-41b5-b474-fcd6c048628d"

Print information on partitions one all connected block devices -

sudo parted -l
Model: HDD A12345678-B3210 (scsi)
Disk /dev/sdb: 2000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:   

Number  Start   End     Size    File system     Name  Flags
 1      1049kB  1000MB  999MB   fat32                 boot, esp
 2      1000MB  17.0GB  16.0GB  linux-swap(v1)
 3      17.0GB  117GB   100GB   ext4
 4      117GB   217GB   100GB   ext4
 5      217GB   427GB   210GB   ext4

Print information given a specific block device (partitions) -

sudo tune2fs -l /dev/sdb3
tune2fs 1.45.4 (23-Sep-2019)
Filesystem volume name:   <none>
Last mounted on:          /
Filesystem UUID:          fagbraetd325t9-6gafdee7-4d2344agdd-93d2-6f4safsafsa5d6
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Filesystem created:       Mon Oct 14 12:34:48 2019
Last mount time:          Thu Oct 24 12:27:30 2019
Last write time:          Thu Oct 24 12:27:30 2019
Mount count:              50
Maximum mount count:      -1
Lifetime writes:          50 GB
Default directory hash:   half_md4
Directory Hash Seed:      4e7gds499c3-8532e0-452356c-432890c-d0fds43e2be81ee
Journal backup:           inode blocks
Checksum type:            crc32c
Checksum:                 0xb054235dk