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