12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #!/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
|