diff options
author | Roy Marples <roy@marples.name> | 2008-03-02 21:13:21 +0000 |
---|---|---|
committer | Roy Marples <roy@marples.name> | 2008-03-02 21:13:21 +0000 |
commit | a12dbdc6c93a7d63591610378e3e570b7c7d2143 (patch) | |
tree | 22cd968f4bb32bedf82e091c9ffee798d247c51e /init.d/urandom.in | |
parent | 7c092fbc7904be18510eed08c72cbad974db8adc (diff) | |
download | openrc-a12dbdc6c93a7d63591610378e3e570b7c7d2143.tar.gz openrc-a12dbdc6c93a7d63591610378e3e570b7c7d2143.tar.bz2 openrc-a12dbdc6c93a7d63591610378e3e570b7c7d2143.tar.xz |
Don't check for root in prefix.
Diffstat (limited to 'init.d/urandom.in')
-rw-r--r-- | init.d/urandom.in | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/init.d/urandom.in b/init.d/urandom.in new file mode 100644 index 0000000..6e90100 --- /dev/null +++ b/init.d/urandom.in @@ -0,0 +1,46 @@ +#!/sbin/runscript +# Copyright 2007-2008 Roy Marples <roy@marples.name> +# All rights reserved. Released under the 2-clause BSD license. + +urandom_seed=${urandom_seed:-${URANDOM_SEED:-/var/run/random-seed}} + +description="Initializes the random number generator." + +depend() +{ + need localmount + keyword nojail noprefix +} + +save_seed() +{ + local psz=1 + + if [ -e /proc/sys/kernel/random/poolsize ]; then + psz=$(($(cat /proc/sys/kernel/random/poolsize) / 4096)) + fi + + ( # sub shell to prevent umask pollution + umask 077 + dd if=/dev/urandom of="${urandom_seed}" count=${psz} 2>/dev/null + ) +} + +start() +{ + [ -c /dev/urandom ] || return + if [ -f "${urandom_seed}" ]; then + ebegin "Initializing random number generator" + cat "${urandom_seed}" > /dev/urandom + eend $? "Error initializing random number generator" + fi + rm -f "${urandom_seed}" && save_seed + return 0 +} + +stop() +{ + ebegin "Saving random seed" + save_seed + eend $? "Failed to save random seed" +} |