diff options
author | gordon <gordon@FreeBSD.org> | 2002-06-13 22:14:37 +0000 |
---|---|---|
committer | gordon <gordon@FreeBSD.org> | 2002-06-13 22:14:37 +0000 |
commit | 9c5433cb225f7a4e56e87623ea2e4011179553a5 (patch) | |
tree | 3168589e209abd888b033397e3c46dee6131a116 /etc/rc.d/initrandom | |
parent | 50d99cdfecd92f5323a18aa791a5b1cb9d8b7191 (diff) | |
download | FreeBSD-src-9c5433cb225f7a4e56e87623ea2e4011179553a5.zip FreeBSD-src-9c5433cb225f7a4e56e87623ea2e4011179553a5.tar.gz |
Merge in all the changes that Mike Makonnen has been maintaining for a
while. This is only the script pieces, the glue for the build comes next.
Submitted by: Mike Makonnen <makonnen@pacbell.net>
Reviewed by: silence on -current and -hackers
Prodded by: rwatson
Diffstat (limited to 'etc/rc.d/initrandom')
-rw-r--r-- | etc/rc.d/initrandom | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/etc/rc.d/initrandom b/etc/rc.d/initrandom new file mode 100644 index 0000000..318d83f --- /dev/null +++ b/etc/rc.d/initrandom @@ -0,0 +1,73 @@ +#!/bin/sh +# +# $FreeBSD$ +# + +# PROVIDE: initrandom +# REQUIRE: initdiskless +# BEFORE: disks +# KEYWORD: FreeBSD + +. /etc/rc.subr + +name="initrandom" +start_cmd="initrandom_start" +stop_cmd=":" + +feed_dev_random() +{ + if [ -f "${1}" -a -r "${1}" -a -s "${1}" ]; then + cat "${1}" | dd of=/dev/random bs=8k 2>/dev/null + fi +} + +initrandom_start() +{ + echo -n 'Entropy harvesting:' + + if checkyesno harvest_interrupt; then + if [ -w /dev/random ]; then + ${SYSCTL_W} kern.random.sys.harvest.interrupt=1 >/dev/null + echo -n ' interrupts' + fi + fi + + if checkyesno harvest_ethernet; then + if [ -w /dev/random ]; then + ${SYSCTL_W} kern.random.sys.harvest.ethernet=1 >/dev/null + echo -n ' ethernet' + fi + fi + + if checkyesno harvest_p_to_p; then + if [ -w /dev/random ]; then + ${SYSCTL_W} kern.random.sys.harvest.point_to_point=1 >/dev/null + echo -n ' point_to_point' + fi + fi + + echo '.' + + # First pass at reseeding /dev/random. + # + case ${entropy_file} in + [Nn][Oo] | '') + ;; + *) + if [ -w /dev/random ]; then + feed_dev_random "${entropy_file}" + fi + ;; + esac + + # XXX temporary until we can get the entropy + # harvesting rate up + # Entropy below is not great, + # but better than nothing. + ( ps -fauxww; sysctl -a; date; df -ib; dmesg; ps -fauxww; ) \ + | dd of=/dev/random bs=8k 2>/dev/null + cat /bin/ls | dd of=/dev/random bs=8k 2>/dev/null +} + +load_rc_config random +run_rc_command "$1" |