Subject: bug#60010: [version 1.4.0] AMD screen stays black; modprobe fails

From: "pelzflorian (Florian Pelz)" <[email-masked]>
Date: Mon, 12 Dec 2022 17:27:00 +0100

Just now I tried the installer on an AMD desktop but the graphical
installer screen stays black.  Same on an AMD laptop.  After switching
to another TTY, dmesg tells me this:

> [   11.625264] shepherd[1]: Service host-name has been started.
> [   11.625839] shepherd[1]: Service user-homes has been started.
> [   11.629846] shepherd[1]: 
> [   11.630078] [
> [   11.630230] modprobe
> [   11.630382] ] 
> [   11.630592] modprobe: FATAL: Module uvesafb not found in directory /lib/modules/6.0.10-gnu
> 
> [   11.631734] shepherd[1]: Failed to start maybe-uvesafb in the background.
> [   15.185776] 0000:04:00.0: Missing Free firmware (non-Free firmware loading is disabled)

I tried manually running the modprobe command from
gnu/system/install.scm:

/gnu/store/vh4g56m35wwlfg300s4qafykxjy09511-kmod-29/bin/modprobe uvesafb v86d=/gnu/store/na24a7653hyf0pghhw9nhfr6mi15v6cz-v86d-0.1.10/sbin/v86d mode_option=1024x768

Works fine.  I can switch back by Ctrl-Alt-F1 and the graphical
installer works.

/run/current-system/kernel/lib/modules/6.0.10-gnu/kernel/drivers/video/fbdev/uvesafb.ko.gz
exists.

So I tried waiting until it exists before modprobe (in the attached
patch).  But modprobe still fails in the same way, according to dmesg,
even though the file evidently already existed.

Why doesn’t modprobe find it?  Where does it look?

I will try tomorrow to get an strace.  The installer worked fine in …
August I believe.

Regards,
Florian

From: Florian Pelz <[email-masked]>
Date: Mon, 12 Dec 2022 15:33:26 +0100
Subject: [PATCH doesnt work] installer: Fix uvesafb not loading.

* gnu/system/install.scm (uvesafb-shepherd-service): Wait before
invoking modprobe.
---
 gnu/system/install.scm | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index f6f1923121..ffde933990 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2016 Andreas Enge <[email-masked]>
 ;;; Copyright © 2017 Marius Bakke <[email-masked]>
 ;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <[email-masked]>
-;;; Copyright © 2020 Florian Pelz <[email-masked]>
+;;; Copyright © 2020, 2022 Florian Pelz <[email-masked]>
 ;;; Copyright © 2020 Efraim Flashner <[email-masked]>
 ;;; Copyright © 2022 Josselin Poiret <[email-masked]>
 ;;;
@@ -289,11 +289,18 @@ (define (uvesafb-shepherd-service _)
          (provision '(maybe-uvesafb))
          (requirement '(file-systems))
          (start #~(lambda ()
-                    (or (file-exists? "/dev/fb0")
-                        (invoke #+(file-append kmod "/bin/modprobe")
+		    (define (start-uvesafb)
+		      ;; HOW TO DO THIS THE RIGHT WAY??
+		      (if (file-exists? "/run/current-system/kernel/lib\
+/modules/6.0.10-gnu/kernel/drivers/video/fbdev/uvesafb.ko.gz")
+			  (invoke #+(file-append kmod "/bin/modprobe")
                                 "uvesafb"
                                 (string-append "v86d=" #$v86d "/sbin/v86d")
-                                "mode_option=1024x768"))))
+                                "mode_option=1024x768")
+			  ;; Wait and try again.
+			  (begin (sleep 1) (start-uvesafb))))
+                    (or (file-exists? "/dev/fb0")
+                        (start-uvesafb))))
          (respawn? #f)
          (one-shot? #t))))
 
-- 
2.38.1