initrandom revision 143048
1#!/bin/sh 2# 3# $FreeBSD: head/etc/rc.d/initrandom 143048 2005-03-02 19:03:08Z brooks $ 4# 5 6# PROVIDE: initrandom 7# REQUIRE: rcconf 8# BEFORE: disks 9# KEYWORD: nojail 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 soft_random_generator=`sysctl kern.random 2>/dev/null` 27 28 echo -n 'Entropy harvesting:' 29 30 if [ \! -z "${soft_random_generator}" ] ; then 31 32 if checkyesno harvest_interrupt; then 33 if [ -w /dev/random ]; then 34 ${SYSCTL_W} kern.random.sys.harvest.interrupt=1 >/dev/null 35 echo -n ' interrupts' 36 fi 37 fi 38 39 if checkyesno harvest_ethernet; then 40 if [ -w /dev/random ]; then 41 ${SYSCTL_W} kern.random.sys.harvest.ethernet=1 >/dev/null 42 echo -n ' ethernet' 43 fi 44 fi 45 46 if checkyesno harvest_p_to_p; then 47 if [ -w /dev/random ]; then 48 ${SYSCTL_W} kern.random.sys.harvest.point_to_point=1 >/dev/null 49 echo -n ' point_to_point' 50 fi 51 fi 52 53 # XXX temporary until we can improve the entropy 54 # harvesting rate. 55 # Entropy below is not great, but better than nothing. 56 # This unblocks the generator at startup 57 ( ps -fauxww; sysctl -a; date; df -ib; dmesg; ps -fauxww; ) \ 58 | dd of=/dev/random bs=8k 2>/dev/null 59 cat /bin/ls | dd of=/dev/random bs=8k 2>/dev/null 60 61 # First pass at reseeding /dev/random. 62 # 63 case ${entropy_file} in 64 [Nn][Oo] | '') 65 ;; 66 *) 67 if [ -w /dev/random ]; then 68 feed_dev_random "${entropy_file}" 69 fi 70 ;; 71 esac 72 73 echo -n ' kickstart' 74 fi 75 76 echo '.' 77} 78 79load_rc_config random 80run_rc_command "$1" 81