74 lines
1.4 KiB
Plaintext
74 lines
1.4 KiB
Plaintext
|
#!/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"
|