diff options
author | Jonathan Bauer | 2018-03-06 14:26:07 +0100 |
---|---|---|
committer | Jonathan Bauer | 2018-03-06 14:26:07 +0100 |
commit | ff60820c9a2c14ca9a14a0787f3b57007cff2119 (patch) | |
tree | 4d1a0b31f6791fde86119bb8a9f0dea476a65eb5 | |
parent | add VLAN support (diff) | |
download | systemd-init-ff60820c9a2c14ca9a14a0787f3b57007cff2119.tar.gz systemd-init-ff60820c9a2c14ca9a14a0787f3b57007cff2119.tar.xz systemd-init-ff60820c9a2c14ca9a14a0787f3b57007cff2119.zip |
new module to format newroot's /tmp
Uses SLX_TMP_PARTITION_IDENTIFIER from the openslx configuration file to detect which partition to format.
Formatting is done either by the command in SLX_TMP_PARTITION_FILESYSTEM_CREATE_COMMAND, if set, or by either mkfs.xfs or mkfs.ext4 as fallbacks
-rwxr-xr-x | builder/modules.d/openslx_tmp_format/module-setup.sh | 16 | ||||
-rwxr-xr-x | builder/modules.d/openslx_tmp_format/scripts/format_openslx_tmp.sh | 38 |
2 files changed, 54 insertions, 0 deletions
diff --git a/builder/modules.d/openslx_tmp_format/module-setup.sh b/builder/modules.d/openslx_tmp_format/module-setup.sh new file mode 100755 index 00000000..c20eb1dd --- /dev/null +++ b/builder/modules.d/openslx_tmp_format/module-setup.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +check() { + # Tell dracut that this module should only be included if it is required + # explicitly. + return 255 +} +depends() { + echo dnbd3-rootfs +} +install() { + # must be *after* the download of the openslx config + # which is currently 00-fetch-config.sh + inst_hook pre-mount 10 "$moddir/scripts/format_openslx_tmp.sh" + inst_multiple mkfs.xfs mkfs.ext4 +} 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 |