3 # random Script to snapshot random state and reload it at boot time.
5 # chkconfig: 12345 20 80
7 # description: Saves and restores system entropy pool for higher quality \
8 # random number generation.
11 # Source function library.
12 . /etc/rc.d/init.d/functions
14 # do nothing in vserver
15 if is_yes "$VSERVER"; then
19 upstart_controlled start stop
21 random_seed=/var/run/random-seed
23 poolfile=/proc/sys/kernel/random/poolsize
24 [ -r $poolfile ] && bytes="$(cat $poolfile)" || bytes=512
27 # Check if the service is already running?
28 if [ -f /var/lock/subsys/random ]; then
32 emit starting JOB=random
33 show "Initializing random number generator"
35 # Carry a random seed from start-up to start-up
36 if [ -f $random_seed ]; then
37 cat $random_seed >/dev/urandom
41 chmod 600 $random_seed
42 dd if=/dev/urandom of=$random_seed count=1 bs=$bytes 2>/dev/null
43 touch /var/lock/subsys/random
46 emit --nowait started JOB=random
50 if [ ! -f /var/lock/subsys/random ]; then
54 # Carry a random seed from shut-down to start-up
55 emit stopping JOB=random
56 show "Saving random seed"
59 chmod 600 $random_seed
60 dd if=/dev/urandom of=$random_seed count=1 bs=$bytes 2>/dev/null
62 rm -f /var/lock/subsys/random >/dev/null 2>&1
65 emit --no-wait stopped JOB=random
69 entropy_avail="$(cat /proc/sys/kernel/random/entropy_avail)"
70 if [ "$entropy_avail" -eq 0 -o ! -c /dev/random ] ; then
71 nls "The random data source is missing"
74 nls "%d bytes of entropy available" $entropy_avail
78 # See how we were called.
90 msg_usage "$0 {start|stop|status}"