rng-tools allows /dev/random depletion
Clash Royale CLAN TAG#URR8PPP
up vote
0
down vote
favorite
I'm trying to understand what is going on with rng-tools
and systemd
on a Beaglebone Black dev-board that's leading to entropy depletion in /dev/random
. I have about 8 dev-boards in a similar configuration and only the Beaglebone has the problem.
The Beaglebone runs a Debian derivative and has a hardware rng. The OMAP rng sustains reads from /dev/hwrand
. However, after draining /dev/random
the device never recovers. For example, it takes 646 seconds to read 10 bytes from /dev/random
.
When I look at systemd
I don't see a service enabled for the rng:
$ systemctl list-unit-files | grep -i -E 'rng|rand'
rng-tools.service generated
systemd-random-seed.service static
urandom.service static
I try to enable it, and no error is returned:
# systemctl enable rng-tools.service
rng-tools.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable rng-tools
But the service fails to enable:
$ systemctl list-unit-files | grep -i -E 'rng|rand'
rng-tools.service generated
systemd-random-seed.service static
urandom.service static
And:
$ systemctl status rng-tools
â rng-tools.service
Loaded: loaded (/etc/init.d/rng-tools; generated; vendor preset: enabled)
Active: failed (Result: exit-code) since Sun 2018-10-14 02:36:05 EDT; 17h ago
Docs: man:systemd-sysv-generator(8)
There is a script in rng-tools
called /etc/init.d/rng-tools
that looks like a service file, but it is not a systemd
service file. I don't see where it is enabled or where it feeds /dev/random
. Debian may have a related bug report at Issue 776597, rng-tools: No systemd .service file. I don't believe the 776597 script is the same script shown below.
How do I fix this issue or troubleshoot it further?
Here are a couple of similar Q&A's. I have not been able to scrape useful information out of them. Part of the issue is the complexity systemd
has introduced. I'm not quite following what is supposed to happen, and the finer points of the objects below /etc/systemd/system
like multi-user.target.wants
.
- Generated systemd unit does not start on boot
- Can start custom systemd service, can't enable it
- Unable to enable systemctl service
The rng-tools
package:
$ apt-file list rng-tools
rng-tools: /etc/default/rng-tools
rng-tools: /etc/init.d/rng-tools
rng-tools: /etc/logcheck/ignore.d.server/rng-tools
rng-tools: /etc/logcheck/violations.ignore.d/rng-tools
rng-tools: /usr/bin/rngtest
rng-tools: /usr/sbin/rngd
rng-tools: /usr/share/doc/rng-tools/README.gz
rng-tools: /usr/share/doc/rng-tools/TODO.Debian
rng-tools: /usr/share/doc/rng-tools/changelog.Debian.gz
rng-tools: /usr/share/doc/rng-tools/changelog.gz
rng-tools: /usr/share/doc/rng-tools/copyright
rng-tools: /usr/share/lintian/overrides/rng-tools
rng-tools: /usr/share/man/man1/rngtest.1.gz
rng-tools: /usr/share/man/man8/rngd.8.gz
The script /etc/init.d/rng-tools
.
$ cat /etc/init.d/rng-tools
#! /bin/sh
#
# rng-tools initscript for the rng-tools package
# Copr. 2003 by Henrique de Moraes Holschuh <hmh@debian.org>
# Copr. 2002 by Viral Shah <viral@debian.org>
#
### BEGIN INIT INFO
# Provides: rng-tools
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
#
#
# $Id: rng-tools.init,v 1.6.2.10 2008-06-10 19:51:37 hmh Exp $
PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/rngd
NAME=rngd
DESC="Hardware RNG entropy gatherer daemon"
PIDFILE=/var/run/rngd.pid
DEVICELIST="hwrng hw_random hwrandom intel_rng i810_rng"
HRNGDEVICE=/dev/hwrng
RNGDOPTIONS=
[ -r /etc/default/rng-tools ] && . /etc/default/rng-tools
test -f $DAEMON || exit 0
set -e
finddevice ()
[ -c "$HRNGDEVICE" ] && return 0
for i in $DEVICELIST ; do
if [ -c "/dev/$i" ] ; then
HRNGDEVICE="/dev/$i"
return 0
fi
if [ -c "/dev/misc/$i" ] ; then
HRNGDEVICE="/dev/misc/$i"
return 0
fi
done
echo "(Hardware RNG device inode not found)"
echo "$0: Cannot find a hardware RNG device to use." >&2
exit 1
START="--start --quiet --pidfile $PIDFILE --startas $DAEMON --name $NAME"
case "$1" in
start)
echo -n "Starting $DESC: "
finddevice
START="$START -- -r $HRNGDEVICE $RNGDOPTIONS"
if start-stop-daemon $START >/dev/null 2>&1 ; then
echo "$NAME."
else
if start-stop-daemon --test $START >/dev/null 2>&1; then
echo "(failed)."
exit 1
else
echo "$DAEMON already running."
exit 0
fi
fi
;;
stop)
echo -n "Stopping $DESC: "
if start-stop-daemon --stop --quiet --pidfile $PIDFILE
--startas $DAEMON --retry 10 --name $NAME
>/dev/null 2>&1 ; then
echo "$NAME."
else
if start-stop-daemon --test $START >/dev/null 2>&1; then
echo "(not running)."
exit 0
else
echo "(failed)."
exit 1
fi
fi
;;
restart|force-reload)
$0 stop
exec $0 start
;;
*)
echo "Usage: $0 restart" 1>&2
exit 1
;;
esac
exit 0
Dmesg's related to the rng:
$ dmesg | grep -i -E 'rand|rng'
[ 4.560639] random: systemd-udevd urandom read with 11 bits of entropy available
[ 11.086922] systemd[1]: Starting Load/Save Random Seed...
[ 15.022431] using random self ethernet address
[ 15.022465] using random host ethernet address
[ 15.027177] using random self ethernet address
[ 15.027195] using random host ethernet address
[ 21.308396] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20
[ 34.690558] random: nonblocking pool is initialized
And systemd dump
for rng-tools:
-> Unit rng-tools.service:
Description: rng-tools.service
Instance: n/a
Unit Load State: loaded
Unit Active State: failed
State Change Timestamp: Sun 2018-10-14 02:36:05 EDT
Inactive Exit Timestamp: Sun 2018-10-14 02:36:04 EDT
Active Enter Timestamp: n/a
Active Exit Timestamp: n/a
Inactive Enter Timestamp: Sun 2018-10-14 02:36:05 EDT
GC Check Good: yes
Need Daemon Reload: no
Transient: no
Slice: system.slice
CGroup: n/a
CGroup realized: no
CGroup mask: 0x0
CGroup members mask: 0x0
Name: rng-tools.service
Documentation: man:systemd-sysv-generator(8)
Fragment Path: /run/systemd/generator.late/rng-tools.service
Source Path: /etc/init.d/rng-tools
Condition Timestamp: Sun 2018-10-14 02:36:04 EDT
Condition Result: yes
Assert Timestamp: Sun 2018-10-14 02:36:04 EDT
Assert Result: yes
Requires: system.slice
Requires: sysinit.target
WantedBy: multi-user.target
WantedBy: graphical.target
Conflicts: shutdown.target
Before: shutdown.target
Before: multi-user.target
Before: graphical.target
After: systemd-journald.socket
After: system.slice
After: remote-fs.target
After: sysinit.target
After: systemd-journald-dev-log.socket
After: basic.target
References: remote-fs.target
References: graphical.target
References: sysinit.target
References: system.slice
References: multi-user.target
References: systemd-journald.socket
References: systemd-journald-dev-log.socket
References: basic.target
References: shutdown.target
ReferencedBy: multi-user.target
ReferencedBy: graphical.target
StopWhenUnneeded: no
RefuseManualStart: no
RefuseManualStop: no
DefaultDependencies: yes
OnFailureJobMode: replace
IgnoreOnIsolate: no
Service State: failed
Result: exit-code
Reload Result: success
PermissionsStartOnly: no
RootDirectoryStartOnly: no
RemainAfterExit: yes
GuessMainPID: no
Type: forking
Restart: no
NotifyAccess: none
NotifyState: unknown
KillMode: process
KillSignal: SIGTERM
SendSIGKILL: yes
SendSIGHUP: no
UMask: 0022
WorkingDirectory: /
RootDirectory: /
NonBlocking: no
PrivateTmp: no
PrivateNetwork: no
PrivateDevices: no
ProtectHome: no
ProtectSystem: no
IgnoreSIGPIPE: no
RuntimeDirectoryMode: 0755
LimitNOFILE: 4096
LimitNOFILESoft: 1024
StandardInput: null
StandardOutput: journal
StandardError: inherit
SyslogFacility: daemon
SyslogLevel: info
-> ExecStart:
Command Line: /etc/init.d/rng-tools start
-> ExecStop:
Command Line: /etc/init.d/rng-tools stop
linux systemd arm random
add a comment |Â
up vote
0
down vote
favorite
I'm trying to understand what is going on with rng-tools
and systemd
on a Beaglebone Black dev-board that's leading to entropy depletion in /dev/random
. I have about 8 dev-boards in a similar configuration and only the Beaglebone has the problem.
The Beaglebone runs a Debian derivative and has a hardware rng. The OMAP rng sustains reads from /dev/hwrand
. However, after draining /dev/random
the device never recovers. For example, it takes 646 seconds to read 10 bytes from /dev/random
.
When I look at systemd
I don't see a service enabled for the rng:
$ systemctl list-unit-files | grep -i -E 'rng|rand'
rng-tools.service generated
systemd-random-seed.service static
urandom.service static
I try to enable it, and no error is returned:
# systemctl enable rng-tools.service
rng-tools.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable rng-tools
But the service fails to enable:
$ systemctl list-unit-files | grep -i -E 'rng|rand'
rng-tools.service generated
systemd-random-seed.service static
urandom.service static
And:
$ systemctl status rng-tools
â rng-tools.service
Loaded: loaded (/etc/init.d/rng-tools; generated; vendor preset: enabled)
Active: failed (Result: exit-code) since Sun 2018-10-14 02:36:05 EDT; 17h ago
Docs: man:systemd-sysv-generator(8)
There is a script in rng-tools
called /etc/init.d/rng-tools
that looks like a service file, but it is not a systemd
service file. I don't see where it is enabled or where it feeds /dev/random
. Debian may have a related bug report at Issue 776597, rng-tools: No systemd .service file. I don't believe the 776597 script is the same script shown below.
How do I fix this issue or troubleshoot it further?
Here are a couple of similar Q&A's. I have not been able to scrape useful information out of them. Part of the issue is the complexity systemd
has introduced. I'm not quite following what is supposed to happen, and the finer points of the objects below /etc/systemd/system
like multi-user.target.wants
.
- Generated systemd unit does not start on boot
- Can start custom systemd service, can't enable it
- Unable to enable systemctl service
The rng-tools
package:
$ apt-file list rng-tools
rng-tools: /etc/default/rng-tools
rng-tools: /etc/init.d/rng-tools
rng-tools: /etc/logcheck/ignore.d.server/rng-tools
rng-tools: /etc/logcheck/violations.ignore.d/rng-tools
rng-tools: /usr/bin/rngtest
rng-tools: /usr/sbin/rngd
rng-tools: /usr/share/doc/rng-tools/README.gz
rng-tools: /usr/share/doc/rng-tools/TODO.Debian
rng-tools: /usr/share/doc/rng-tools/changelog.Debian.gz
rng-tools: /usr/share/doc/rng-tools/changelog.gz
rng-tools: /usr/share/doc/rng-tools/copyright
rng-tools: /usr/share/lintian/overrides/rng-tools
rng-tools: /usr/share/man/man1/rngtest.1.gz
rng-tools: /usr/share/man/man8/rngd.8.gz
The script /etc/init.d/rng-tools
.
$ cat /etc/init.d/rng-tools
#! /bin/sh
#
# rng-tools initscript for the rng-tools package
# Copr. 2003 by Henrique de Moraes Holschuh <hmh@debian.org>
# Copr. 2002 by Viral Shah <viral@debian.org>
#
### BEGIN INIT INFO
# Provides: rng-tools
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
#
#
# $Id: rng-tools.init,v 1.6.2.10 2008-06-10 19:51:37 hmh Exp $
PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/rngd
NAME=rngd
DESC="Hardware RNG entropy gatherer daemon"
PIDFILE=/var/run/rngd.pid
DEVICELIST="hwrng hw_random hwrandom intel_rng i810_rng"
HRNGDEVICE=/dev/hwrng
RNGDOPTIONS=
[ -r /etc/default/rng-tools ] && . /etc/default/rng-tools
test -f $DAEMON || exit 0
set -e
finddevice ()
[ -c "$HRNGDEVICE" ] && return 0
for i in $DEVICELIST ; do
if [ -c "/dev/$i" ] ; then
HRNGDEVICE="/dev/$i"
return 0
fi
if [ -c "/dev/misc/$i" ] ; then
HRNGDEVICE="/dev/misc/$i"
return 0
fi
done
echo "(Hardware RNG device inode not found)"
echo "$0: Cannot find a hardware RNG device to use." >&2
exit 1
START="--start --quiet --pidfile $PIDFILE --startas $DAEMON --name $NAME"
case "$1" in
start)
echo -n "Starting $DESC: "
finddevice
START="$START -- -r $HRNGDEVICE $RNGDOPTIONS"
if start-stop-daemon $START >/dev/null 2>&1 ; then
echo "$NAME."
else
if start-stop-daemon --test $START >/dev/null 2>&1; then
echo "(failed)."
exit 1
else
echo "$DAEMON already running."
exit 0
fi
fi
;;
stop)
echo -n "Stopping $DESC: "
if start-stop-daemon --stop --quiet --pidfile $PIDFILE
--startas $DAEMON --retry 10 --name $NAME
>/dev/null 2>&1 ; then
echo "$NAME."
else
if start-stop-daemon --test $START >/dev/null 2>&1; then
echo "(not running)."
exit 0
else
echo "(failed)."
exit 1
fi
fi
;;
restart|force-reload)
$0 stop
exec $0 start
;;
*)
echo "Usage: $0 restart" 1>&2
exit 1
;;
esac
exit 0
Dmesg's related to the rng:
$ dmesg | grep -i -E 'rand|rng'
[ 4.560639] random: systemd-udevd urandom read with 11 bits of entropy available
[ 11.086922] systemd[1]: Starting Load/Save Random Seed...
[ 15.022431] using random self ethernet address
[ 15.022465] using random host ethernet address
[ 15.027177] using random self ethernet address
[ 15.027195] using random host ethernet address
[ 21.308396] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20
[ 34.690558] random: nonblocking pool is initialized
And systemd dump
for rng-tools:
-> Unit rng-tools.service:
Description: rng-tools.service
Instance: n/a
Unit Load State: loaded
Unit Active State: failed
State Change Timestamp: Sun 2018-10-14 02:36:05 EDT
Inactive Exit Timestamp: Sun 2018-10-14 02:36:04 EDT
Active Enter Timestamp: n/a
Active Exit Timestamp: n/a
Inactive Enter Timestamp: Sun 2018-10-14 02:36:05 EDT
GC Check Good: yes
Need Daemon Reload: no
Transient: no
Slice: system.slice
CGroup: n/a
CGroup realized: no
CGroup mask: 0x0
CGroup members mask: 0x0
Name: rng-tools.service
Documentation: man:systemd-sysv-generator(8)
Fragment Path: /run/systemd/generator.late/rng-tools.service
Source Path: /etc/init.d/rng-tools
Condition Timestamp: Sun 2018-10-14 02:36:04 EDT
Condition Result: yes
Assert Timestamp: Sun 2018-10-14 02:36:04 EDT
Assert Result: yes
Requires: system.slice
Requires: sysinit.target
WantedBy: multi-user.target
WantedBy: graphical.target
Conflicts: shutdown.target
Before: shutdown.target
Before: multi-user.target
Before: graphical.target
After: systemd-journald.socket
After: system.slice
After: remote-fs.target
After: sysinit.target
After: systemd-journald-dev-log.socket
After: basic.target
References: remote-fs.target
References: graphical.target
References: sysinit.target
References: system.slice
References: multi-user.target
References: systemd-journald.socket
References: systemd-journald-dev-log.socket
References: basic.target
References: shutdown.target
ReferencedBy: multi-user.target
ReferencedBy: graphical.target
StopWhenUnneeded: no
RefuseManualStart: no
RefuseManualStop: no
DefaultDependencies: yes
OnFailureJobMode: replace
IgnoreOnIsolate: no
Service State: failed
Result: exit-code
Reload Result: success
PermissionsStartOnly: no
RootDirectoryStartOnly: no
RemainAfterExit: yes
GuessMainPID: no
Type: forking
Restart: no
NotifyAccess: none
NotifyState: unknown
KillMode: process
KillSignal: SIGTERM
SendSIGKILL: yes
SendSIGHUP: no
UMask: 0022
WorkingDirectory: /
RootDirectory: /
NonBlocking: no
PrivateTmp: no
PrivateNetwork: no
PrivateDevices: no
ProtectHome: no
ProtectSystem: no
IgnoreSIGPIPE: no
RuntimeDirectoryMode: 0755
LimitNOFILE: 4096
LimitNOFILESoft: 1024
StandardInput: null
StandardOutput: journal
StandardError: inherit
SyslogFacility: daemon
SyslogLevel: info
-> ExecStart:
Command Line: /etc/init.d/rng-tools start
-> ExecStop:
Command Line: /etc/init.d/rng-tools stop
linux systemd arm random
add a comment |Â
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I'm trying to understand what is going on with rng-tools
and systemd
on a Beaglebone Black dev-board that's leading to entropy depletion in /dev/random
. I have about 8 dev-boards in a similar configuration and only the Beaglebone has the problem.
The Beaglebone runs a Debian derivative and has a hardware rng. The OMAP rng sustains reads from /dev/hwrand
. However, after draining /dev/random
the device never recovers. For example, it takes 646 seconds to read 10 bytes from /dev/random
.
When I look at systemd
I don't see a service enabled for the rng:
$ systemctl list-unit-files | grep -i -E 'rng|rand'
rng-tools.service generated
systemd-random-seed.service static
urandom.service static
I try to enable it, and no error is returned:
# systemctl enable rng-tools.service
rng-tools.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable rng-tools
But the service fails to enable:
$ systemctl list-unit-files | grep -i -E 'rng|rand'
rng-tools.service generated
systemd-random-seed.service static
urandom.service static
And:
$ systemctl status rng-tools
â rng-tools.service
Loaded: loaded (/etc/init.d/rng-tools; generated; vendor preset: enabled)
Active: failed (Result: exit-code) since Sun 2018-10-14 02:36:05 EDT; 17h ago
Docs: man:systemd-sysv-generator(8)
There is a script in rng-tools
called /etc/init.d/rng-tools
that looks like a service file, but it is not a systemd
service file. I don't see where it is enabled or where it feeds /dev/random
. Debian may have a related bug report at Issue 776597, rng-tools: No systemd .service file. I don't believe the 776597 script is the same script shown below.
How do I fix this issue or troubleshoot it further?
Here are a couple of similar Q&A's. I have not been able to scrape useful information out of them. Part of the issue is the complexity systemd
has introduced. I'm not quite following what is supposed to happen, and the finer points of the objects below /etc/systemd/system
like multi-user.target.wants
.
- Generated systemd unit does not start on boot
- Can start custom systemd service, can't enable it
- Unable to enable systemctl service
The rng-tools
package:
$ apt-file list rng-tools
rng-tools: /etc/default/rng-tools
rng-tools: /etc/init.d/rng-tools
rng-tools: /etc/logcheck/ignore.d.server/rng-tools
rng-tools: /etc/logcheck/violations.ignore.d/rng-tools
rng-tools: /usr/bin/rngtest
rng-tools: /usr/sbin/rngd
rng-tools: /usr/share/doc/rng-tools/README.gz
rng-tools: /usr/share/doc/rng-tools/TODO.Debian
rng-tools: /usr/share/doc/rng-tools/changelog.Debian.gz
rng-tools: /usr/share/doc/rng-tools/changelog.gz
rng-tools: /usr/share/doc/rng-tools/copyright
rng-tools: /usr/share/lintian/overrides/rng-tools
rng-tools: /usr/share/man/man1/rngtest.1.gz
rng-tools: /usr/share/man/man8/rngd.8.gz
The script /etc/init.d/rng-tools
.
$ cat /etc/init.d/rng-tools
#! /bin/sh
#
# rng-tools initscript for the rng-tools package
# Copr. 2003 by Henrique de Moraes Holschuh <hmh@debian.org>
# Copr. 2002 by Viral Shah <viral@debian.org>
#
### BEGIN INIT INFO
# Provides: rng-tools
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
#
#
# $Id: rng-tools.init,v 1.6.2.10 2008-06-10 19:51:37 hmh Exp $
PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/rngd
NAME=rngd
DESC="Hardware RNG entropy gatherer daemon"
PIDFILE=/var/run/rngd.pid
DEVICELIST="hwrng hw_random hwrandom intel_rng i810_rng"
HRNGDEVICE=/dev/hwrng
RNGDOPTIONS=
[ -r /etc/default/rng-tools ] && . /etc/default/rng-tools
test -f $DAEMON || exit 0
set -e
finddevice ()
[ -c "$HRNGDEVICE" ] && return 0
for i in $DEVICELIST ; do
if [ -c "/dev/$i" ] ; then
HRNGDEVICE="/dev/$i"
return 0
fi
if [ -c "/dev/misc/$i" ] ; then
HRNGDEVICE="/dev/misc/$i"
return 0
fi
done
echo "(Hardware RNG device inode not found)"
echo "$0: Cannot find a hardware RNG device to use." >&2
exit 1
START="--start --quiet --pidfile $PIDFILE --startas $DAEMON --name $NAME"
case "$1" in
start)
echo -n "Starting $DESC: "
finddevice
START="$START -- -r $HRNGDEVICE $RNGDOPTIONS"
if start-stop-daemon $START >/dev/null 2>&1 ; then
echo "$NAME."
else
if start-stop-daemon --test $START >/dev/null 2>&1; then
echo "(failed)."
exit 1
else
echo "$DAEMON already running."
exit 0
fi
fi
;;
stop)
echo -n "Stopping $DESC: "
if start-stop-daemon --stop --quiet --pidfile $PIDFILE
--startas $DAEMON --retry 10 --name $NAME
>/dev/null 2>&1 ; then
echo "$NAME."
else
if start-stop-daemon --test $START >/dev/null 2>&1; then
echo "(not running)."
exit 0
else
echo "(failed)."
exit 1
fi
fi
;;
restart|force-reload)
$0 stop
exec $0 start
;;
*)
echo "Usage: $0 restart" 1>&2
exit 1
;;
esac
exit 0
Dmesg's related to the rng:
$ dmesg | grep -i -E 'rand|rng'
[ 4.560639] random: systemd-udevd urandom read with 11 bits of entropy available
[ 11.086922] systemd[1]: Starting Load/Save Random Seed...
[ 15.022431] using random self ethernet address
[ 15.022465] using random host ethernet address
[ 15.027177] using random self ethernet address
[ 15.027195] using random host ethernet address
[ 21.308396] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20
[ 34.690558] random: nonblocking pool is initialized
And systemd dump
for rng-tools:
-> Unit rng-tools.service:
Description: rng-tools.service
Instance: n/a
Unit Load State: loaded
Unit Active State: failed
State Change Timestamp: Sun 2018-10-14 02:36:05 EDT
Inactive Exit Timestamp: Sun 2018-10-14 02:36:04 EDT
Active Enter Timestamp: n/a
Active Exit Timestamp: n/a
Inactive Enter Timestamp: Sun 2018-10-14 02:36:05 EDT
GC Check Good: yes
Need Daemon Reload: no
Transient: no
Slice: system.slice
CGroup: n/a
CGroup realized: no
CGroup mask: 0x0
CGroup members mask: 0x0
Name: rng-tools.service
Documentation: man:systemd-sysv-generator(8)
Fragment Path: /run/systemd/generator.late/rng-tools.service
Source Path: /etc/init.d/rng-tools
Condition Timestamp: Sun 2018-10-14 02:36:04 EDT
Condition Result: yes
Assert Timestamp: Sun 2018-10-14 02:36:04 EDT
Assert Result: yes
Requires: system.slice
Requires: sysinit.target
WantedBy: multi-user.target
WantedBy: graphical.target
Conflicts: shutdown.target
Before: shutdown.target
Before: multi-user.target
Before: graphical.target
After: systemd-journald.socket
After: system.slice
After: remote-fs.target
After: sysinit.target
After: systemd-journald-dev-log.socket
After: basic.target
References: remote-fs.target
References: graphical.target
References: sysinit.target
References: system.slice
References: multi-user.target
References: systemd-journald.socket
References: systemd-journald-dev-log.socket
References: basic.target
References: shutdown.target
ReferencedBy: multi-user.target
ReferencedBy: graphical.target
StopWhenUnneeded: no
RefuseManualStart: no
RefuseManualStop: no
DefaultDependencies: yes
OnFailureJobMode: replace
IgnoreOnIsolate: no
Service State: failed
Result: exit-code
Reload Result: success
PermissionsStartOnly: no
RootDirectoryStartOnly: no
RemainAfterExit: yes
GuessMainPID: no
Type: forking
Restart: no
NotifyAccess: none
NotifyState: unknown
KillMode: process
KillSignal: SIGTERM
SendSIGKILL: yes
SendSIGHUP: no
UMask: 0022
WorkingDirectory: /
RootDirectory: /
NonBlocking: no
PrivateTmp: no
PrivateNetwork: no
PrivateDevices: no
ProtectHome: no
ProtectSystem: no
IgnoreSIGPIPE: no
RuntimeDirectoryMode: 0755
LimitNOFILE: 4096
LimitNOFILESoft: 1024
StandardInput: null
StandardOutput: journal
StandardError: inherit
SyslogFacility: daemon
SyslogLevel: info
-> ExecStart:
Command Line: /etc/init.d/rng-tools start
-> ExecStop:
Command Line: /etc/init.d/rng-tools stop
linux systemd arm random
I'm trying to understand what is going on with rng-tools
and systemd
on a Beaglebone Black dev-board that's leading to entropy depletion in /dev/random
. I have about 8 dev-boards in a similar configuration and only the Beaglebone has the problem.
The Beaglebone runs a Debian derivative and has a hardware rng. The OMAP rng sustains reads from /dev/hwrand
. However, after draining /dev/random
the device never recovers. For example, it takes 646 seconds to read 10 bytes from /dev/random
.
When I look at systemd
I don't see a service enabled for the rng:
$ systemctl list-unit-files | grep -i -E 'rng|rand'
rng-tools.service generated
systemd-random-seed.service static
urandom.service static
I try to enable it, and no error is returned:
# systemctl enable rng-tools.service
rng-tools.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable rng-tools
But the service fails to enable:
$ systemctl list-unit-files | grep -i -E 'rng|rand'
rng-tools.service generated
systemd-random-seed.service static
urandom.service static
And:
$ systemctl status rng-tools
â rng-tools.service
Loaded: loaded (/etc/init.d/rng-tools; generated; vendor preset: enabled)
Active: failed (Result: exit-code) since Sun 2018-10-14 02:36:05 EDT; 17h ago
Docs: man:systemd-sysv-generator(8)
There is a script in rng-tools
called /etc/init.d/rng-tools
that looks like a service file, but it is not a systemd
service file. I don't see where it is enabled or where it feeds /dev/random
. Debian may have a related bug report at Issue 776597, rng-tools: No systemd .service file. I don't believe the 776597 script is the same script shown below.
How do I fix this issue or troubleshoot it further?
Here are a couple of similar Q&A's. I have not been able to scrape useful information out of them. Part of the issue is the complexity systemd
has introduced. I'm not quite following what is supposed to happen, and the finer points of the objects below /etc/systemd/system
like multi-user.target.wants
.
- Generated systemd unit does not start on boot
- Can start custom systemd service, can't enable it
- Unable to enable systemctl service
The rng-tools
package:
$ apt-file list rng-tools
rng-tools: /etc/default/rng-tools
rng-tools: /etc/init.d/rng-tools
rng-tools: /etc/logcheck/ignore.d.server/rng-tools
rng-tools: /etc/logcheck/violations.ignore.d/rng-tools
rng-tools: /usr/bin/rngtest
rng-tools: /usr/sbin/rngd
rng-tools: /usr/share/doc/rng-tools/README.gz
rng-tools: /usr/share/doc/rng-tools/TODO.Debian
rng-tools: /usr/share/doc/rng-tools/changelog.Debian.gz
rng-tools: /usr/share/doc/rng-tools/changelog.gz
rng-tools: /usr/share/doc/rng-tools/copyright
rng-tools: /usr/share/lintian/overrides/rng-tools
rng-tools: /usr/share/man/man1/rngtest.1.gz
rng-tools: /usr/share/man/man8/rngd.8.gz
The script /etc/init.d/rng-tools
.
$ cat /etc/init.d/rng-tools
#! /bin/sh
#
# rng-tools initscript for the rng-tools package
# Copr. 2003 by Henrique de Moraes Holschuh <hmh@debian.org>
# Copr. 2002 by Viral Shah <viral@debian.org>
#
### BEGIN INIT INFO
# Provides: rng-tools
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
#
#
# $Id: rng-tools.init,v 1.6.2.10 2008-06-10 19:51:37 hmh Exp $
PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/rngd
NAME=rngd
DESC="Hardware RNG entropy gatherer daemon"
PIDFILE=/var/run/rngd.pid
DEVICELIST="hwrng hw_random hwrandom intel_rng i810_rng"
HRNGDEVICE=/dev/hwrng
RNGDOPTIONS=
[ -r /etc/default/rng-tools ] && . /etc/default/rng-tools
test -f $DAEMON || exit 0
set -e
finddevice ()
[ -c "$HRNGDEVICE" ] && return 0
for i in $DEVICELIST ; do
if [ -c "/dev/$i" ] ; then
HRNGDEVICE="/dev/$i"
return 0
fi
if [ -c "/dev/misc/$i" ] ; then
HRNGDEVICE="/dev/misc/$i"
return 0
fi
done
echo "(Hardware RNG device inode not found)"
echo "$0: Cannot find a hardware RNG device to use." >&2
exit 1
START="--start --quiet --pidfile $PIDFILE --startas $DAEMON --name $NAME"
case "$1" in
start)
echo -n "Starting $DESC: "
finddevice
START="$START -- -r $HRNGDEVICE $RNGDOPTIONS"
if start-stop-daemon $START >/dev/null 2>&1 ; then
echo "$NAME."
else
if start-stop-daemon --test $START >/dev/null 2>&1; then
echo "(failed)."
exit 1
else
echo "$DAEMON already running."
exit 0
fi
fi
;;
stop)
echo -n "Stopping $DESC: "
if start-stop-daemon --stop --quiet --pidfile $PIDFILE
--startas $DAEMON --retry 10 --name $NAME
>/dev/null 2>&1 ; then
echo "$NAME."
else
if start-stop-daemon --test $START >/dev/null 2>&1; then
echo "(not running)."
exit 0
else
echo "(failed)."
exit 1
fi
fi
;;
restart|force-reload)
$0 stop
exec $0 start
;;
*)
echo "Usage: $0 restart" 1>&2
exit 1
;;
esac
exit 0
Dmesg's related to the rng:
$ dmesg | grep -i -E 'rand|rng'
[ 4.560639] random: systemd-udevd urandom read with 11 bits of entropy available
[ 11.086922] systemd[1]: Starting Load/Save Random Seed...
[ 15.022431] using random self ethernet address
[ 15.022465] using random host ethernet address
[ 15.027177] using random self ethernet address
[ 15.027195] using random host ethernet address
[ 21.308396] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20
[ 34.690558] random: nonblocking pool is initialized
And systemd dump
for rng-tools:
-> Unit rng-tools.service:
Description: rng-tools.service
Instance: n/a
Unit Load State: loaded
Unit Active State: failed
State Change Timestamp: Sun 2018-10-14 02:36:05 EDT
Inactive Exit Timestamp: Sun 2018-10-14 02:36:04 EDT
Active Enter Timestamp: n/a
Active Exit Timestamp: n/a
Inactive Enter Timestamp: Sun 2018-10-14 02:36:05 EDT
GC Check Good: yes
Need Daemon Reload: no
Transient: no
Slice: system.slice
CGroup: n/a
CGroup realized: no
CGroup mask: 0x0
CGroup members mask: 0x0
Name: rng-tools.service
Documentation: man:systemd-sysv-generator(8)
Fragment Path: /run/systemd/generator.late/rng-tools.service
Source Path: /etc/init.d/rng-tools
Condition Timestamp: Sun 2018-10-14 02:36:04 EDT
Condition Result: yes
Assert Timestamp: Sun 2018-10-14 02:36:04 EDT
Assert Result: yes
Requires: system.slice
Requires: sysinit.target
WantedBy: multi-user.target
WantedBy: graphical.target
Conflicts: shutdown.target
Before: shutdown.target
Before: multi-user.target
Before: graphical.target
After: systemd-journald.socket
After: system.slice
After: remote-fs.target
After: sysinit.target
After: systemd-journald-dev-log.socket
After: basic.target
References: remote-fs.target
References: graphical.target
References: sysinit.target
References: system.slice
References: multi-user.target
References: systemd-journald.socket
References: systemd-journald-dev-log.socket
References: basic.target
References: shutdown.target
ReferencedBy: multi-user.target
ReferencedBy: graphical.target
StopWhenUnneeded: no
RefuseManualStart: no
RefuseManualStop: no
DefaultDependencies: yes
OnFailureJobMode: replace
IgnoreOnIsolate: no
Service State: failed
Result: exit-code
Reload Result: success
PermissionsStartOnly: no
RootDirectoryStartOnly: no
RemainAfterExit: yes
GuessMainPID: no
Type: forking
Restart: no
NotifyAccess: none
NotifyState: unknown
KillMode: process
KillSignal: SIGTERM
SendSIGKILL: yes
SendSIGHUP: no
UMask: 0022
WorkingDirectory: /
RootDirectory: /
NonBlocking: no
PrivateTmp: no
PrivateNetwork: no
PrivateDevices: no
ProtectHome: no
ProtectSystem: no
IgnoreSIGPIPE: no
RuntimeDirectoryMode: 0755
LimitNOFILE: 4096
LimitNOFILESoft: 1024
StandardInput: null
StandardOutput: journal
StandardError: inherit
SyslogFacility: daemon
SyslogLevel: info
-> ExecStart:
Command Line: /etc/init.d/rng-tools start
-> ExecStop:
Command Line: /etc/init.d/rng-tools stop
linux systemd arm random
linux systemd arm random
asked 7 mins ago
jww
1,47532157
1,47532157
add a comment |Â
add a comment |Â
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f475489%2frng-tools-allows-dev-random-depletion%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password