diff options
Diffstat (limited to 'modules.d/slx-dmsetup/scripts/gen-fstab-persistent')
-rw-r--r-- | modules.d/slx-dmsetup/scripts/gen-fstab-persistent | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/modules.d/slx-dmsetup/scripts/gen-fstab-persistent b/modules.d/slx-dmsetup/scripts/gen-fstab-persistent new file mode 100644 index 00000000..ed00b5de --- /dev/null +++ b/modules.d/slx-dmsetup/scripts/gen-fstab-persistent @@ -0,0 +1,52 @@ +#!/usr/bin/env bash +# +# Hook to generate stage4's fstab entries for persistent partitions +# +# Persistent identifiers (MBR types, GPT partition labels) +# are expected to be specified in the OpenSLX config +# as 'SLX_PERSISTENT_DEVICE_IDENTIFIER' and their filesystem +# as 'SLX_PERSISTENT_DEVICE_FILESYSTEM', e.g ext4 or xfs. +# If not specified, will default to 'auto' but will not +# active systemd's features 'x-systemd.makefs' and 'x-systemd.growfs' + +. /etc/openslx + +type -p emergency_shell >/dev/null 2>&1 || source /lib/dracut-lib.sh + +# NOTE: systemd makes the mount point path automatically. +# if multiple exists, take the biggest one (first in the list) +if [ -n "$SLX_PERSISTENT_DEVICE_IDENTIFIER" ]; then + declare -a persistent_dev_list + for persistent_dev in \ + $(get_partitions_by_id ${SLX_PERSISTENT_DEVICE_IDENTIFIER//,/ /}); do + [ -z "$persistent_dev" ] && continue + persistent_dev_list+=("$persistent_dev") + done + if [ "${#persistent_dev[@]}" -gt 0 ]; then + if [ "${#persistent_dev[@]}" -gt 1 ]; then + warn "$0: More than one persistent device found." + warn "$0: Will use the biggest one: ${persistent_dev[0]}" + fi + persistent_dev_systemd_name="$( tr '/' '-' <<< ${persistent_dev[0]:1})" + persistent_mount_opts="nofail" + if [ -n "$SLX_PERSISTENT_DEVICE_FILESYSTEM" ]; then + #persistent_mount_opts+=",x-systemd.requires=ensure-fs@${persistent_dev_systemd_name}" + persistent_mount_opts+=",x-systemd.after=ensure-fs@${persistent_dev_systemd_name}" + fi + ( + echo -ne "${persistent_dev[0]}\t" + echo -ne "${SLX_PERSISTENT_DEVICE_MOUNT_POINT:-/opt/openslx/persistent}\t" + echo -ne "${SLX_PERSISTENT_DEVICE_FILESYSTEM:-auto}\t" + echo -ne "${persistent_mount_opts}\t0\t2" + ) >> "$NEWROOT/etc/fstab" + + # drop-in to create filesystem if needed and + #persistent_dev_systemd_name="$( tr '/' '-' <<< ${persistent_dev[0]:1})" + #mkdir -p "$NEWROOT/etc/systemd/system/${persistent_dev_systemd_name}" + #cat <<- EOF > "$NEWROOT" + #EOF + else + warn "$0: No device with ID '$SLX_PERSISTENT_DEVICE_IDENTIFIER' found." + fi +fi +true |