Browse Source

Stop Umbrel if external storage device is unreliable (#224)

Co-authored-by: Luke Childs <lukechilds123@gmail.com>
v0.2.10
Arvinda R 4 years ago
committed by GitHub
parent
commit
af4066d05d
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 48
      scripts/umbrel-os/external-storage/monitor
  2. 4
      scripts/umbrel-os/external-storage/mount

48
scripts/umbrel-os/external-storage/monitor

@ -0,0 +1,48 @@
#!/usr/bin/env bash
set -euo pipefail
UMBREL_ROOT="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/../../..)"
block_device="${1}"
mount_point="${2}"
check_if_not_already_running() {
if ps ax | grep $0 | grep -v $$ | grep bash | grep -v grep
then
echo "storage monitor is already running"
exit 1
fi
}
main () {
check_if_not_already_running
while true; do
if ! [[ -e "/dev/${block_device}" ]]; then
echo "Mounted block device no longer exists!"
break
fi
if ! grep --quiet " ${mount_point} " /proc/mounts; then
echo "External storage is no longer mounted!"
break
fi
if grep " ${mount_point} " /proc/mounts | grep --quiet '[ ,]ro[ ,]'; then
echo "External storage is mounted as read only!"
break
fi
if ! df -h "${UMBREL_ROOT}" | grep --quiet "/dev/${block_device}"; then
echo "Umbrel root is no longer bind mounted to external storage!"
break
fi
sleep 1
done
echo "Stopping Umbrel due to failed storage device check..."
docker kill $(docker ps -aq)
}
main

4
scripts/umbrel-os/external-storage/mount

@ -203,6 +203,10 @@ main () {
echo "Checking SD Card root is bind mounted at /sd-root..." echo "Checking SD Card root is bind mounted at /sd-root..."
df -h "/sd-root${UMBREL_ROOT}" | grep --quiet "/dev/root" df -h "/sd-root${UMBREL_ROOT}" | grep --quiet "/dev/root"
echo "Starting external drive mount monitor..."
echo
${UMBREL_ROOT}/scripts/umbrel-os/external-storage/monitor ${block_device} ${MOUNT_POINT} &
echo "Mount script completed successfully!" echo "Mount script completed successfully!"
} }

Loading…
Cancel
Save