xref: /dragonfly/etc/rc.d/initrandom (revision d600454b)
1#!/bin/sh
2#
3# $FreeBSD: src/etc/rc.d/initrandom,v 1.1 2002/06/13 22:14:36 gordon Exp $
4# $DragonFly: src/etc/rc.d/initrandom,v 1.5 2005/11/19 21:47:32 swildner Exp $
5#
6
7# PROVIDE: initrandom
8# REQUIRE: initdiskless
9# BEFORE: disks
10
11. /etc/rc.subr
12
13name="initrandom"
14start_cmd="initrandom_start"
15stop_cmd=":"
16
17feed_dev_random()
18{
19	if [ -f "${1}" -a -r "${1}" -a -s "${1}" ]; then
20		cat "${1}" | dd of=/dev/random bs=8k 2>/dev/null
21	fi
22}
23
24initrandom_start()
25{
26	echo '.'
27
28	# First pass at reseeding /dev/random.
29	#
30	case ${entropy_file} in
31	[Nn][Oo] | '')
32		;;
33	*)
34		if [ -w /dev/random ]; then
35			feed_dev_random "${entropy_file}"
36		fi
37		;;
38	esac
39
40	# XXX temporary until we can get the entropy
41	# harvesting rate up
42	# Entropy below is not great,
43	# but better than nothing.
44	( ps -fauxww; sysctl -a; date; df -ib; dmesg; ps -fauxww; ) \
45	    2>&1 | dd of=/dev/random bs=8k 2>/dev/null
46	cat /bin/ls | dd of=/dev/random bs=8k 2>/dev/null
47}
48
49load_rc_config random
50run_rc_command "$1"
51