summaryrefslogtreecommitdiffstats
path: root/builder/modules.d/slx-dmsetup/scripts/generate-fstab-persistent.sh
blob: 5c6f2b8290edb1dcc2d2ee9ddbd6c6a28ac271f4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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