Old style NVIDIA package installs configuration snippet to an unusual location
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
nvidia-graphics-drivers-384 (Ubuntu) |
New
|
Undecided
|
Unassigned |
Bug Description
The old-style NVIDIA package (used prior to Bionic) installs an X configuration snippet to:
/usr/share/
The purpose of this configuration snippet is to configure DRM OutputClass-based driver matching so that the NVIDIA driver can be loaded without needing to explicitly configure it. Due to its location, however, it ends up not being read by the X server.
This isn't a problem in distros before Bionic, since up until Artful, the X server was patched to add "nvidia" to the X server's own auto-detected driver list, so the OutputClass-based matching was redundant. However, if a system running Bionic or newer has an NVIDIA driver package from Artful or earlier installed, the location of this file is problematic, as the NVIDIA driver can no longer be autoconfigured from either the X server's internal driver list nor the OutputClass-based matching.
Normally, a user wouldn't end up with an old-style driver package on a newer distro, but one possible scenario which could lead to this condition is if an NVIDIA driver package is installed via an external repository (for example, the NVIDIA CUDA repositories) on an Ubuntu version that uses the older packaging format, then the system is upgraded to a newer version that uses the newer packaging format. Third party repositories are disabled as part of the do-release-upgrade process, and the NVIDIA driver package does not get updated. The packages continue to function, but the placement of the nvidia-
I have confirmed that moving this file one level up, so that its parent directory is /usr/share/