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