FreeBSD-5.3/etc/rc.d/preseedrandom

#!/bin/sh
#
# $FreeBSD: src/etc/rc.d/preseedrandom,v 1.4.2.1 2004/10/10 09:50:54 mtm Exp $
#

# PROVIDE: preseedrandom
# KEYWORD: nojail

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
}

soft_random_generator=`sysctl kern.random 2>/dev/null`

if [ -n "${soft_random_generator}" ] ; then

	echo -n 'Pre-seeding PRNG:'

	# XXX temporary until we can improve the entropy
	# harvesting rate.
	# Entropy below is not great, but better than nothing.
	# This unblocks the generator at startup
	( 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

	# First pass at reseeding /dev/random.
	#
	if [ -w /dev/random ]; then
		feed_dev_random "/entropy"
	fi

	echo -n ' kickstart'

	echo '.'
fi