From 561e6cf130e579a427b17efbcd8ad2cc5b7fa278 Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 17 Apr 2023 02:12:42 +0200 Subject: [PATCH 1/6] Alternative sleep function --- run/power.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/run/power.sh b/run/power.sh index 4fc7b72..81efb6a 100644 --- a/run/power.sh +++ b/run/power.sh @@ -12,7 +12,6 @@ _QEMU_SHUTDOWN_COUNTER=/run/qemu.counter rm -f "${_QEMU_PID}" rm -f "${_QEMU_SHUTDOWN_COUNTER}" -# Allows for troubleshooting signals sent to the process _trap(){ func="$1" ; shift for sig ; do @@ -20,6 +19,13 @@ _trap(){ done } +snore() +{ + local IFS + [[ -n "${_snore_fd:-}" ]] || exec {_snore_fd}<> <(:) + read ${1:+-t "$1"} -u $_snore_fd || : +} + _graceful_shutdown(){ local QEMU_MONPORT="${QEMU_MONPORT:-7100}" From c9d544d0cd50620060efdda80db43eed275d58d3 Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 17 Apr 2023 02:16:49 +0200 Subject: [PATCH 2/6] Alternative sleep function --- run/run.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/run/run.sh b/run/run.sh index c88ab72..af76aab 100755 --- a/run/run.sh +++ b/run/run.sh @@ -52,7 +52,7 @@ set -m ) set +m -# Since we have to start the process with -m, we need to poll every intervall if it's still running +# Since we started the QEMU process with -m, we need to poll if it's still running while [ -d "/proc/$(cat ${_QEMU_PID})" ]; do - sleep 1 + snore 1 done From eb30a4d66f659c12cd73fcdf548ca5bfcb641ed6 Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 17 Apr 2023 02:27:50 +0200 Subject: [PATCH 3/6] Alternative sleep function --- agent/agent.sh | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/agent/agent.sh b/agent/agent.sh index 57111ed..8ced202 100644 --- a/agent/agent.sh +++ b/agent/agent.sh @@ -1,11 +1,18 @@ #!/usr/bin/env bash set -u -declare nmi +# Functions + +snore() +{ + local IFS + [[ -n "${_snore_fd:-}" ]] || exec {_snore_fd}<> <(:) + read ${1:+-t "$1"} -u $_snore_fd || : +} function checkNMI { - nmi=$(awk '/NMI/ {for (i=2; i<=NF; i++) if ($i ~ /^[0-9]+$/) {sum+=$i}} END {print sum}' /proc/interrupts) + local nmi=$(awk '/NMI/ {for (i=2; i<=NF; i++) if ($i ~ /^[0-9]+$/) {sum+=$i}} END {print sum}' /proc/interrupts) if [ "$nmi" != "" ] && [ "$nmi" -ne "0" ]; then @@ -18,9 +25,13 @@ function checkNMI { } +# Setup serialport + chmod 666 /dev/ttyS0 checkNMI +# Install packages + first_run=false for filename in /usr/local/packages/*.spk; do @@ -50,14 +61,17 @@ else fi +# Display message in docker log output + echo "-------------------------------------------" > /dev/ttyS0 echo " You can now login to DSM at port 5000 " > /dev/ttyS0 echo "-------------------------------------------" > /dev/ttyS0 +# Wait for NMI interrupt as a shutdown signal + while true; do checkNMI - sleep 2 + snore 2 done - From 7208cec5cb51a9550875c4933b81e2d0d98641a9 Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 17 Apr 2023 03:13:00 +0200 Subject: [PATCH 4/6] Fix shutdown issue --- agent/agent.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/agent/agent.sh b/agent/agent.sh index 8ced202..41b96f8 100644 --- a/agent/agent.sh +++ b/agent/agent.sh @@ -19,12 +19,21 @@ function checkNMI { echo "Received shutdown request through NMI.." > /dev/ttyS0 /usr/syno/sbin/synoshutdown -s > /dev/null - exit 0 + exit fi } +finish() { + + echo "Shutting down agent.." > /dev/ttyS0 + exit + +} + +trap finish SIGINT SIGTERM + # Setup serialport chmod 666 /dev/ttyS0 From 58e87cbcd921cc6560dafca7419293cd42f9269b Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 17 Apr 2023 03:16:12 +0200 Subject: [PATCH 5/6] Update agent version --- run/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run/install.sh b/run/install.sh index bf34a22..d78c5ea 100644 --- a/run/install.sh +++ b/run/install.sh @@ -160,7 +160,7 @@ cp /agent/service.sh $LOC/agent.sh chmod +x $LOC/agent.sh # Store agent version -echo "2" > "$STORAGE"/"$BASE".agent +echo "3" > "$STORAGE"/"$BASE".agent echo "Install: Installing system partition..." From a5a82661758ddcf1ae9e976127b034390f037dbe Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 17 Apr 2023 03:17:26 +0200 Subject: [PATCH 6/6] Shellcheck --- agent/agent.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/agent/agent.sh b/agent/agent.sh index 41b96f8..556571c 100644 --- a/agent/agent.sh +++ b/agent/agent.sh @@ -12,7 +12,8 @@ snore() function checkNMI { - local nmi=$(awk '/NMI/ {for (i=2; i<=NF; i++) if ($i ~ /^[0-9]+$/) {sum+=$i}} END {print sum}' /proc/interrupts) + local nmi + nmi=$(awk '/NMI/ {for (i=2; i<=NF; i++) if ($i ~ /^[0-9]+$/) {sum+=$i}} END {print sum}' /proc/interrupts) if [ "$nmi" != "" ] && [ "$nmi" -ne "0" ]; then