services: urandom-seed: Become a dependency of 'user-processes'.

This ensures that 'urandom-seed' is started before programs that rely on
sources of randomness.

Fixes <https://bugs.gnu.org/29773>.
Reported by Leo Famulari <leo@famulari.name>.

* gnu/services/base.scm (urandom-seed-shepherd-service): Change
'requirement' to (file-systems).
(urandom-seed-service-type): Extend USER-PROCESSES-SERVICE-TYPE.
This commit is contained in:
Ludovic Courtès 2017-12-20 11:09:03 +01:00
parent 206a28d84a
commit 4e9fd50857
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 8 additions and 2 deletions

View File

@ -529,7 +529,7 @@ in KNOWN-MOUNT-POINTS when it is stopped."
(list (shepherd-service (list (shepherd-service
(documentation "Preserve entropy across reboots for /dev/urandom.") (documentation "Preserve entropy across reboots for /dev/urandom.")
(provision '(urandom-seed)) (provision '(urandom-seed))
(requirement '(user-processes)) (requirement '(file-systems))
(start #~(lambda _ (start #~(lambda _
;; On boot, write random seed into /dev/urandom. ;; On boot, write random seed into /dev/urandom.
(when (file-exists? #$%random-seed-file) (when (file-exists? #$%random-seed-file)
@ -590,7 +590,13 @@ in KNOWN-MOUNT-POINTS when it is stopped."
(service-type (name 'urandom-seed) (service-type (name 'urandom-seed)
(extensions (extensions
(list (service-extension shepherd-root-service-type (list (service-extension shepherd-root-service-type
urandom-seed-shepherd-service))) urandom-seed-shepherd-service)
;; Have 'user-processes' depend on 'urandom-seed'.
;; This ensures that user processes and daemons don't
;; start until we have seeded the PRNG.
(service-extension user-processes-service-type
(const '(urandom-seed)))))
(description (description
"Seed the @file{/dev/urandom} pseudo-random number "Seed the @file{/dev/urandom} pseudo-random number
generator (RNG) with the value recorded when the system was last shut generator (RNG) with the value recorded when the system was last shut