From 2af817938546f4994967a171cc35ff3460ebdfef Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 1 Feb 2014 16:46:22 +0100 Subject: [PATCH] rngd: Mix-in RDRAND and reload for HWRNGs added at runtime. --- config/rootfiles/common/udev | 1 + config/udev/90-hwrng.rules | 1 + lfs/udev | 4 ++++ src/initscripts/init.d/rngd | 18 +++++++++++++++--- 4 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 config/udev/90-hwrng.rules diff --git a/config/rootfiles/common/udev b/config/rootfiles/common/udev index 3b9979b2e8..bc1cdaa1ff 100644 --- a/config/rootfiles/common/udev +++ b/config/rootfiles/common/udev @@ -51,6 +51,7 @@ lib/udev #lib/udev/rules.d/78-sound-card.rules #lib/udev/rules.d/80-drivers.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/99-codel.rules #lib/udev/scsi_id diff --git a/config/udev/90-hwrng.rules b/config/udev/90-hwrng.rules new file mode 100644 index 0000000000..a939790091 --- /dev/null +++ b/config/udev/90-hwrng.rules @@ -0,0 +1 @@ +ACTION=="add|remove", KERNEL=="hw_random", RUN+="/etc/rc.d/init.d/rngd udev-event" diff --git a/lfs/udev b/lfs/udev index d0349936a1..fdf8bf2968 100644 --- a/lfs/udev +++ b/lfs/udev @@ -108,6 +108,10 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) install -v -m 644 $(DIR_SRC)/config/udev/25-alsa.rules \ /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 -v -m 644 $(DIR_SRC)/config/udev/99-codel.rules \ /lib/udev/rules.d diff --git a/src/initscripts/init.d/rngd b/src/initscripts/init.d/rngd index cc1c10d7cc..22437fdc4e 100644 --- a/src/initscripts/init.d/rngd +++ b/src/initscripts/init.d/rngd @@ -11,16 +11,24 @@ . /etc/sysconfig/rc . ${rc_functions} +function has_rdrand() { + grep -q "rdrand" /proc/cpuinfo +} + +function has_hwrng() { + [ -e "/dev/hwrng" ] +} + case "${1}" in start) - if [ ! -e "/dev/hwrng" ]; then - boot_mesg "No Hardware Random Number Generator found..." ${WARNING} + if ! has_hwrng && ! has_rdrand; then + boot_mesg "No Hardware Random Number Generator found..." echo_warning exit 0 fi boot_mesg "Starting Random Number Generator Daemon..." - loadproc /usr/sbin/rngd + loadproc /usr/sbin/rngd --no-tpm=1 ;; stop) @@ -38,6 +46,10 @@ case "${1}" in statusproc /usr/sbin/rngd ;; + udev-event) + $0 restart &>/dev/null + ;; + *) echo "Usage: ${0} {start|stop|restart|status}" exit 1 -- 2.39.5