Você pode tentar escrever um trabalho do Upstart usando instâncias (o arquivo do dispositivo seria a instância) e, em seguida, outro trabalho que inicia todas as instâncias que você deseja na inicialização.
Seria mais fácil para você se você fizesse os pidfiles com base no nome do dispositivo, então seria algo como "rngd-instance":
stop on stopping rng-tools or runlevel [016]
instance $DEVICE
usage "DEVICE=full path to rng device"
pre-start script
test -c $DEVICE || { echo "Not a device: $DEVICE"; exit 1; }
mkdir -p $(dirname /var/run/rngd/$DEVICE)
end script
exec rngd --foreground --pidfile=/var/run/rngd/$DEVICE -r $DEVICE
então outro trabalho, rng-tools, assim:
start on runlevel [2345]
stop on runlevel [016]
env DEVLIST="/dev/hwrng0 /dev/hwrng1"
pre-start script
for d in $DEVLIST; do
initctl start rngd-instance DEVICE=$d || failed="${failed}$d "
done
test -n "$failed" || { echo "Failed to start instances: $failed"; exit 1; }
end script
Você coloca esses arquivos como /etc/init/rngd-instance.conf e /etc/init/rng-tools.conf.