rngd: Mix-in RDRAND and reload for HWRNGs added at runtime.

This commit is contained in:
Michael Tremer
2014-02-01 16:46:22 +01:00
parent 167e6ec7a8
commit 2af8179385
4 changed files with 21 additions and 3 deletions

View File

@@ -51,6 +51,7 @@ lib/udev
#lib/udev/rules.d/78-sound-card.rules #lib/udev/rules.d/78-sound-card.rules
#lib/udev/rules.d/80-drivers.rules #lib/udev/rules.d/80-drivers.rules
#lib/udev/rules.d/80-net-name-slot.rules #lib/udev/rules.d/80-net-name-slot.rules
#lib/udev/rules.d/90-hwrng.rules
#lib/udev/rules.d/95-udev-late.rules #lib/udev/rules.d/95-udev-late.rules
#lib/udev/rules.d/99-codel.rules #lib/udev/rules.d/99-codel.rules
#lib/udev/scsi_id #lib/udev/scsi_id

View File

@@ -0,0 +1 @@
ACTION=="add|remove", KERNEL=="hw_random", RUN+="/etc/rc.d/init.d/rngd udev-event"

View File

@@ -108,6 +108,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
install -v -m 644 $(DIR_SRC)/config/udev/25-alsa.rules \ install -v -m 644 $(DIR_SRC)/config/udev/25-alsa.rules \
/lib/udev/rules.d /lib/udev/rules.d
# Install hwrng rules.
install -v -m 644 $(DIR_SRC)/config/udev/90-hwrng.rules \
/lib/udev/rules.d
# Install codel rules. # Install codel rules.
install -v -m 644 $(DIR_SRC)/config/udev/99-codel.rules \ install -v -m 644 $(DIR_SRC)/config/udev/99-codel.rules \
/lib/udev/rules.d /lib/udev/rules.d

View File

@@ -11,16 +11,24 @@
. /etc/sysconfig/rc . /etc/sysconfig/rc
. ${rc_functions} . ${rc_functions}
function has_rdrand() {
grep -q "rdrand" /proc/cpuinfo
}
function has_hwrng() {
[ -e "/dev/hwrng" ]
}
case "${1}" in case "${1}" in
start) start)
if [ ! -e "/dev/hwrng" ]; then if ! has_hwrng && ! has_rdrand; then
boot_mesg "No Hardware Random Number Generator found..." ${WARNING} boot_mesg "No Hardware Random Number Generator found..."
echo_warning echo_warning
exit 0 exit 0
fi fi
boot_mesg "Starting Random Number Generator Daemon..." boot_mesg "Starting Random Number Generator Daemon..."
loadproc /usr/sbin/rngd loadproc /usr/sbin/rngd --no-tpm=1
;; ;;
stop) stop)
@@ -38,6 +46,10 @@ case "${1}" in
statusproc /usr/sbin/rngd statusproc /usr/sbin/rngd
;; ;;
udev-event)
$0 restart &>/dev/null
;;
*) *)
echo "Usage: ${0} {start|stop|restart|status}" echo "Usage: ${0} {start|stop|restart|status}"
exit 1 exit 1