Browse Source

services: Add rngd-service.

* gnu/services/base.scm (<rngd-configuration>): New record type.
(rngd-service-type): New variable.
(rngd-service): New procedure.
* doc/guix.texi (Base Services): Document it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
gn-latest-20200428
David Craven 4 years ago
committed by Ludovic Courtès
parent
commit
b58cbf9ac5
No known key found for this signature in database GPG Key ID: 90B11993D9AEBB5
2 changed files with 52 additions and 2 deletions
  1. +7
    -0
      doc/guix.texi
  2. +45
    -2
      gnu/services/base.scm

+ 7
- 0
doc/guix.texi View File

@@ -7494,6 +7494,13 @@ created by @command{guix archive --generate-key} (@pxref{Invoking guix
archive}). If that is not the case, the service will fail to start.
@end deffn

@anchor{rngd-service}
@deffn {Scheme Procedure} rngd-service [#:rng-tools @var{rng-tools}] @
[#:device "/dev/hwrng"]
Return a service that runs the @command{rngd} program from @var{rng-tools}
to add @var{device} to the kernel's entropy pool. The service will fail if
@var{device} does not exist.
@end deffn

@node Scheduled Job Execution
@subsubsection Scheduled Job Execution


+ 45
- 2
gnu/services/base.scm View File

@@ -4,6 +4,7 @@
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 David Craven <david@craven.ch>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -31,7 +32,7 @@
#:use-module (gnu system mapped-devices)
#:use-module (gnu packages admin)
#:use-module ((gnu packages linux)
#:select (eudev kbd e2fsprogs lvm2 fuse alsa-utils crda gpm))
#:select (alsa-utils crda eudev e2fsprogs fuse gpm kbd lvm2 rng-tools))
#:use-module ((gnu packages base)
#:select (canonical-package glibc))
#:use-module (gnu packages package-management)
@@ -97,6 +98,8 @@

urandom-seed-service-type
urandom-seed-service
rngd-service-type
rngd-service

%base-services))

@@ -486,7 +489,47 @@ stopped before 'kill' is called."
(define (urandom-seed-service)
(service urandom-seed-service-type #f))


;;;
;;; Add hardware random number generator to entropy pool.
;;;

(define-record-type* <rngd-configuration>
rngd-configuration make-rngd-configuration
rngd-configuration?
(rng-tools rngd-configuration-rng-tools) ;package
(device rngd-configuration-device)) ;string

(define rngd-service-type
(shepherd-service-type
'rngd
(lambda (config)
(define rng-tools (rngd-configuration-rng-tools config))
(define device (rngd-configuration-device config))

(define rngd-command
(list #~(string-append #$rng-tools "/sbin/rngd")
"-f" "-r" device))

(shepherd-service
(documentation "Add TRNG to entropy pool.")
(requirement '(udev))
(provision '(trng))
(start #~(make-forkexec-constructor #$@rngd-command))
(stop #~(make-kill-destructor))))))

(define* (rngd-service #:key
(rng-tools rng-tools)
(device "/dev/hwrng"))
"Return a service that runs the @command{rngd} program from @var{rng-tools}
to add @var{device} to the kernel's entropy pool. The service will fail if
@var{device} does not exist."
(service rngd-service-type
(rngd-configuration
(rng-tools rng-tools)
(device device))))


;;;
;;; System-wide environment variables.
;;;


Loading…
Cancel
Save