diff options
Diffstat (limited to 'builder/modules.d/openslx_tmp_format/scripts')
| -rwxr-xr-x | builder/modules.d/openslx_tmp_format/scripts/format_openslx_tmp.sh | 38 |
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 |
