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.4 2004/01/26 17:21:15 rob Exp $ 5# 6 7# PROVIDE: initrandom 8# REQUIRE: initdiskless 9# BEFORE: disks 10# KEYWORD: DragonFly 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 '.' 28 29 # First pass at reseeding /dev/random. 30 # 31 case ${entropy_file} in 32 [Nn][Oo] | '') 33 ;; 34 *) 35 if [ -w /dev/random ]; then 36 feed_dev_random "${entropy_file}" 37 fi 38 ;; 39 esac 40 41 # XXX temporary until we can get the entropy 42 # harvesting rate up 43 # Entropy below is not great, 44 # but better than nothing. 45 ( ps -fauxww; sysctl -a; date; df -ib; dmesg; ps -fauxww; ) \ 46 2>&1 | dd of=/dev/random bs=8k 2>/dev/null 47 cat /bin/ls | dd of=/dev/random bs=8k 2>/dev/null 48} 49 50load_rc_config random 51run_rc_command "$1" 52