Ubuntu >=12.04에서 init 스크립트를 사용하여 여러 인스턴스에서 rngd를 실행하는 가장 정확하고 아름다운 방법은 무엇입니까? 현재는 하나의 임의 소스만 허용되므로 여러 인스턴스가 필요합니다.
rngd
즉, "service" 명령으로 제어 하고 싶다 .
수동으로 시작하면 rngd
원하는 방식으로 작동하여 단일 소스보다 두 배 빠른 속도로 임의성을 수집합니다.
$ 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로 배치합니다.