summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Bauer2018-03-06 14:26:07 +0100
committerJonathan Bauer2018-03-06 14:26:07 +0100
commitff60820c9a2c14ca9a14a0787f3b57007cff2119 (patch)
tree4d1a0b31f6791fde86119bb8a9f0dea476a65eb5
parentadd VLAN support (diff)
downloadsystemd-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-xbuilder/modules.d/openslx_tmp_format/module-setup.sh16
-rwxr-xr-xbuilder/modules.d/openslx_tmp_format/scripts/format_openslx_tmp.sh38
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