aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToni Uhlig <matzeton@googlemail.com>2019-03-07 14:40:49 +0100
committerToni Uhlig <matzeton@googlemail.com>2019-03-07 14:40:49 +0100
commit5d95abdee246b6dbb1643f13e916e91700f133aa (patch)
tree0d37729f79430373a0af256bbb14e11b7c9fc69c
parent9b1dbbd805fd0f11697a2c82dd8d2ab092f6e4f7 (diff)
debian initramfs-script supports shutdown on timeout/failure
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
-rwxr-xr-xscripts/naskpass_debian.initscript29
1 files changed, 23 insertions, 6 deletions
diff --git a/scripts/naskpass_debian.initscript b/scripts/naskpass_debian.initscript
index 4075184..f9d0d25 100755
--- a/scripts/naskpass_debian.initscript
+++ b/scripts/naskpass_debian.initscript
@@ -31,7 +31,7 @@ post_naskpass()
# stop sshd
kill $(pidof sshd)
# shutdown/clean all up'd network interfaces
- for interface in $(ifconfig | grep -oE '^[a-zA-Z0-9]+\s+'); do
+ for interface in $(ifconfig | grep -oE '^[a-zA-Z0-9]+'); do
echo "disable ${interface}"
ifconfig ${interface} 0.0.0.0
ifconfig ${interface} down
@@ -334,6 +334,11 @@ setup_mapping()
if ! crypttarget="$crypttarget" cryptsource="$cryptsource" \
$cryptkeyscript -c"$cryptopen"; then
message "cryptsetup ($crypttarget): cryptsetup failed, bad password or options?"
+ for val in $(seq 3); do
+ echo -en "\rWait ${val}/3 seconds.."
+ sleep 1
+ done
+ echo
continue
fi
fi
@@ -389,13 +394,19 @@ setup_mapping()
break
done
- failsleep=60 # make configurable later?
-
if [ "$cryptrootdev" = "yes" ] && [ $crypttries -gt 0 ] && [ $count -ge $crypttries ]; then
message "cryptsetup ($crypttarget): maximum number of tries exceeded"
- message "cryptsetup: going to sleep for $failsleep seconds..."
- sleep $failsleep
- exit 1
+ if [ ${NASKPASS_SHUTDOWN} -ne 0 ]; then
+ echo 1 >/proc/sys/kernel/sysrq
+ for val in $(seq 5); do
+ echo -en "\rShutdown in ${val}/5 seconds.."
+ sleep 1
+ done
+ echo
+ echo o >/proc/sysrq-trigger
+ sleep 5
+ fi
+ return 1
fi
udev_settle
@@ -406,6 +417,8 @@ setup_mapping()
# Begin real processing
#
+export NASKPASS_SHUTDOWN=0
+
# Do we have any kernel boot arguments?
cmdline_cryptopts=''
unset cmdline_root
@@ -430,6 +443,9 @@ for opt in $(cat /proc/cmdline); do
*) # lilo major/minor number (See #398957). Ignore
esac
;;
+ naskshutdown)
+ export NASKPASS_SHUTDOWN=1
+ ;;
nonaskpass)
message "naskpass: disabled with nonaskpass..."
exit 0
@@ -456,4 +472,5 @@ if [ -r /conf/conf.d/cryptroot ]; then
fi
post_naskpass
+
exit 0