# $Id$
#
-SUBDIRS = src ppp isapnp sysconfig rc.d doc man po
+SUBDIRS = src ppp isapnp sysconfig rc.d doc man po init
sysconf_DATA = \
adjtime \
downdir='${sysconfigdir}/interfaces/down.d'
networkscriptsdir='${sysconfigdir}/network-scripts'
rcdir='${sysconfdir}/rc.d'
+initdir='${sysconfdir}/init'
docdir="${prefix}/doc/$PACKAGE-$VERSION"
dnl i18n support
AC_SUBST(updir)
AC_SUBST(downdir)
AC_SUBST(rcdir)
+AC_SUBST(initdir)
AC_SUBST(docdir)
AC_SUBST(GLIBDIR)
AC_SUBST(GLIBNAME)
sysconfig/interfaces/down.d/tnl/Makefile \
rc.d/Makefile rc.d/init.d/Makefile \
po/Makefile \
+ init/Makefile \
])
AC_OUTPUT
--- /dev/null
+@SET_MAKE@
+
+initdir = @initdir@
+
+init_DATA = random.conf
+
+EXTRA_DIST = $(init_DATA)
--- /dev/null
+description "Save random entropy on shutdown and restore it at boot time"
+
+start on pld.sysinit_done
+stop on pld.shutdown_started
+
+env SEED_FILE=/var/run/random-seed
+
+pre-start script
+ poolfile=/proc/sys/kernel/random/poolsize
+ [ -r $poolfile ] && bytes="$(cat $poolfile)" || bytes=512
+ if [ -f $SEED_FILE ]; then
+ cat $SEED_FILE >/dev/urandom
+ else
+ touch $SEED_FILE
+ fi
+ chmod 600 $SEED_FILE
+ dd if=/dev/urandom of=$SEED_FILE count=1 bs=$bytes 2>/dev/null
+end script
+
+post-stop script
+ poolfile=/proc/sys/kernel/random/poolsize
+ [ -r $poolfile ] && bytes="$(cat $poolfile)" || bytes=512
+ touch $SEED_FILE
+ chmod 600 $SEED_FILE
+ dd if=/dev/urandom of=$SEED_FILE count=1 bs=$bytes 2>/dev/null
+end script
+
# Source function library.
. /etc/rc.d/init.d/functions
+upstart_controlled start stop
+
random_seed=/var/run/random-seed
poolfile=/proc/sys/kernel/random/poolsize
[ -r $poolfile ] && bytes="$(cat $poolfile)" || bytes=512
+
# See how we were called.
case "$1" in
start)
# Check if the service is already running?
if [ ! -f /var/lock/subsys/random ]; then
+ emit starting JOB=random
show "Initializing random number generator"
busy
# Carry a random seed from start-up to start-up
touch /var/lock/subsys/random
deltext
ok
+ emit started JOB=random
fi
;;
stop)
if [ -f /var/lock/subsys/random ]; then
# Carry a random seed from shut-down to start-up
+ emit stopping JOB=random
show "Saving random seed"
busy
touch $random_seed
rm -f /var/lock/subsys/random
deltext
ok
+ emit stopped JOB=random
fi
;;
status)