xref: /dragonfly/etc/rc.d/initrandom (revision 9c600e7d)
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.1 2003/07/24 06:35:37 dillon Exp $
5#
6
7# PROVIDE: initrandom
8# REQUIRE: initdiskless
9# BEFORE: disks
10# KEYWORD: DragonFly FreeBSD
11
12. /etc/rc.subr
13
14name="initrandom"
15start_cmd="initrandom_start"
16stop_cmd=":"
17
18feed_dev_random()
19{
20	if [ -f "${1}" -a -r "${1}" -a -s "${1}" ]; then
21		cat "${1}" | dd of=/dev/random bs=8k 2>/dev/null
22	fi
23}
24
25initrandom_start()
26{
27	echo -n 'Entropy harvesting:'
28
29	if checkyesno harvest_interrupt; then
30		if [ -w /dev/random ]; then
31			${SYSCTL_W} kern.random.sys.harvest.interrupt=1 >/dev/null
32			echo -n ' interrupts'
33		fi
34	fi
35
36	if checkyesno harvest_ethernet; then
37		if [ -w /dev/random ]; then
38			${SYSCTL_W} kern.random.sys.harvest.ethernet=1 >/dev/null
39			echo -n ' ethernet'
40		fi
41	fi
42
43	if checkyesno harvest_p_to_p; then
44		if [ -w /dev/random ]; then
45		${SYSCTL_W} kern.random.sys.harvest.point_to_point=1 >/dev/null
46			echo -n ' point_to_point'
47		fi
48	fi
49
50	echo '.'
51
52	# First pass at reseeding /dev/random.
53	#
54	case ${entropy_file} in
55	[Nn][Oo] | '')
56		;;
57	*)
58		if [ -w /dev/random ]; then
59			feed_dev_random "${entropy_file}"
60		fi
61		;;
62	esac
63
64	# XXX temporary until we can get the entropy
65	# harvesting rate up
66	# Entropy below is not great,
67	# but better than nothing.
68	( ps -fauxww; sysctl -a; date; df -ib; dmesg; ps -fauxww; ) \
69	    | dd of=/dev/random bs=8k 2>/dev/null
70	cat /bin/ls | dd of=/dev/random bs=8k 2>/dev/null
71}
72
73load_rc_config random
74run_rc_command "$1"
75