diff options
author | Ludovic Courtès <ludo@gnu.org> | 2018-09-26 22:52:38 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2018-09-26 23:40:36 +0200 |
commit | a56c4eb8f43ae5555985d8a84308d150c0763c5a (patch) | |
tree | a2bd6955e7242235330670ba8442839de2d0af4c | |
parent | 6f03b08089167ec863361352ab200830bffeb0b7 (diff) | |
download | guix-a56c4eb8f43ae5555985d8a84308d150c0763c5a.tar.gz |
services: shepherd: Add workaround for 0.5.0 in containers.
* gnu/services/shepherd.scm (%containerized-shepherd-service): New service. * gnu/system.scm (essential-services): Use it when CONTAINER? is true.
-rw-r--r-- | gnu/services/shepherd.scm | 16 | ||||
-rw-r--r-- | gnu/system.scm | 2 |
2 files changed, 17 insertions, 1 deletions
diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm index 4c7e72049f..49d08cc30f 100644 --- a/gnu/services/shepherd.scm +++ b/gnu/services/shepherd.scm @@ -59,6 +59,7 @@ %default-modules shepherd-service-file + %containerized-shepherd-service shepherd-service-lookup-procedure shepherd-service-back-edges @@ -327,6 +328,21 @@ symbols provided/required by a service." (lambda (service) (vhash-foldq* cons '() service edges))) +(define %containerized-shepherd-service + ;; XXX: This service works around a bug in the Shepherd 0.5.0: shepherd + ;; calls reboot(2) (via 'disable-reboot-on-ctrl-alt-del') when it starts, + ;; but in a container that fails with EINVAL. This was fixed in Shepherd + ;; commit 92e806bac1abaeeaf5d60f0ab50d1ae85ba6a62f. + (simple-service 'containerized-shepherd + shepherd-root-service-type + (list (shepherd-service + (provision '(containerized-shepherd)) + (start #~(lambda () + (set! (@@ (shepherd) + disable-reboot-on-ctrl-alt-del) + (const #t)) + #t)))))) + (define (shepherd-service-upgrade live target) "Return two values: the subset of LIVE (a list of <live-service>) that needs to be unloaded, and the subset of TARGET (a list of <shepherd-service>) that diff --git a/gnu/system.scm b/gnu/system.scm index e4a57475a9..99bc09873d 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -501,7 +501,7 @@ a container or that of a \"bare metal\" system." ;; Add the firmware service, unless we are building for a ;; container. (if container? - '() + (list %containerized-shepherd-service) (list %linux-bare-metal-service (service firmware-service-type (operating-system-firmware os)))))))) |