summaryrefslogtreecommitdiff
path: root/scripts/boot/0030-verify-checksums
diff options
context:
space:
mode:
authorDaniel Baumann <mail@daniel-baumann.ch>2013-04-26 09:39:47 +0200
committerDaniel Baumann <mail@daniel-baumann.ch>2013-05-06 13:54:17 +0200
commitcdeea6bf8b114e499c650e14549fd0affd5d5b4a (patch)
tree477b4fb322a2ca41484883e1cdd3de07afbeb24b /scripts/boot/0030-verify-checksums
parent53bb5b1c1f1747f2a4fb0e31321a85302692c920 (diff)
downloadlive-boot-cdeea6bf8b114e499c650e14549fd0affd5d5b4a.tar.gz
live-boot-cdeea6bf8b114e499c650e14549fd0affd5d5b4a.zip
Renumbering the first three early scripts.
Diffstat (limited to 'scripts/boot/0030-verify-checksums')
-rwxr-xr-xscripts/boot/0030-verify-checksums89
1 files changed, 89 insertions, 0 deletions
diff --git a/scripts/boot/0030-verify-checksums b/scripts/boot/0030-verify-checksums
new file mode 100755
index 0000000..08b2972
--- /dev/null
+++ b/scripts/boot/0030-verify-checksums
@@ -0,0 +1,89 @@
+#!/bin/sh
+
+#set -e
+
+Verify_checksums ()
+{
+ for _PARAMETER in ${_CMDLINE}
+ do
+ case "${_PARAMETER}" in
+ live-boot.verify-checksums=*|verify-checksums=*)
+ LIVE_VERIFY_CHECKSUMS="true"
+ LIVE_VERIFY_CHECKSUMS_DIGESTS="${_PARAMETER#*verify-checksums=}"
+ ;;
+
+ live-boot.verify-checksums|verify-checksums)
+ LIVE_VERIFY_CHECKSUMS="true"
+ ;;
+ esac
+ done
+
+ case "${LIVE_VERIFY_CHECKSUMS}" in
+ true)
+ ;;
+
+ *)
+ return 0
+ ;;
+ esac
+
+ _MOUNTPOINT="${1}"
+
+ LIVE_VERIFY_CHECKSUMS_DIGESTS="${LIVE_VERIFY_CHECKSUMS_DIGESTS:-sha512 sha384 sha256 sha224 sha1 md5}"
+ _TTY="/dev/tty8"
+
+ log_begin_msg "Verifying checksums"
+
+ cd "${_MOUNTPOINT}"
+
+ for _DIGEST in $(echo ${LIVE_VERIFY_CHECKSUMS_DIGESTS} | sed -e 's|,| |g')
+ do
+ _CHECKSUMS="$(echo ${_DIGEST} | tr [a-z] [A-Z])SUMS ${_DIGEST}sum.txt"
+
+ for _CHECKSUM in ${_CHECKSUMS}
+ do
+ if [ -e "${_CHECKSUM}" ]
+ then
+ echo "Found ${_CHECKSUM}..." > "${_TTY}"
+
+ if [ -e "/bin/${_DIGEST}sum" ]
+ then
+ echo "Checking ${_CHECKSUM}..." > "${_TTY}"
+
+ # Verify checksums
+ /bin/${_DIGEST}sum -c "${_CHECKSUM}" < "${_TTY}" > "${_TTY}"
+ _RETURN="${?}"
+
+ # Stop after first verification
+ break
+ else
+ echo "Not found /bin/${_DIGEST}sum..." > "${_TTY}"
+ fi
+ fi
+ done
+ done
+
+ log_end_msg
+
+ case "${_RETURN}" in
+ 0)
+ log_success_msg "Verification successfull, rebooting in 10 seconds."
+ sleep 10
+
+ # Unmount live-media
+ cd /
+ umount -f ${_MOUNTPOINT} > /dev/null 2>&1
+ sync
+
+ # Attempt to remount all mounted filesystems read-only
+ echo u > /proc/sysrq-trigger
+
+ # Immediately reboot the system without syncing or unmounting filesystems
+ echo b > /proc/sysrq-trigger
+ ;;
+
+ *)
+ panic "Verification failed, $(basename ${_TTY}) for more information."
+ ;;
+ esac
+}