diff options
| author | David Craven <david@craven.ch> | 2016-07-03 20:25:09 +0200 |
|---|---|---|
| committer | Ludovic Courtès <ludo@gnu.org> | 2016-07-05 11:10:01 +0200 |
| commit | b58cbf9ac507f58ef3031305ce8c13ea889de2d2 (patch) | |
| tree | 2ed944935d405958497202e8828b2ca61af838b1 /gnu | |
| parent | cf91cfc0c47bbe3c026e098729522feec6631311 (diff) | |
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>
Diffstat (limited to 'gnu')
| -rw-r--r-- | gnu/services/base.scm | 47 |
1 files changed, 45 insertions, 2 deletions
diff --git a/gnu/services/base.scm b/gnu/services/base.scm index f304bf89a37..5eabfec423c 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> | 4 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> |
| 5 | ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> | 5 | ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> |
| 6 | ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> | 6 | ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> |
| 7 | ;;; Copyright © 2016 David Craven <david@craven.ch> | ||
| 7 | ;;; | 8 | ;;; |
| 8 | ;;; This file is part of GNU Guix. | 9 | ;;; This file is part of GNU Guix. |
| 9 | ;;; | 10 | ;;; |
| @@ -31,7 +32,7 @@ | |||
| 31 | #:use-module (gnu system mapped-devices) | 32 | #:use-module (gnu system mapped-devices) |
| 32 | #:use-module (gnu packages admin) | 33 | #:use-module (gnu packages admin) |
| 33 | #:use-module ((gnu packages linux) | 34 | #:use-module ((gnu packages linux) |
| 34 | #:select (eudev kbd e2fsprogs lvm2 fuse alsa-utils crda gpm)) | 35 | #:select (alsa-utils crda eudev e2fsprogs fuse gpm kbd lvm2 rng-tools)) |
| 35 | #:use-module ((gnu packages base) | 36 | #:use-module ((gnu packages base) |
| 36 | #:select (canonical-package glibc)) | 37 | #:select (canonical-package glibc)) |
| 37 | #:use-module (gnu packages package-management) | 38 | #:use-module (gnu packages package-management) |
| @@ -97,6 +98,8 @@ | |||
| 97 | 98 | ||
| 98 | urandom-seed-service-type | 99 | urandom-seed-service-type |
| 99 | urandom-seed-service | 100 | urandom-seed-service |
| 101 | rngd-service-type | ||
| 102 | rngd-service | ||
| 100 | 103 | ||
| 101 | %base-services)) | 104 | %base-services)) |
| 102 | 105 | ||
| @@ -486,7 +489,47 @@ stopped before 'kill' is called." | |||
| 486 | (define (urandom-seed-service) | 489 | (define (urandom-seed-service) |
| 487 | (service urandom-seed-service-type #f)) | 490 | (service urandom-seed-service-type #f)) |
| 488 | 491 | ||
| 489 | 492 | ||
| 493 | ;;; | ||
| 494 | ;;; Add hardware random number generator to entropy pool. | ||
| 495 | ;;; | ||
| 496 | |||
| 497 | (define-record-type* <rngd-configuration> | ||
| 498 | rngd-configuration make-rngd-configuration | ||
| 499 | rngd-configuration? | ||
| 500 | (rng-tools rngd-configuration-rng-tools) ;package | ||
| 501 | (device rngd-configuration-device)) ;string | ||
| 502 | |||
| 503 | (define rngd-service-type | ||
| 504 | (shepherd-service-type | ||
| 505 | 'rngd | ||
| 506 | (lambda (config) | ||
| 507 | (define rng-tools (rngd-configuration-rng-tools config)) | ||
| 508 | (define device (rngd-configuration-device config)) | ||
| 509 | |||
| 510 | (define rngd-command | ||
| 511 | (list #~(string-append #$rng-tools "/sbin/rngd") | ||
| 512 | "-f" "-r" device)) | ||
| 513 | |||
| 514 | (shepherd-service | ||
| 515 | (documentation "Add TRNG to entropy pool.") | ||
| 516 | (requirement '(udev)) | ||
| 517 | (provision '(trng)) | ||
| 518 | (start #~(make-forkexec-constructor #$@rngd-command)) | ||
| 519 | (stop #~(make-kill-destructor)))))) | ||
| 520 | |||
| 521 | (define* (rngd-service #:key | ||
| 522 | (rng-tools rng-tools) | ||
| 523 | (device "/dev/hwrng")) | ||
| 524 | "Return a service that runs the @command{rngd} program from @var{rng-tools} | ||
| 525 | to add @var{device} to the kernel's entropy pool. The service will fail if | ||
| 526 | @var{device} does not exist." | ||
| 527 | (service rngd-service-type | ||
| 528 | (rngd-configuration | ||
| 529 | (rng-tools rng-tools) | ||
| 530 | (device device)))) | ||
| 531 | |||
| 532 | |||
| 490 | ;;; | 533 | ;;; |
| 491 | ;;; System-wide environment variables. | 534 | ;;; System-wide environment variables. |
| 492 | ;;; | 535 | ;;; |
