summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@vyos.io>2026-09-24 16:28:20 +0100
committerGitHub <noreply@github.com>2026-09-24 16:28:20 +0100
commitd1394291337eb0274e026145a4c6245207c1c71d (patch)
tree29c15c317c8da9748412e9cb0ce39c5ac4fc833c /data
parentb744b1a0c794db4ca1a6336053389bbc02e2e6f6 (diff)
parentcf96c25670317f26c113bf31d513ed02914ce2f6 (diff)
downloadvyos-build-d1394291337eb0274e026145a4c6245207c1c71d.tar.gz
vyos-build-d1394291337eb0274e026145a4c6245207c1c71d.zip
Merge pull request #1283 from plattfishy/rolling
T5498: Add script to run e2fsck -p to initramfs-tools
Diffstat (limited to 'data')
-rwxr-xr-xdata/live-build-config/includes.chroot/etc/initramfs-tools/scripts/init-premount/run_e2fsck60
1 files changed, 60 insertions, 0 deletions
diff --git a/data/live-build-config/includes.chroot/etc/initramfs-tools/scripts/init-premount/run_e2fsck b/data/live-build-config/includes.chroot/etc/initramfs-tools/scripts/init-premount/run_e2fsck
new file mode 100755
index 00000000..df34b4cd
--- /dev/null
+++ b/data/live-build-config/includes.chroot/etc/initramfs-tools/scripts/init-premount/run_e2fsck
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+PREREQS=""
+prereqs() { echo "$PREREQS"; }
+
+case "$1" in
+ prereqs)
+ prereqs
+ exit 0
+ ;;
+esac
+
+. /scripts/functions
+log_begin_msg "Running e2fsck"
+
+persistent_partition=$(blkid -L persistence -o device)
+
+is_mounted() {
+ awk -v "dev=${1}" 'BEGIN{rc=1}dev==$1{rc=0}END{exit rc}' '/proc/mounts'
+}
+
+fsck_log() {
+ status="${1}"
+ message="${2}"
+ log_${status}_msg "${message}"
+ echo "e2fsck: [${status}] ${message}" >/dev/kmsg
+}
+
+check_rc_bitmask() {
+ rc="$1"
+ to_check="$2"
+ status="$3"
+ message="$4"
+ if [ "$((rc&to_check))" -eq "${to_check}" ]; then
+ fsck_log "${status}" "${message}"
+ fi
+}
+
+# this first if checks if a partition with label=='persistence' exists and is not already mounted.
+if test -n "${persistent_partition}" && ! is_mounted "${persistent_partition}"; then
+ e2fsck -p "${persistent_partition}"
+ rc=$?
+ if [ "${rc}" -eq 0 ]; then
+ fsck_log 'success' "fsck succeeded with no errors found"
+ else
+ check_rc_bitmask ${rc} 1 'success' "File system errors corrected"
+ check_rc_bitmask ${rc} 2 'warning' "File system errors corrected, system should be rebooted"
+ check_rc_bitmask ${rc} 4 'failure' "File system errors left uncorrected"
+ check_rc_bitmask ${rc} 8 'failure' "Operational error"
+ check_rc_bitmask ${rc} 16 'failure' "Usage or syntax error"
+ check_rc_bitmask ${rc} 32 'failure' "E2fsck canceled by user request"
+ check_rc_bitmask ${rc} 128 'failure' "Shared library error"
+ fi
+elif test -n "${persistent_partition}"; then
+ fsck_log 'failure' "filesystem already mounted"
+else
+ fsck_log 'warning' "No partition named persistence found"
+fi
+
+log_end_msg