#!/bin/sh ### BEGIN INIT INFO # Provides: urandom # Required-Start: $local_fs mountvirtfs # Required-Stop: $local_fs # Default-Start: S # Default-Stop: 0 6 # Short-Description: Save and restore the random seed # Description: Save the random seed on shutdown and restore it on boot, # to ensure that the seed isn't predicable on startup # (because the boot process is predictable) ### END INIT INFO test -c /dev/urandom || exit 0 RANDOM_SEED_FILE=/var/lib/urandom/random-seed . /etc/default/rcS [ -f /etc/default/urandom ] && . /etc/default/urandom case "$1" in start|"") test "$VERBOSE" != no && echo "Initializing random number generator..." # Load and then save 512 bytes, which is the size of the entropy # pool. Also load the current date, in case the seed file is # empty. ( date +%s.%N; [ -f "$RANDOM_SEED_FILE" ] && cat "$RANDOM_SEED_FILE" ) \ >/dev/urandom rm -f "$RANDOM_SEED_FILE" umask 077 dd if=/dev/urandom of=$RANDOM_SEED_FILE count=1 \ >/dev/null 2>&1 || echo "urandom start: failed." umask 022 ;; stop) # Carry a random seed from shut-down to start-up; # see documentation in linux/drivers/char/random.c test "$VERBOSE" != no && echo "Saving random seed..." umask 077 dd if=/dev/urandom of=$RANDOM_SEED_FILE count=1 \ >/dev/null 2>&1 || echo "urandom stop: failed." ;; *) echo "Usage: urandom {start|stop}" >&2 exit 1 ;; esac exit 0