]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - etc/rc.d/initrandom
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / etc / rc.d / initrandom
1 #!/bin/sh
2 #
3 # $FreeBSD$
4 #
5
6 # PROVIDE: initrandom
7 # REQUIRE: dumpon ddb
8 # BEFORE: disks
9 # KEYWORD: nojail
10
11 . /etc/rc.subr
12
13 name="initrandom"
14 start_cmd="initrandom_start"
15 stop_cmd=":"
16
17 feed_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
24 initrandom_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 [ -w /dev/random ]; then
33                         if checkyesno harvest_interrupt; then
34                                 ${SYSCTL} kern.random.sys.harvest.interrupt=1 >/dev/null
35                                 echo -n ' interrupts'
36                         else
37                                 ${SYSCTL} kern.random.sys.harvest.interrupt=0 >/dev/null
38                         fi
39
40                         if checkyesno harvest_ethernet; then
41                                 ${SYSCTL} kern.random.sys.harvest.ethernet=1 >/dev/null
42                                 echo -n ' ethernet'
43                         else
44                                 ${SYSCTL} kern.random.sys.harvest.ethernet=0 >/dev/null
45                         fi
46
47                         if checkyesno harvest_p_to_p; then
48                                 ${SYSCTL} kern.random.sys.harvest.point_to_point=1 >/dev/null
49                                 echo -n ' point_to_point'
50                         else
51                                 ${SYSCTL} kern.random.sys.harvest.point_to_point=0 >/dev/null
52                         fi
53                 fi
54
55                 # XXX temporary until we can improve the entropy
56                 # harvesting rate.
57                 # Entropy below is not great, but better than nothing.
58                 # This unblocks the generator at startup
59                 ( ps -fauxww; sysctl -a; date; df -ib; dmesg; ps -fauxww ) \
60                     | dd of=/dev/random bs=8k 2>/dev/null
61                 cat /bin/ls | dd of=/dev/random bs=8k 2>/dev/null
62
63                 # First pass at reseeding /dev/random.
64                 #
65                 case ${entropy_file} in
66                 [Nn][Oo] | '')
67                         ;;
68                 *)
69                         if [ -w /dev/random ]; then
70                                 feed_dev_random "${entropy_file}"
71                         fi
72                         ;;
73                 esac
74
75                 echo -n ' kickstart'
76         fi
77
78         echo '.'
79 }
80
81 load_rc_config random
82 run_rc_command "$1"