summaryrefslogtreecommitdiffstats
path: root/etc/rc.d/initrandom
diff options
context:
space:
mode:
authorgordon <gordon@FreeBSD.org>2002-06-13 22:14:37 +0000
committergordon <gordon@FreeBSD.org>2002-06-13 22:14:37 +0000
commit9c5433cb225f7a4e56e87623ea2e4011179553a5 (patch)
tree3168589e209abd888b033397e3c46dee6131a116 /etc/rc.d/initrandom
parent50d99cdfecd92f5323a18aa791a5b1cb9d8b7191 (diff)
downloadFreeBSD-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/initrandom73
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"
OpenPOWER on IntegriCloud