From: Michael Tremer Date: Sat, 1 Feb 2014 15:46:22 +0000 (+0100) Subject: rngd: Mix-in RDRAND and reload for HWRNGs added at runtime. X-Git-Url: http://git.ipfire.org/?p=people%2Fteissler%2Fipfire-2.x.git;a=commitdiff_plain;h=2af817938546f4994967a171cc35ff3460ebdfef rngd: Mix-in RDRAND and reload for HWRNGs added at runtime. --- diff --git a/config/rootfiles/common/udev b/config/rootfiles/common/udev index 3b9979b2e..bc1cdaa1f 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 000000000..a93979009 --- /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 d0349936a..fdf8bf296 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 cc1c10d7c..22437fdc4 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