Everything went fine during the upgrade, but I’m having a display problem again
I had posted this topic which was obviously a problem related to my Nvidia RTX 3060 graphics card
When I get to the grub menu, I have several entries
When I choose the first entry "Fedora Linux 39 (cinnamon), I get to the unlock window for my encrypted /home.
But this window is in low resolution, as if the Nvidia driver wasn’t launching.
And once I’ve typed my password, I get a black screen, I can’t do anything, not even ctrl alt f2 (at least it doesn’t display anything). I can restart via ctrl alt del.
The weird thing is that when I select “Fedora Linux 38 cinnamon” in the grub menu (the 2nd line), I get this window to decrypt my /home
Then I have this
And I finally get on lightdm, and I can connect to my session, which is under Fedora 39 according to the system information.
I suspect the Nvidia driver is not installed correctly, and the Nouveau driver is blacklisted. When you are in the grub menu, can you press e to see the actual arguments?
There have been several similar “black screen on boot” reports for F39 upgrades with solutions. If you are comfortable with command-line dnf you can try getting a text console (e.g., ). Otherwise, try editing the command line in the grub menu to allow nouveau as a fallback. Then look for a solution that fits.
These arguments need to be removed to allow a temporary fallback to the Nouveau driver. In the grub menu, manually delete rd.driver.blacklist=nouveau ...... modeset=1 (both before and after rhgb quiet). Then, try to boot with Ctrl-X and reinstall the Nvidia driver from rpmfusion to see if that resolves the issue.
Before doing the reinstall first show the result of dnf list installed \*nvidia\*.
The image you show with the comment that the Nvidia module missing: falling back to nouveau clearly shows the fallback service worked and the nouveau driver did load which is exactly as intended.
You said you cannot get crtl-alt-F2 to work, but does ctrl-alt-F3 work? That may give a text login where the repairs could be performed.
This appears to have happened with the upgrade from F38 to F39 and there seems a bug that prevents properly upgrading the nvidia modules with the system-upgrade. This issue has been around for quite some time with release version updates.
My fix, from the command line is very simple and does not involve reinstalling anything.
sudo dnf remove kmod-nvidia-* to remove the failing drivers
sudo akmods --force to rebuild the drivers and install the newly locally created kmod-nvidia-$(uname -r) package.
wait at least one minute after step 2 completes then reboot.
You probably can get the nvidia GPU to function (however poorly) with the nouveau drivers and allow you to log in if you were to have the grub menu displayed and press e to edit the line that begins with ‘linux’, Removing the parts already mentioned rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1 and rhgb quiet replacing it all with nomodeset.
Yes, changes made using e in the grub menu are only applied to that boot. The deletions allow nouveau to be loaded when nvidia fails. If you fix the nvidia issue while using nouveau your next boot should get a normal session with nvidia. If you still have the black screen issue you may not have waited long enough for the nvidia reconfiguration to finish.
I didn’t see the requested list of installed nvidia packages – it may help pin down the problem:
The lsmod shows that nvidia failed to load. Running journalctl in a terminal should provide details. Your task is to find the relevant messages and post them here (even if they lead you to a fix, having the errors in searchable form could help others with the same problem). You can start with journalctl -b and experimenting with options to search for entries matching nvidia and have high priority:
-g, --grep=
Filter output to entries where the MESSAGE= field matches the specified regular expression.
PERL-compatible regular expressions are used, see pcre2pattern(3) for a detailed description of the
syntax.
If the pattern is all lowercase, matching is case insensitive. Otherwise, matching is case sensitive.
This can be overridden with the --case-sensitive option, see below.
and
-p, --priority=
Filter output by message priorities or priority ranges. Takes either a single numeric or textual log
level (i.e. between 0/"emerg" and 7/"debug"), or a range of numeric/text log levels in the form
FROM..TO. The log levels are the usual syslog log levels as documented in syslog(3), i.e. "emerg" (0),
"alert" (1), "crit" (2), "err" (3), "warning" (4), "notice" (5), "info" (6), "debug" (7). If a single
log level is specified, all messages with this log level or a lower (hence more important) log level
are shown. If a range is specified, all messages within the range are shown, including both the start
and the end value of the range. This will add "PRIORITY=" matches for the specified priorities.
Maybe start with journalctl -b -s nvidia -p 3 > nvidia-p3.txt (so you can view complete lines, e.g., using less).
It has been noted by several that a full release version upgrade may not properly build the nvidia drivers and they do not properly load after the upgrade.
One fix that usually works is
Remove the failing modules with sudo dnf remove kmod-nvidia-\*
Build the modules new for the running system with sudo akmods --force
Wait about 1 minute after step 2 completes then reboot.
Working with journactl requires finding the right filters, as it records “everything”. Unless you use a big monitor with a very wide window, you need to capture journalctl output in a file to ensure that lines don’t get truncated (important details are often near the end of the line).
look at man journctl for discussion of the grep search and priority options
Running “sudo journalctl” gives more information.
Example (old iMac, curretly running nouveau):
~% journalctl -b -g nvidia
Nov 13 15:47:14 X kernel: nouveau 0000:01:00.0: NVIDIA GK107 (0e72a0a2)
Nov 13 15:47:18 X kernel: input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/soun>
[...]
Nov 13 15:47:37 fedorausb gnome-remote-desktop-daemon[2000]: Cannot load libnvidia-encode.so.1
Note truncated line. You can use redirection and tee to get full lines in terminal and in a file for future reference.
(base) [gnw3@fedorausb]~% journalctl -b -g nvidia | tee journalctl.out
Nov 13 15:47:14 fedorausb kernel: nouveau 0000:01:00.0: NVIDIA GK107 (0e72a0a2)
Nov 13 15:47:18 fedorausb kernel: input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input12
[...]
Nov 13 15:47:37 fedorausb gnome-remote-desktop-daemon[2000]: Cannot load libnvidia-encode.so.1
I’ve decided to reinstall from scratch Fedora 39. Everything works well until I install the nvidia drivers through rpm fusion and then my black screen appears again.
So I stick with nouveau for now.
I’m wondering : is sticking with nouveau a good idea ? I don’t play games, nor any video encoding.
As you have seen, nvidia drivers are “high maintenance”, so if nouveau isn’t causing problems for your workflows, you probably have better ways to spend your time (such as working through Linux Command, a time-tested guide to linux command-line tools – the command-line is often needed to solve issues, in part because it makes it easier to discuss issues on online forums).
I use nouveau on my old (late 2012) iMac until I hit something (usually helping colleague with a software issue) that needs nvidia. It isn’t a big problem to switch, but I expect I will start to encounter things not supported on older Nvidia hardware. There is work on an open source replacement for nouveau, and Nvidia has dipped a toe in open source.