rngd - initスクリプトの複数のインスタンス

rngd - initスクリプトの複数のインスタンス

Ubuntu> = 12.04でinitスクリプトを使用して複数のインスタンスでrngdを実行する最も正確で美しい方法は何ですか?現在、1つのランダムなソースしか許可されていないため、複数のインスタンスが必要です。

rngdつまり、「service」コマンドで制御したい。

手動で起動すると、rngd必要な方法で動作し、単一のソースよりも2倍速い速度でランダム性を収集します。

$ rngd --pidfile=/var/run/rngd0.pid -r /dev/hwrng0  
$ rngd --pidfile=/var/run/rngd1.pid -r /dev/hwrng1

この問題を解決する方法についてのアイデアはありますか?

編集する

最終バージョンは次のとおりです。ありがとうございます。@cameronnimo:/etc/init/rng-tools.conf:

description     "rng-tools daemon"

start on runlevel [2345]
stop on runlevel [016]

env DEVLIST="$(find /dev/hwrng* -follow -type c)"

pre-start script
  for device in $DEVLIST; do
    start rngd-instance DEVICE=$device || failed="${failed}$device "
  done
  test -n "$failed" || { echo "Failed to start instances: $failed"; exit 1; }
end script

/etc/init/rngd-instance.conf:

stop on stopping rng-tools or runlevel [016]

description "rngd instance"
usage "DEVICE=full path to rng device"

instance $DEVICE

pre-start script
  test -c "$DEVICE" || { echo "Not a device: $DEVICE"; exit 1; }
  mkdir -p /var/run/rngd
end script

exec rngd --foreground --pidfile=/var/run/rngd/$(basename "$DEVICE") -r $DEVICE

/etc/init.d/rng-tools:

$ cd /etc/init.d/
$ sudo ln -sf /lib/init/upstart-job rng-tools

ベストアンサー1

インスタンス(デバイスファイルはインスタンスです)を使用してUpstartジョブを作成し、起動時に必要なすべてのインスタンスを起動する別のジョブを作成できます。

http://upstart.ubuntu.com/cookbook/#instance

デバイス名に基づいてpidfileを作成すると簡単になりますので、「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

その後、次のようにrng-toolsという別のタスクがあります。

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

これらのファイルを /etc/init/rngd-instance.conf および /etc/init/rng-tools.conf として配置します。

おすすめ記事