#!/bin/sh /etc/rc.common START=99 EXTRA_COMMANDS="save" _log() { logger -t urandom_seed "$1" } _save() { touch $1.tmp || { _log "touch $1 failed"; return; } chown root:root $1.tmp || { _log "chown $1 failed"; return; } chmod 600 $1.tmp || { _log "chmod $1 failed"; return; } getrandom 512 > $1.tmp || { _log "getrandom failed"; return; } mv $1.tmp $1 || { _log "mv $1 failed"; return; } } save() { SEED="$(uci -q get system.@system[0].urandom_seed)" [ "${SEED:0:1}" == "/" ] && _save "$SEED" && _log "Seed saved ($SEED)" SEED=/etc/urandom.seed [ ! -f $SEED ] && _save "$SEED" && _log "Seed saved ($SEED)" } boot() { save }