From bb1d3022e0ea1ded1b78d51dd6705d04d8962d8c Mon Sep 17 00:00:00 2001 From: dalto Date: Mon, 27 Dec 2021 10:41:59 -0600 Subject: [PATCH] [mount] Add additional documentation in mount.conf and main.py --- src/modules/mount/main.py | 19 ++++++----- src/modules/mount/mount.conf | 63 ++++++++++++++++++++++++++++++------ 2 files changed, 63 insertions(+), 19 deletions(-) diff --git a/src/modules/mount/main.py b/src/modules/mount/main.py index 9a2e92e69..d8041f9ce 100644 --- a/src/modules/mount/main.py +++ b/src/modules/mount/main.py @@ -58,22 +58,21 @@ def disk_name_for_partition(partition): def is_ssd_disk(partition): - """ Checks if given disk is actually a ssd disk. + """ Checks if given partition is on an ssd disk. - :param partition: - :return: + :param partition: A dict containing the partition information + :return: True is the partition in on an ssd, False otherwise """ - disk_name = disk_name_for_partition(partition) - filename = os.path.join("/sys/block", disk_name, "queue/rotational") + try: + disk_name = disk_name_for_partition(partition) + filename = os.path.join("/sys/block", disk_name, "queue/rotational") - if not os.path.exists(filename): - # Should not happen unless sysfs changes, but better safe than sorry + with open(filename) as sysfile: + return sysfile.read() == "0\n" + except: return False - with open(filename) as sysfile: - return sysfile.read() == "0\n" - def get_mount_options(filesystem, mount_options, partition): """ diff --git a/src/modules/mount/mount.conf b/src/modules/mount/mount.conf index cff222b2d..70067d61b 100644 --- a/src/modules/mount/mount.conf +++ b/src/modules/mount/mount.conf @@ -5,16 +5,15 @@ # target as a usable chroot / "live" system). Filesystems are # automatically mounted from the partitioning module. Filesystems # listed here are **extra**. The filesystems listed in *extraMounts* -# are mounted in all target systems. The filesystems listed in -# *extraMountsEfi* are mounted in the target system **only** if -# the host machine uses UEFI. +# are mounted in all target systems. --- # Extra filesystems to mount. The key's value is a list of entries; each -# entry has four keys: +# entry has five keys: # - device The device node to mount # - fs (optional) The filesystem type to use # - mountPoint Where to mount the filesystem -# - options (optional) Extra options to pass to mount(8) +# - options (optional) An array of options to pass to mount +# - efi (optional) A boolean that when true is only mounted for UEFI installs # # The device is not mounted if the mountPoint is unset or if the fs is # set to unformatted. @@ -47,7 +46,7 @@ extraMounts: # It is possible to prevent subvolume creation -- this is likely only relevant # for the root (/) subvolume -- by giving an empty string as a subvolume # name. In this case no subvolume will be created. - +# btrfsSubvolumes: - mountPoint: / subvolume: /@ @@ -61,17 +60,63 @@ btrfsSubvolumes: - mountPoint: /var/log subvolume: /@log +# The name of the btrfs subvolume holding the swapfile. This only used when +# a swapfile is selected and the root filesystem is btrfs +# btrfsSwapSubvol: /@swap +# The mount options used to mount each filesystem. +# +# filsystem contains the name of the filesystem or on of three special +# values, "default", efi" and "btrfs_swap". The logic is applied in this manner: +# - If the partition is the EFI partition, the "efi" entry will be used +# - If the fs is btrfs and the subvolume is for the swapfile, +# the "btrfs_swap" entry is used +# - If the filesystem is an exact match for filesystem, that entry is used +# - If no match is found in the above, the default entry is used +# - If there is no match and no default entry, "defaults" is used +# - If the mountOptions key is not present, "defaults" is used +# +# Each filesystem entry contains 3 keys, all of which are optional +# options - An array of mount options that is used on all disk types +# ssdOptions - An array of mount options combined with options for ssds +# hddOptions - An array of mount options combined with options for hdds +# If combining these options results in an empty array, "defaults" is used +# +# Example 1 +# In this example, there are specific options for ext4 and btrfs filesystems, +# the EFI partition and the subvolume holding the btrfs swapfile. All other +# filesystems use the default entry. For the btrfs filesystem, there are +# additional options specific to hdds and ssds +# +# mountOptions: +# - filesystem: default +# options: [ defaults ] +# - filesystem: efi +# options: [ defaults, umask=0077 ] +# - filesystem: ext4 +# options: [ defaults, noatime ] +# - filesystem: btrfs +# options: [ defaults, noatime, compress=zstd:1 ] +# ssdOptions: [ discard=async ] +# hddOptions: [ autodefrag ] +# - filesystem: btrfs_swap +# options: [ defaults, noatime ] +# +# Example 2 +# In this example there is a single default used by all filesystems +# +# mountOptions: +# - filesystem: default +# options: [ defaults, noatime ] +# mountOptions: - filesystem: default options: [ defaults, noatime ] - filesystem: efi options: [ defaults, umask=0077 ] - filesystem: btrfs - options: [ defaults, noatime, compress ] - ssdOptions: [ discard=async ] - hddOptions: [ autodefrag ] + options: [ defaults, noatime, compress=lzo ] - filesystem: btrfs_swap options: [ defaults, noatime ]