summaryrefslogtreecommitdiffstats
path: root/builder/modules.d/openslx_tmp_format/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'builder/modules.d/openslx_tmp_format/scripts')
-rwxr-xr-xbuilder/modules.d/openslx_tmp_format/scripts/format_openslx_tmp.sh38
1 files changed, 38 insertions, 0 deletions
diff --git a/builder/modules.d/openslx_tmp_format/scripts/format_openslx_tmp.sh b/builder/modules.d/openslx_tmp_format/scripts/format_openslx_tmp.sh
new file mode 100755
index 00000000..26b6cb81
--- /dev/null
+++ b/builder/modules.d/openslx_tmp_format/scripts/format_openslx_tmp.sh
@@ -0,0 +1,38 @@
+#!/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.
+
+command -v emergency_shell >/dev/null || source /lib/dracut-lib.sh
+
+. /etc/openslx
+
+if [ -z "${SLX_TMP_PARTITION_IDENTIFIER}" ]; then
+ emergency_shell "[${BASH_SOURCE[0]}] \
+ SLX_TMP_PARTITION_IDENTIFIER not set!"
+fi
+SLX_TMP_PARTITION_DEVICE="/dev/disk/by-partlabel/${SLX_TMP_PARTITION_IDENTIFIER}"
+if [ ! -b "$(readlink -f ${SLX_TMP_PARTITION_DEVICE})" ]; then
+ emergency_shell "[${BASH_SOURCE[0]}] \
+ '${SLX_TMP_PARTITION_DEVICE}' does not point to a block device"
+fi
+
+if [ -z "${SLX_TMP_PARTITION_FILESYSTEM_CREATE_COMMAND}" ] || \
+ ! command -v "${SLX_TMP_PARTITION_FILESYSTEM_CREATE_COMMAND%%\ *}" >/dev/null; then
+ 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
+ emergency_shell "[${BASH_SOURCE[0]}] No suitable mkfs command found!"
+ fi
+fi
+
+if ! ${SLX_TMP_PARTITION_FILESYSTEM_CREATE_COMMAND} "${SLX_TMP_PARTITION_DEVICE}"; then
+ emergency_shell "[${BASH_SOURCE[0]}] \
+ Failed to format '${SLX_TMP_PARTITION_DEVICE}' using: \
+ ${SLX_TMP_PARTITION_FILESYSTEM_CREATE_COMMAND}"
+fi
+
+exit 0