[version 1.4.0] AMD screen stays black; modprobe fails

  • Done
  • quality assurance status badge
Details
3 participants
  • Josselin Poiret
  • Ludovic Courtès
  • pelzflorian (Florian Pelz)
Owner
unassigned
Submitted by
pelzflorian (Florian Pelz)
Severity
important
P
P
pelzflorian (Florian Pelz) wrote on 12 Dec 2022 17:27
(address . bug-guix@gnu.org)
87y1rcegff.fsf@pelzflorian.de
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:

Toggle quote (11 lines)
> [ 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 <pelzflorian@pelzflorian.de>
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(-)

Toggle diff (37 lines)
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 <andreas@enge.fr>
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
+;;; Copyright © 2020, 2022 Florian Pelz <pelzflorian@pelzflorian.de>
;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2022 Josselin Poiret <dev@jpoiret.xyz>
;;;
@@ -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
J
J
Josselin Poiret wrote on 12 Dec 2022 21:11
87mt7sfkl0.fsf@jpoiret.xyz
Hi Florian,

"pelzflorian (Florian Pelz)" <pelzflorian@pelzflorian.de> writes:

Toggle quote (4 lines)
> 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.

I don't think there's a race issue with the files being available:
shepherd should start after system activation (so /run/current-system
exists), and after /gnu/store was mounted in the early userspace.

Toggle quote (3 lines)
> I will try tomorrow to get an strace. The installer worked fine in …
> August I believe.

You could also probably try logging the system* call in some temporary
log file, by using some bash redirection (or with-current-output-port
and friends).

By the way, why is the modprobe binary inside a #+? The target will want
to be able to run the binary itself, right? Shouldn't it be #$?

Best,
--
Josselin Poiret
L
L
Ludovic Courtès wrote on 13 Dec 2022 00:18
(name . pelzflorian (Florian Pelz))(address . pelzflorian@pelzflorian.de)(address . 60010@debbugs.gnu.org)
87wn6wyzvn.fsf@gnu.org
Hi Florian,

"pelzflorian (Florian Pelz)" <pelzflorian@pelzflorian.de> skribis:

Toggle quote (12 lines)
> 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

[...]

Toggle quote (16 lines)
> @@ -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")

The ‘kmod’ package is patched to honor $LINUX_MODULE_DIRECTORY.
However, that variable is unset here:

Toggle snippet (4 lines)
$ sudo cat /proc/1/environ |xargs -0
HOME=/ TERM=linux BOOT_IMAGE=/gnu/store/04ac4skvnrfdsdw7z3rl3ya8spcgsn6g-linux-libre-6.0.10/bzImage PATH=/gnu/store/zyk2b4zmy3vcaqs67s2czb6nsrbf3b68-e2fsck-static-1.46.4/sbin:/gnu/store/cchslqkqm3qix71bsjr72mw9fd85p8a5-loadkeys-static-2.5.1/bin GUIX_LOCPATH=/gnu/store/mw3py6smb1pk8yx298hd9ivz9lzbksqi-glibc-utf8-locales-2.33/lib/locale

So you may need to add:

(setenv "LINUX_MODULE_DIRECTORY" "/run/booted-system/kernel/lib/modules")

Besides, but that’s more about aesthetics, it would make sense to use
(gnu build linux-modules) instead of calling out to ‘modprobe’, along
these lines:

(load-linux-modules-from-directory '("uvesafb")
"/run/booted-system/kernel/lib/modules")

HTH!

Ludo’.
L
L
Ludovic Courtès wrote on 13 Dec 2022 00:19
control message for bug #60010
(address . control@debbugs.gnu.org)
87v8mgyzva.fsf@gnu.org
severity 60010 important
quit
L
L
Ludovic Courtès wrote on 13 Dec 2022 11:00
Re: bug#60010: [version 1.4.0] AMD screen stays black; modprobe fails
(name . pelzflorian (Florian Pelz))(address . pelzflorian@pelzflorian.de)(address . 60010@debbugs.gnu.org)
875yefy665.fsf@gnu.org
Ludovic Courtès <ludo@gnu.org> skribis:

Toggle quote (4 lines)
> So you may need to add:
>
> (setenv "LINUX_MODULE_DIRECTORY" "/run/booted-system/kernel/lib/modules")

Specifically, here’s the minimal change we should test:
Toggle diff (25 lines)
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index f6f1923121..a512ace29e 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -289,11 +289,16 @@ (define (uvesafb-shepherd-service _)
(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"))))
+ (unless (file-exists? "/dev/fb0")
+ (setenv "LINUX_MODULE_DIRECTORY"
+ "/run/booted-system/kernel/lib/modules")
+ ;; TODO: Use 'load-linux-modules-from-directory' instead.
+ (invoke #+(file-append kmod "/bin/modprobe")
+ "uvesafb"
+ (string-append "v86d=" #$v86d "/sbin/v86d")
+ "mode_option=1024x768")
+ (unsetenv "LINUX_MODULE_DIRECTORY")
+ #t)))
(respawn? #f)
(one-shot? #t))))
Thanks,
Ludo’.
P
P
pelzflorian (Florian Pelz) wrote on 13 Dec 2022 13:29
(name . Josselin Poiret)(address . dev@jpoiret.xyz)(address . 60010@debbugs.gnu.org)
87sfhjzdv2.fsf@pelzflorian.de
Thank you Josselin.

Josselin Poiret <dev@jpoiret.xyz> writes:
Toggle quote (2 lines)
> I don't think there's a race issue with the files being available:

Yes apparently, but it is some kind of race.

BTW it happens on master branch too despite its more recent linux.

Toggle quote (3 lines)
> By the way, why is the modprobe binary inside a #+? The target will want
> to be able to run the binary itself, right? Shouldn't it be #$?

You are right, I guess. But I will later try replacing it with Ludo’s
load-linux-modules-from-directory instead. Perhaps that even gets the
install image small enough for a CDROM again? :)

Toggle quote (7 lines)
>> I will try tomorrow to get an strace. The installer worked fine in …
>> August I believe.
>
> You could also probably try logging the system* call in some temporary
> log file, by using some bash redirection (or with-current-output-port
> and friends).

I replaced the “(invoke #+(file-append kmod "/bin/modprobe") "uvesafb" …”
by a convoluted

(with-output-to-file "/tmp/strace"
(lambda ()
(with-error-to-port
(current-output-port)
(lambda ()
(open-pipe* OPEN_READ
#+(file-append strace "/bin/strace")
"-f"
#+(file-append kmod "/bin/modprobe")
"uvesafb"

but now the strace is a workaround and the modprobe succeeds. Either
way, /tmp/strace shows that modprobe first reads
/run/booted-system/kernel/lib/modules/6.0.10-gnu/modules.softdep and the
like. The successful strace only eventually goes on to read
uvesafb.ko.gz.

For completeness, the strace ends with
Attachment: strace
Regards,
Florian
P
P
pelzflorian (Florian Pelz) wrote on 13 Dec 2022 13:50
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 60010@debbugs.gnu.org)
87o7s7zcum.fsf@pelzflorian.de
Ludovic Courtès <ludo@gnu.org> writes:
Toggle quote (5 lines)
> Specifically, here’s the minimal change we should test:[…]
> + (unless (file-exists? "/dev/fb0")
> + (setenv "LINUX_MODULE_DIRECTORY"
> + "/run/booted-system/kernel/lib/modules")

Thanks for the patch.

I found I can test in QEMU if I put nomodeset in the kernel arguments
in GRUB.

Without the patch, the screen stays black there too.
With the patch, it hrmm it also stays black.

I will next try using 'load-linux-modules-from-directory' and no
modprobe.

Regards,
Florian
L
L
Ludovic Courtès wrote on 13 Dec 2022 14:03
(name . pelzflorian (Florian Pelz))(address . pelzflorian@pelzflorian.de)(address . 60010@debbugs.gnu.org)
87k02vwj5c.fsf@gnu.org
"pelzflorian (Florian Pelz)" <pelzflorian@pelzflorian.de> skribis:

Toggle quote (14 lines)
> Ludovic Courtès <ludo@gnu.org> writes:
>> Specifically, here’s the minimal change we should test:[…]
>> + (unless (file-exists? "/dev/fb0")
>> + (setenv "LINUX_MODULE_DIRECTORY"
>> + "/run/booted-system/kernel/lib/modules")
>
> Thanks for the patch.
>
> I found I can test in QEMU if I put nomodeset in the kernel arguments
> in GRUB.
>
> Without the patch, the screen stays black there too.
> With the patch, it hrmm it also stays black.

Do you see hints as to whether uvesafb gets loaded?

You can do that by adding “console=ttyS0” to the kernel arguments and by
passing ‘-serial stdio’ to QEMU.

Ludo’.
P
P
pelzflorian (Florian Pelz) wrote on 13 Dec 2022 14:51
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 60010@debbugs.gnu.org)
87sfhjfm3z.fsf@pelzflorian.de
"pelzflorian (Florian Pelz)" <pelzflorian@pelzflorian.de> writes:
Toggle quote (3 lines)
> I will next try using 'load-linux-modules-from-directory' and no
> modprobe.

I tried the attached patch. Doesn’t work, still black (in QEMU).

Says the dmesg:
Toggle quote (8 lines)
> [ 11.183789] shepherd[1]: Service user-homes has been started.
> [ 11.184555] shepherd[1]: Service user-processes has been started.
> [ 11.185587] shepherd[1]: Service host-name has been started.
> [ 11.186350] shepherd[1]: Service user-homes has been started.
> [ 11.187383] shepherd[1]: Failed to start maybe-uvesafb in the background.
> [ 15.213524] 8021q: 802.1Q VLAN Support v1.8
> [ 15.213541] 8021q: adding VLAN 0 to HW filter on device eth0

And nothing more.

Maybe there is a mistake in my patch.

Regards,
Florian
Toggle diff (50 lines)
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index f6f1923121..8456cc1570 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -37,6 +37,7 @@ (define-module (gnu system install)
#:use-module ((guix store) #:select (%store-prefix))
#:use-module (guix utils)
#:use-module (gnu installer)
+ #:use-module (gnu build linux-modules)
#:use-module (gnu system locale)
#:use-module (gnu services avahi)
#:use-module (gnu services dbus)
@@ -289,14 +290,20 @@ (define (uvesafb-shepherd-service _)
(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"))))
+ (unless (file-exists? "/dev/fb0")
+ (load-linux-modules-from-directory '("uvesafb") "\
+/run/booted-system/kernel/lib/modules"))))
(respawn? #f)
(one-shot? #t))))
+(define uvesafb-config
+ (computed-file "uvesafb.conf"
+ #~(with-output-to-file #$output
+ (lambda ()
+ (display
+ (string-append "options v86d=" #$v86d "/sbin/v86d"
+ " " "mode_option=1024x768"))))))
+
(define uvesafb-service-type
(service-type
(name 'uvesafb)
@@ -450,7 +457,10 @@ (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))
+ (list (simple-service 'uvesafb-config etc-service-type
+ (list `("modprobe.d/uvesafb.conf"
+ ,uvesafb-config)))
+ (service uvesafb-service-type))
'())))))
(define %issue
L
L
Ludovic Courtès wrote on 13 Dec 2022 17:37
(name . pelzflorian (Florian Pelz))(address . pelzflorian@pelzflorian.de)(address . 60010@debbugs.gnu.org)
871qp3w98y.fsf@gnu.org
"pelzflorian (Florian Pelz)" <pelzflorian@pelzflorian.de> skribis:

Toggle quote (12 lines)
> (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"))))
> + (unless (file-exists? "/dev/fb0")
> + (load-linux-modules-from-directory '("uvesafb") "\
> +/run/booted-system/kernel/lib/modules"))))

To make it work, you’d need to add a ‘modules’ field so that (gnu build
linux-modules) is in scope, plus throw in ‘with-imported-modules’.

I’d say let’s stick to the minimal change where we still invoke
‘modprobe’.

Ludo’.
P
P
pelzflorian (Florian Pelz) wrote on 14 Dec 2022 14:49
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 60010@debbugs.gnu.org)
87r0x2f62t.fsf@pelzflorian.de
Ludovic Courtès <ludo@gnu.org> writes:
Toggle quote (5 lines)
> Do you see hints as to whether uvesafb gets loaded?
>
> You can do that by adding “console=ttyS0” to the kernel arguments and by
> passing ‘-serial stdio’ to QEMU.

This serial output shows nothing about uvesafb, but dmesg contains about
uvesafb exactly the same modprobe failure as initially without
LINUX_MODULE_DIRECTORY.

I shall try Brice Waegeneire’s kernel-module-loader-service. This
cannot be a solution because some computers do already have /dev/fb0 and
doing modprobe uvesafb regardless makes their screen go awry. But it
will be interesting to know if it still works.

Also of course uvesafb still worked fine in November when we added
hardware support warnings to the installer, not long ago, not August.
Probably restoring the old linux kernel would be a workaround too.

Regards,
Florian
L
L
Ludovic Courtès wrote on 15 Dec 2022 00:29
(name . pelzflorian (Florian Pelz))(address . pelzflorian@pelzflorian.de)(address . 60010@debbugs.gnu.org)
87y1r9r2cj.fsf@gnu.org
"pelzflorian (Florian Pelz)" <pelzflorian@pelzflorian.de> skribis:

Toggle quote (10 lines)
> Ludovic Courtès <ludo@gnu.org> writes:
>> Do you see hints as to whether uvesafb gets loaded?
>>
>> You can do that by adding “console=ttyS0” to the kernel arguments and by
>> passing ‘-serial stdio’ to QEMU.
>
> This serial output shows nothing about uvesafb, but dmesg contains about
> uvesafb exactly the same modprobe failure as initially without
> LINUX_MODULE_DIRECTORY.

Oooh. ‘invoke’ uses ‘system*’, and in shepherd 0.9.3, ‘system*’ is
implemented in terms of ‘fork+exec-command’, which only passes the
environment variables listed in ‘default-environment-variables’ by
default. Thus, (setenv "LINUX_MODULE_DIRECTORY" …) had no effect on the
child process; it just wouldn’t see LINUX_MODULE_DIRECTORY.

I think the patch below will be good… or very close to it.

Lemme know!

Thanks,
Ludo’.
Toggle diff (27 lines)
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))))
P
P
pelzflorian (Florian Pelz) wrote on 15 Dec 2022 18:42
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 60010@debbugs.gnu.org)
875yec5zrw.fsf@pelzflorian.de
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

Toggle diff (20 lines)
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
Toggle diff (68 lines)
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.
L
L
Ludovic Courtès wrote on 16 Dec 2022 00:37
(name . pelzflorian (Florian Pelz))(address . pelzflorian@pelzflorian.de)(address . 60010@debbugs.gnu.org)
87edt0kzli.fsf@gnu.org
Hi Florian,

"pelzflorian (Florian Pelz)" <pelzflorian@pelzflorian.de> skribis:

Toggle quote (3 lines)
> Hello Ludo, sorry to say I attempted your modprobe patch that uses
> (parameterize ((default-environment-variables …

Bah, turns out it’s trickier than this. See

I figured I could test it in a VM. I ended up with a minimal change,
pushed in commit b1aef25453067004279c4267cf25e8d6d365890d, that lets
modprobe load uvesafb for good (it was all about setting
‘LINUX_MODULE_DIRECTORY’).

Let me know if anything’s amiss!

Thanks,
Ludo’.
P
P
pelzflorian (Florian Pelz) wrote on 16 Dec 2022 12:48
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 60010@debbugs.gnu.org)
87fsdfh8m9.fsf@pelzflorian.de
Ludovic Courtès <ludo@gnu.org> writes:
Toggle quote (5 lines)
> I ended up with a minimal change,
> pushed in commit b1aef25453067004279c4267cf25e8d6d365890d, that lets
> modprobe load uvesafb for good (it was all about setting
> ‘LINUX_MODULE_DIRECTORY’).

Thank you Ludo for your excellent work. All is good now on AMD hardware
(my laptop and PC). I’m still not sure why LINUX_MODULE_DIRECTORY is
needed here and is not needed for kernel module loader service, but
whatever.

Regards,
Florian
P
P
pelzflorian (Florian Pelz) wrote on 16 Dec 2022 18:09
close
(address . control@debbugs.gnu.org)
87r0wzb7ij.fsf@pelzflorian.de
close 60010
thanks
?