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.5 2005/11/19 21:47:32 swildner Exp $ 5# 6 7# PROVIDE: initrandom 8# REQUIRE: initdiskless 9# BEFORE: disks 10 11. /etc/rc.subr 12 13name="initrandom" 14start_cmd="initrandom_start" 15stop_cmd=":" 16 17feed_dev_random() 18{ 19 if [ -f "${1}" -a -r "${1}" -a -s "${1}" ]; then 20 cat "${1}" | dd of=/dev/random bs=8k 2>/dev/null 21 fi 22} 23 24initrandom_start() 25{ 26 echo '.' 27 28 # First pass at reseeding /dev/random. 29 # 30 case ${entropy_file} in 31 [Nn][Oo] | '') 32 ;; 33 *) 34 if [ -w /dev/random ]; then 35 feed_dev_random "${entropy_file}" 36 fi 37 ;; 38 esac 39 40 # XXX temporary until we can get the entropy 41 # harvesting rate up 42 # Entropy below is not great, 43 # but better than nothing. 44 ( ps -fauxww; sysctl -a; date; df -ib; dmesg; ps -fauxww; ) \ 45 2>&1 | dd of=/dev/random bs=8k 2>/dev/null 46 cat /bin/ls | dd of=/dev/random bs=8k 2>/dev/null 47} 48 49load_rc_config random 50run_rc_command "$1" 51