named: conditionally copy files to chroot (rc-script)
[dragonfly.git] / etc / rc.d / initrandom
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.6 2006/07/10 22:19:14 dillon Exp $
5 #
6
7 # PROVIDE: initrandom
8 # REQUIRE: initdiskless
9 # BEFORE: disks
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                 sysctl kern.seedenable=1 >/dev/null
21                 cat "${1}" | dd of=/dev/random bs=8k 2>/dev/null
22                 sysctl kern.seedenable=0 >/dev/null
23         fi
24 }
25
26 initrandom_start()
27 {
28         # First pass at reseeding /dev/random.
29         #
30         case ${entropy_file} in
31         [Nn][Oo] | '')
32                 ;;
33         *)
34                 if [ -w /dev/random ]; then
35                         feed_dev_random "${entropy_file}"
36                 fi
37                 ;;
38         esac
39
40         # Mix in more junk.  At the very least this will make seeding a
41         # bit more machine specific.  The sysctl -a will also catch the
42         # TSC, 8254, and a few other things that tend to be somewhat more
43         # random (even from a CD boot) so it isn't all that bad.
44         #
45         sysctl kern.seedenable=1 >/dev/null
46         ( ps -fauxww; sysctl -a; date; df -ib; dmesg; ps -fauxww; ) \
47             2>&1 | dd of=/dev/random bs=8k 2>/dev/null
48         cat /bin/ls | dd of=/dev/random bs=8k 2>/dev/null
49         sysctl kern.seedenable=0 >/dev/null
50 }
51
52 load_rc_config random
53 run_rc_command "$1"