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