diff options
author | Lennart Poettering <lennart@poettering.net> | 2019-07-22 13:51:30 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2019-07-25 18:30:06 +0200 |
commit | 26ded55709947d936634f1de0f43dcf88f594621 (patch) | |
tree | d476ee135365743a17ab14b24d0261fed376dd60 /units | |
parent | c6127c39965aa7f13ee8b311e3f89f6f3c54a730 (diff) | |
download | systemd-26ded55709947d936634f1de0f43dcf88f594621.tar.gz systemd-26ded55709947d936634f1de0f43dcf88f594621.tar.bz2 systemd-26ded55709947d936634f1de0f43dcf88f594621.zip |
random-seed: rework systemd-random-seed.service substantially
This makes two major changes to the way systemd-random-seed operates:
1. We now optionally credit entropy if this is configured (via an env
var). Previously we never would do that, with this change we still don't
by default, but it's possible to enable this if people acknowledge that
they shouldn't replicate an image with a contained random seed to
multiple systems. Note that in this patch crediting entropy is a boolean
thing (unlike in previous attempts such as #1062), where only a relative
amount of bits was credited. The simpler scheme implemented here should
be OK though as the random seeds saved to disk are now written only with
data from the kernel's entropy pool retrieved after the pool is fully
initialized. Specifically:
2. This makes systemd-random-seed.service a synchronization point for
kernel entropy pool initialization. It was already used like this, for
example by systemd-cryptsetup-generator's /dev/urandom passphrase
handling, with this change it explicitly operates like that (at least
systems which provide getrandom(), where we can support this). This
means services that rely on an initialized random pool should now place
After=systemd-random-seed.service and everything should be fine. Note
that with this change sysinit.target (and thus early boot) is NOT
systematically delayed until the entropy pool is initialized, i.e.
regular services need to add explicit ordering deps on this service if
they require an initialized random pool.
Fixes: #4271
Replaces: #10621 #4513
Diffstat (limited to 'units')
-rw-r--r-- | units/systemd-random-seed.service.in | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/units/systemd-random-seed.service.in b/units/systemd-random-seed.service.in index 8903ee896c..5a490420e9 100644 --- a/units/systemd-random-seed.service.in +++ b/units/systemd-random-seed.service.in @@ -22,4 +22,9 @@ Type=oneshot RemainAfterExit=yes ExecStart=@rootlibexecdir@/systemd-random-seed load ExecStop=@rootlibexecdir@/systemd-random-seed save -TimeoutSec=30s + +# This service waits until the kernel's entropy pool is initialized, and may be +# used as ordering barrier for service that require an initialized entropy +# pool. Since initialization can take a while on entropy-starved systems, let's +# increase the time-out substantially here. +TimeoutSec=10min |