diff options
| author | Daniel Baumann <daniel@debian.org> | 2012-06-05 17:30:25 +0200 |
|---|---|---|
| committer | Daniel Baumann <daniel@debian.org> | 2012-06-05 19:35:56 +0200 |
| commit | be6b2f51059e0604bd3728e6cd603972df8cf619 (patch) | |
| tree | f96cb3406b3339d2fecb7222b316c754ea2e98e5 /scripts/boot/verify-checksums.sh | |
| parent | 99d761a75c2d4b6fb1bcfd742de24b459a3ca1ad (diff) | |
| download | live-boot-be6b2f51059e0604bd3728e6cd603972df8cf619.tar.gz live-boot-be6b2f51059e0604bd3728e6cd603972df8cf619.zip | |
Rewriting live-media checksum verification to work with any SHA and MD5 digests.
Diffstat (limited to 'scripts/boot/verify-checksums.sh')
| -rwxr-xr-x | scripts/boot/verify-checksums.sh | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/scripts/boot/verify-checksums.sh b/scripts/boot/verify-checksums.sh new file mode 100755 index 0000000..7dd5da3 --- /dev/null +++ b/scripts/boot/verify-checksums.sh @@ -0,0 +1,63 @@ +#!/bin/sh + +#set -e + +Verify_checksums () +{ + _MOUNTPOINT="${1}" + + _DIGESTS="sha512 sha384 sha256 sha224 sha1 md5" + _TTY="/dev/tty8" + + log_begin_msg "Verifying checksums" + + cd "${_MOUNTPOINT}" + + for _DIGEST in ${_DIGESTS} + do + _CHECKSUMS="$(echo ${_DIGEST} | tr [a-z] [A-Z])SUMS" + + if [ -e "${_CHECKSUMS}" ] + then + echo "Found ${_CHECKSUMS}..." > "${_TTY}" + + if [ -e "/bin/${_DIGEST}sum" ] + then + echo "Checking ${_CHECKSUMS}..." > "${_TTY}" + + # Verify checksums + /bin/${_DIGEST}sum -c "${_CHECKSUMS}" < "${_TTY}" > "${_TTY}" + _RETURN="${?}" + + # Stop after first verification + break + else + echo "Not found /bin/${_DIGEST}sum..." > "${_TTY}" + fi + fi + 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 +} |
