/etc/init.d/urandom is in initscripts 2.88dsf-13.10ubuntu11.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | #! /bin/sh
### BEGIN INIT INFO
# Provides: urandom
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: S
# Default-Stop: 0 6
# Short-Description: Save and restore random seed between restarts.
# Description: This script saves the random seed between restarts.
# It is called from the boot, halt and reboot scripts.
### END INIT INFO
[ -c /dev/urandom ] || exit 0
PATH=/sbin:/bin
SAVEDFILE=/var/lib/urandom/random-seed
POOLSIZE=512
[ -f /proc/sys/kernel/random/poolsize ] && POOLSIZE="$(cat /proc/sys/kernel/random/poolsize)"
. /lib/init/vars.sh
. /lib/lsb/init-functions
do_status () {
if [ -f $SAVEDFILE ] ; then
return 0
else
return 4
fi
}
case "$1" in
start|"")
[ "$VERBOSE" = no ] || log_action_begin_msg "Initializing random number generator"
# Load and then save $POOLSIZE bytes,
# which is the size of the entropy pool
if [ -f "$SAVEDFILE" ]
then
# Handle locally increased pool size
set -- $(LC_ALL=C ls -l "$SAVEDFILE")
SAVEDSIZE="$5"
if [ "$SAVEDSIZE" -gt "$POOLSIZE" ]
then
[ -w /proc/sys/kernel/random/poolsize ] && echo $POOLSIZE > /proc/sys/kernel/random/poolsize
POOLSIZE=$SAVEDSIZE
fi
cat "$SAVEDFILE" >/dev/urandom
fi
rm -f $SAVEDFILE
# Hm, why is the saved pool re-created at boot? [pere 2009-09-03]
umask 077
dd if=/dev/urandom of=$SAVEDFILE bs=$POOLSIZE count=1 >/dev/null 2>&1
ES=$?
umask 022
[ "$VERBOSE" = no ] || log_action_end_msg $ES
;;
stop)
# Carry a random seed from shut-down to start-up;
# see documentation in linux/drivers/char/random.c
[ "$VERBOSE" = no ] || log_action_begin_msg "Saving random seed"
umask 077
dd if=/dev/urandom of=$SAVEDFILE bs=$POOLSIZE count=1 >/dev/null 2>&1
ES=$?
[ "$VERBOSE" = no ] || log_action_end_msg $ES
;;
status)
do_status
exit $?
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
*)
echo "Usage: urandom start|stop" >&2
exit 3
;;
esac
:
|