summaryrefslogtreecommitdiffstats
path: root/modules.d/openslx-tmp-format/scripts/openslx_tmp_format.sh
blob: 9848b923aa07e38c74a62f052f5c0e82d6e9279a (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
53
54
55
56
57
58
#!/usr/bin/env bash
#
# Formats the partition used for "${NEWROOT}/tmp"
# using filesystem given as SLX_TMP_PARTITION_FILESYSTEM
# if possible. If not, it tries xfs and ext4 as fallbacks.
source /usr/lib/configure-logging.sh
bl.module.import bashlink.filesystem

. /usr/lib/openslx/tools.sh
. /etc/openslx

# If it is not set, assume the functionality is unwanted
[ -z "${SLX_TMP_PARTITION_IDENTIFIER}" ] && return 0

# Support comma-separated list of identifiers, e.g.
# "OpenSLX-ID44,0x44" as these can match GPT label (recommended)
# and even MBR partition types (more of an ugly hack currently...)
OLDIFS="$IFS"
IFS=","
SLX_TMP_PARTITION_DEVICE=
for identifier in ${SLX_TMP_PARTITION_IDENTIFIER}; do
	SLX_TMP_PARTITION_DEVICE="$(bl.filesystem.find_block_device "${identifier}" '' \
		"${SLX_TMP_PARTITION_IDENTIFIER_TIMEOUT_IN_SECONDS:-5}")"
	if [ -n "${SLX_TMP_PARTITION_DEVICE}" ]; then
		echo "SLX_TMP_PARTITION_DEVICE=${SLX_TMP_PARTITION_DEVICE}" >> /etc/openslx
		break
	fi
done
IFS="$OLDIFS"

if [ -z "${SLX_TMP_PARTITION_DEVICE}" ]; then
	warn "[${BASH_SOURCE[0]}] \
		Could not find device matching identifiers: ${SLX_TMP_PARTITION_IDENTIFIER}."
	return 1
fi
# Since a partition identifier is set and this module was built
# assume that the partition should always be formatted.
if [ -z "${SLX_TMP_PARTITION_FILESYSTEM_CREATE_COMMAND}" ] ||
	! command -v "${SLX_TMP_PARTITION_FILESYSTEM_CREATE_COMMAND%%\ *}" >/dev/null; then
	warn "[${BASH_SOURCE[0]}] \
		'${SLX_TMP_PARTITION_FILESYSTEM_CREATE_COMMAND%%\ *}' invalid. Using fallbacks..."
	# Fallbacks
	if command -v mkfs.xfs >/dev/null; then
		SLX_TMP_PARTITION_FILESYSTEM_CREATE_COMMAND="mkfs.xfs -f"
	elif command -v mkfs.ext4 >/dev/null; then
		SLX_TMP_PARTITION_FILESYSTEM_CREATE_COMMAND="mkfs.ext4 -F"
	else
		warn "[${BASH_SOURCE[0]}] No suitable mkfs command found! Skipping..."
		return 1
	fi
fi

if ! ${SLX_TMP_PARTITION_FILESYSTEM_CREATE_COMMAND} "${SLX_TMP_PARTITION_DEVICE}"; then
	warn "[${BASH_SOURCE[0]}] \
		Failed to format '${SLX_TMP_PARTITION_DEVICE}' using: \
		${SLX_TMP_PARTITION_FILESYSTEM_CREATE_COMMAND}"
	return 1
fi