summaryrefslogtreecommitdiff
path: root/meta/recipes-core/initscripts/initscripts-1.0/urandom
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-core/initscripts/initscripts-1.0/urandom')
-rwxr-xr-xmeta/recipes-core/initscripts/initscripts-1.0/urandom46
1 files changed, 46 insertions, 0 deletions
diff --git a/meta/recipes-core/initscripts/initscripts-1.0/urandom b/meta/recipes-core/initscripts/initscripts-1.0/urandom
new file mode 100755
index 0000000000..b6d807cf3b
--- /dev/null
+++ b/meta/recipes-core/initscripts/initscripts-1.0/urandom
@@ -0,0 +1,46 @@
+#! /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
+. /etc/default/rcS
+
+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
+ if test -f /var/lib/urandom/random-seed
+ then
+ cat /var/lib/urandom/random-seed >/dev/urandom
+ fi
+ rm -f /var/lib/urandom/random-seed
+ umask 077
+ dd if=/dev/urandom of=/var/lib/urandom/random-seed 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=/var/lib/urandom/random-seed count=1 \
+ >/dev/null 2>&1 || echo "urandom stop: failed."
+ ;;
+ *)
+ echo "Usage: urandom {start|stop}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0