Hello Ludo, sorry to say I attempted your modprobe patch that uses
(parameterize ((default-environment-variables …
No good. Screen is black. Same [ modprobe ] failure in dmesg on QEMU
and on real AMD hardware.
There are workarounds by surrounding modprobe within strace or
alternatively using kernel-module-loader-service (attached; but again,
without the file-exists? check, this would cause new issues on some
machines that dont need uvesafb).
A stupid
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index f6f1923121..a99cf09e31 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -289,6 +289,7 @@ (define (uvesafb-shepherd-service _)
(provision '(maybe-uvesafb))
(requirement '(file-systems))
(start #~(lambda ()
+ (sleep 1)
(or (file-exists? "/dev/fb0")
(invoke #+(file-append kmod "/bin/modprobe")
"uvesafb"
fails though.
All bad…
Regards,
Florian
diff --git a/gnu/system/install.scm b/gnu/sysdiff --git a/gnu/system/install.scm b/gnu/system/install.scm
index f6f1923121..2a1f401536 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -40,6 +40,7 @@ (define-module (gnu system install)
#:use-module (gnu system locale)
#:use-module (gnu services avahi)
#:use-module (gnu services dbus)
+ #:use-module (gnu services linux)
#:use-module (gnu services networking)
#:use-module (gnu services shepherd)
#:use-module (gnu services ssh)
@@ -283,29 +284,22 @@ (define %nscd-minimal-caches
;; These define a service to load the uvesafb kernel module with the
;; appropriate options. The GUI installer needs it when the machine does not
;; support Kernel Mode Setting. Otherwise kmscon is missing /dev/fb0.
-(define (uvesafb-shepherd-service _)
- (list (shepherd-service
- (documentation "Load the uvesafb kernel module if needed.")
- (provision '(maybe-uvesafb))
- (requirement '(file-systems))
- (start #~(lambda ()
- (or (file-exists? "/dev/fb0")
- (invoke #+(file-append kmod "/bin/modprobe")
- "uvesafb"
- (string-append "v86d=" #$v86d "/sbin/v86d")
- "mode_option=1024x768"))))
- (respawn? #f)
- (one-shot? #t))))
-
-(define uvesafb-service-type
- (service-type
- (name 'uvesafb)
- (extensions
- (list (service-extension shepherd-root-service-type
- uvesafb-shepherd-service)))
- (description
- "Load the @code{uvesafb} kernel module with the right options.")
- (default-value #t)))
+(define uvesafb-config
+ (computed-file "uvesafb.conf"
+ #~(with-output-to-file #$output
+ (lambda ()
+ (display
+ (string-append "options uvesafb"
+ " " "v86d=" #$v86d "/sbin/v86d"
+ " " "mode_option=1024x768"))))))
+
+(define uvesafb-services
+ (list (service kernel-module-loader-service-type
+ '("uvesafb"))
+ (simple-service 'uvesafb-config etc-service-type
+ (list `("modprobe.d/uvesafb.conf"
+ ,uvesafb-config)))))
+
(define* (%installation-services #:key (system (or (and=>
(%current-target-system)
@@ -450,8 +444,7 @@ (define bare-bones-os
;; installer. Some may also need a kernel parameter like nomodeset
;; or vga=793, but we leave that for the user to specify in GRUB.
`(,@(if (supported-package? v86d system)
- (list (service uvesafb-service-type))
- '())))))
+ uvesafb-services)))))
(define %issue
;; Greeting.