blob: 7dd5da3753c541ead973e92c45030566015d0735 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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
}
|