After fresh Ubuntu 20.04 install, downgrading Nvidia driver doesn't update nvidia modules in kernel

Bug #1916971 reported by Ubuntu Tinkerer
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
nvidia-graphics-drivers-460 (Ubuntu)
New
Undecided
Unassigned
ubiquity (Ubuntu)
New
Undecided
Unassigned
ubuntu-drivers-common (Ubuntu)
New
Undecided
Unassigned

Bug Description

SYSTEM:

Laptop: ASUS ROG GL552VW
OS: Ubuntu 20.04.2 LTS
GRAPHICS: Nvidia Geforce GTX 960m AND Intel HD Graphics
Linux kernel version: 5.8.0-44-generic

SUMMARY:

From a fresh working install of Ubuntu 20.04, I downgraded from nvidia-driver-460 by installing nvidia-driver-440 (which actually is a transitional package to nvidia-driver-450 but I didn't know this). After reboot I couldn't reach login-screen and instead got a black screen.

Problem was that sudo apt-get install nvidia-driver-440 did not insert nvidia modules v450 in kernel since never versions v460 were found.

This was solved by uninstalling linux-modules-nvidia-460 packages and instead installing linux-modules-nvidia-450 packages (see WORKAROUND below for instructions).

STEPS TO REPRODUCE:

Install Ubuntu 20.04. During installation, allow for the installation of proprietary drivers.

Once Ubuntu 20.04 has started, open a terminal and run the following:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-driver-440
sudo shutdown reboot now

PROBLEM:

After reboot, you can't reach login screen. Instead you get stuck during bootup.

WORKAROUND:

WARNING: BETTER WORKAROUND PROBABLY EXISTS! DON'T JUST COPY-PASTE INSTRUCTIONS. PAY ATTENTION TO WHAT NVIDIA DRVER AND LINUX KERNEL VERSIONS ARE RELEVANT FOR YOU! Run dpkg --list | grep linux-image to see what linux kenrel versions you have installed.

Remove the linux-modules-nvidia-460 packages and install the corresponding linux-modules-nvidia-450 packages. In my case I had Linux kernel versions 5.8.0-44-generic and 5.8.0-43-generic installed so I did as follows from recovery mode with network (instead of entering recovery mode, you should be able to press CTRL+ALT+F1 from the blank screen after bootup, login with username and password and then running these commands):

sudo apt-get autoremove --purge linux-modules-nvidia-460-5.8.0-44-generic linux-modules-nvidia-460-5.8.0-43-generic
sudo apt-get install linux-modules-nvidia-450-5.8.0-44-generic linux-modules-nvidia-450-5.8.0-43-generic
sudo shutdown reboot now

QUESTION:

Why was the linux-modules-nvidia-460 packages installed by the Ubuntu installer to begin with? I ask since I later removed the linux-modules-nvidia-450 packages (OBSERVE: 450, not 460) and used the Additional Drivers GUI to update back to nvidia-driver-460. Now linux-modules-nvidia-460 packages are NOT installed but the following still outputs 460:

modinfo nvidia | grep -i version

LOG:

This is a relevant part of /var/log/apt/term.log for when I installed nvidia-driver-440

nvidia.ko:
Running module version sanity check.
Error! Module version 450.102.04 for nvidia.ko
is not newer than what is already found in kernel 5.8.0-44-generic (460.39).
You may override by specifying --force.

nvidia-modeset.ko:
Running module version sanity check.
Error! Module version 450.102.04 for nvidia-modeset.ko
is not newer than what is already found in kernel 5.8.0-44-generic (460.39).
You may override by specifying --force.

nvidia-drm.ko:
Running module version sanity check.
Error! Module version 450.102.04 for nvidia-drm.ko
is not newer than what is already found in kernel 5.8.0-44-generic (460.39).
You may override by specifying --force.

nvidia-uvm.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/5.8.0-44-generic/updates/dkms/

This is a relevant part of /var/log/apt/term.log for when I installed packages linux-modules-nvidia-450-5.8.0-44-generic and linux-modules-nvidia-450-5.8.0-43-generic

Building module:
cleaning build area...
unset ARCH; [ ! -h /usr/bin/cc ] && export CC=/usr/bin/gcc; env NV_VERBOSE=1 'make' -j8 NV_EXCLUDE_BUILD_MODULES='' KERNEL_UNAME=5.8.0-43-generic IGNORE_XEN_PRESENCE=1 IGNORE_CC_MISMATCH=1 SYSSRC=/lib/modules/5.8.0-43-generic/build LD=/usr/bin/ld.bfd modules............
Signing module:
 - /var/lib/dkms/nvidia/450.102.04/5.8.0-43-generic/x86_64/module/nvidia-modeset.ko
 - /var/lib/dkms/nvidia/450.102.04/5.8.0-43-generic/x86_64/module/nvidia-uvm.ko
 - /var/lib/dkms/nvidia/450.102.04/5.8.0-43-generic/x86_64/module/nvidia-drm.ko
 - /var/lib/dkms/nvidia/450.102.04/5.8.0-43-generic/x86_64/module/nvidia.ko
Secure Boot not enabled on this system.
cleaning build area...

DKMS: build completed.

nvidia.ko:
Running module version sanity check.

Good news! Module version 450.102.04 for nvidia.ko
exactly matches what is already found in kernel 5.8.0-43-generic.
DKMS will not replace this module.
You may override by specifying --force.

nvidia-modeset.ko:
Running module version sanity check.

Good news! Module version 450.102.04 for nvidia-modeset.ko
exactly matches what is already found in kernel 5.8.0-43-generic.
DKMS will not replace this module.
You may override by specifying --force.

nvidia-drm.ko:
Running module version sanity check.

Good news! Module version 450.102.04 for nvidia-drm.ko
exactly matches what is already found in kernel 5.8.0-43-generic.
DKMS will not replace this module.
You may override by specifying --force.

nvidia-uvm.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/5.8.0-43-generic/updates/dkms/

ProblemType: Bug
DistroRelease: Ubuntu 20.04
Package: ubiquity (not installed)
ProcVersionSignature: Ubuntu 5.8.0-44.50~20.04.1-generic 5.8.18
Uname: Linux 5.8.0-44-generic x86_64
NonfreeKernelModules: nvidia_modeset nvidia
ApportVersion: 2.20.11-0ubuntu27.16
Architecture: amd64
CasperMD5CheckResult: skip
CurrentDesktop: ubuntu:GNOME
Date: Fri Feb 26 01:26:35 2021
InstallCmdLine: BOOT_IMAGE=/casper/vmlinuz file=/cdrom/preseed/ubuntu.seed maybe-ubiquity quiet splash ---
InstallationDate: Installed on 2021-02-24 (1 days ago)
InstallationMedia: Ubuntu 20.04.2.0 LTS "Focal Fossa" - Release amd64 (20210209.1)
SourcePackage: ubiquity
Symptom: installer
UpgradeStatus: No upgrade log present (probably fresh install)

Revision history for this message
Ubuntu Tinkerer (rationaltree) wrote :
Revision history for this message
Ubuntu Tinkerer (rationaltree) wrote :

I *think* my question in the original post is a relevant cause for this bug and kindly ask you to follow up on it.

description: updated
summary: - After fresh install, downgrading Nvidia driver doesn't update nvidia
- modules in kernel
+ After fresh Ubuntu 20.04 install, downgrading Nvidia driver doesn't
+ update nvidia modules in kernel
description: updated
description: updated
affects: ubuntu → ubiquity (Ubuntu)
Revision history for this message
Ubuntu Tinkerer (rationaltree) wrote :

In kern.log, look for rows near the search string "API mismatch". They point out the error that occurred during boot.

Revision history for this message
Ubuntu Tinkerer (rationaltree) wrote :
Revision history for this message
Ubuntu Tinkerer (rationaltree) wrote :

Check apt/history.log and term.log for full history of what I did (starting from fresh install) and install logs.

Revision history for this message
Dimitri John Ledkov (xnox) wrote :

Can you please provide the output of:

$ sudo ubuntu-drivers list

In the live session?

There are two ways to get the nvidia kernel driver. One option is to compile it from scratch on the users machine with dkms. THe other option is to install a metapackage linux-modules-nvidia for the appropriate kernel flavour and the appropriate nvidia revsision which provides a prebuild, not linked, and secureboot signed nvidia module.

So as to why.... the dkms one will not work or load on secureboot machines, unless one goes through cryptic MOK key enrollment procedure during boot.

The secureboot signed nvidia module works on secureboot machines without any additional steps by the user.

But the caveat is that the secureboot signed ones must be kept in correct tandem with the kernel flavour & nvidia revisions.

Anything you install from the PPA will not be secureboot signed, and thus need MOK signing.

Revision history for this message
Ubuntu Tinkerer (rationaltree) wrote :

Sorry for my late reply.

What do you mean by "... in the live session"? Instead I executed that command from my Ubuntu installation (where I observed the bug) and the output is here further below.

@Dimitri are you saying that securedboot devices should avoid using the device drivers PPA? Also I'm currently on nvidia-driver-460 but I have no linux-modules-nvidia-460 packages installed. My system seems to work correctly. Is it OK that I don't have the linux-modules-nvidia-460 packages installed?

Output of "sudo ubuntu-drivers list":

nvidia-driver-418-server, (kernel modules provided by linux-modules-nvidia-418-server-generic-hwe-20.04)
nvidia-driver-450-server, (kernel modules provided by linux-modules-nvidia-450-server-generic-hwe-20.04)
nvidia-driver-460, (kernel modules provided by linux-modules-nvidia-460-generic-hwe-20.04)
nvidia-driver-450, (kernel modules provided by linux-modules-nvidia-450-generic-hwe-20.04)
nvidia-driver-390, (kernel modules provided by linux-modules-nvidia-390-generic-hwe-20.04)
nvidia-driver-460-server, (kernel modules provided by linux-modules-nvidia-460-server-generic-hwe-20.04)

Revision history for this message
Ubuntu Tinkerer (rationaltree) wrote :

I don't understand. I currently have nvidia-driver-460 and linux kernel versions 5.8.0-43 to 45 installed (45 is being used). But I have no linux-modules-nvidia-460 packages installed. E.g. I don't have linux-modules-nvidia-460-5.8.0-45-generic and neither for 44 and 43. Is this ok or should I install linux-modules-nvidia-460-5.8.0-XY-generic.

If the linux-modules-nvidia-460-5.8.0-XY-generic packages are not necessary for my system then why were they pre-installed in the first place, especially since they caused problems for me when I wanted to downgrade nvidia-driver-450?

Please if you can answer my questions here and if you don't regard these as issues then close this bug report.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.