diff options
author | Jonathan Bauer | 2018-11-12 12:42:55 +0100 |
---|---|---|
committer | Jonathan Bauer | 2018-11-12 17:30:33 +0100 |
commit | 4a26a9fb86d98983c1485c63399fc89d593e8f9c (patch) | |
tree | ad4996aec7b863aa1275104206c3ac11a5068519 /builder/modules.d/slx-partitioner/scripts/gen-fstab-persistent | |
parent | [dnbd3-rfs] config: add PXE server info to config (diff) | |
download | systemd-init-4a26a9fb86d98983c1485c63399fc89d593e8f9c.tar.gz systemd-init-4a26a9fb86d98983c1485c63399fc89d593e8f9c.tar.xz systemd-init-4a26a9fb86d98983c1485c63399fc89d593e8f9c.zip |
[slx-partitioner] new module for scratch partition handling
Diffstat (limited to 'builder/modules.d/slx-partitioner/scripts/gen-fstab-persistent')
-rw-r--r-- | builder/modules.d/slx-partitioner/scripts/gen-fstab-persistent | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/builder/modules.d/slx-partitioner/scripts/gen-fstab-persistent b/builder/modules.d/slx-partitioner/scripts/gen-fstab-persistent new file mode 100644 index 00000000..ed00b5de --- /dev/null +++ b/builder/modules.d/slx-partitioner/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 |