]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - etc/rc.d/initrandom
This commit was generated by cvs2svn to compensate for changes in r172683,
[FreeBSD/FreeBSD.git] / etc / rc.d / initrandom
1 #!/bin/sh
2 #
3 # $FreeBSD$
4 #
5
6 # PROVIDE: initrandom
7 # BEFORE: disks
8 # KEYWORD: nojail
9
10 . /etc/rc.subr
11
12 name="initrandom"
13 start_cmd="initrandom_start"
14 stop_cmd=":"
15
16 feed_dev_random()
17 {
18         if [ -f "${1}" -a -r "${1}" -a -s "${1}" ]; then
19                 cat "${1}" | dd of=/dev/random bs=8k 2>/dev/null
20         fi
21 }
22
23 initrandom_start()
24 {
25         soft_random_generator=`sysctl kern.random 2>/dev/null`
26
27         echo -n 'Entropy harvesting:'
28
29         if [ \! -z "${soft_random_generator}" ] ; then
30
31                 if checkyesno harvest_interrupt; then
32                         if [ -w /dev/random ]; then
33                                 ${SYSCTL_W} kern.random.sys.harvest.interrupt=1 >/dev/null
34                                 echo -n ' interrupts'
35                         fi
36                 fi
37
38                 if checkyesno harvest_ethernet; then
39                         if [ -w /dev/random ]; then
40                                 ${SYSCTL_W} kern.random.sys.harvest.ethernet=1 >/dev/null
41                                 echo -n ' ethernet'
42                         fi
43                 fi
44
45                 if checkyesno harvest_p_to_p; then
46                         if [ -w /dev/random ]; then
47                         ${SYSCTL_W} kern.random.sys.harvest.point_to_point=1 >/dev/null
48                                 echo -n ' point_to_point'
49                         fi
50                 fi
51
52                 # XXX temporary until we can improve the entropy
53                 # harvesting rate.
54                 # Entropy below is not great, but better than nothing.
55                 # This unblocks the generator at startup
56                 ( ps -fauxww; sysctl -a; date; df -ib; dmesg; ps -fauxww ) \
57                     | dd of=/dev/random bs=8k 2>/dev/null
58                 cat /bin/ls | dd of=/dev/random bs=8k 2>/dev/null
59
60                 # First pass at reseeding /dev/random.
61                 #
62                 case ${entropy_file} in
63                 [Nn][Oo] | '')
64                         ;;
65                 *)
66                         if [ -w /dev/random ]; then
67                                 feed_dev_random "${entropy_file}"
68                         fi
69                         ;;
70                 esac
71
72                 echo -n ' kickstart'
73         fi
74
75         echo '.'
76 }
77
78 load_rc_config random
79 run_rc_command "$1"