diff --git a/gnu/system/install.scm b/gnu/system/install.scm index f6f1923121..e524729baf 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -289,11 +289,21 @@ (define (uvesafb-shepherd-service _) (provision '(maybe-uvesafb)) (requirement '(file-systems)) (start #~(lambda () - (or (file-exists? "/dev/fb0") + (unless (file-exists? "/dev/fb0") + ;; In shepherd 0.9.3, 'system*' is implemented in terms + ;; of 'fork+exec-command'. Thus, set + ;; 'default-environment-variables' to pass an extra + ;; variable to the child process. + (parameterize ((default-environment-variables + `("LINUX_MODULE_DIRECTORY=/run/booted-system/kernel/lib/modules" + ,(environ)))) + ;; TODO: Use 'load-linux-modules-from-directory' + ;; instead. (invoke #+(file-append kmod "/bin/modprobe") "uvesafb" (string-append "v86d=" #$v86d "/sbin/v86d") - "mode_option=1024x768")))) + "mode_option=1024x768")) + #t))) (respawn? #f) (one-shot? #t))))