I also tried the kelebek333’s nvidia-legacy PPA. But Ubuntu boots to black screen. Also tried the suggestions here but couldn’t complete the installation of all components as it fails due to dependency on a higher version of libc6.
$ sudo ubuntu-drivers autoinstall
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following additional packages will be installed:
lib32gcc-s1 libc6-i386 libcuda1-340 libxnvctrl0 nvidia-opencl-icd-340 nvidia-settings screen-resolution-extra
The following NEW packages will be installed:
lib32gcc-s1 libc6-i386 libcuda1-340 libxnvctrl0 nvidia-340 nvidia-opencl-icd-340 nvidia-settings screen-resolution-extra
0 upgraded, 8 newly installed, 0 to remove and 148 not upgraded.
Need to get 0 B/73.3 MB of archives.
After this operation, 350 MB of additional disk space will be used.
Selecting previously unselected package libc6-i386.
(Reading database … 179435 files and directories currently installed.)
Preparing to unpack …/0-libc6-i386_2.31-0ubuntu9.9_amd64.deb …
Unpacking libc6-i386 (2.31-0ubuntu9.9) …
Selecting previously unselected package lib32gcc-s1.
Preparing to unpack …/1-lib32gcc-s1_10.3.0-1ubuntu1~20.04_amd64.deb …
Unpacking lib32gcc-s1 (10.3.0-1ubuntu1~20.04) …
Selecting previously unselected package libcuda1-340.
Preparing to unpack …/2-libcuda1-340_340.108-0ubuntu5.20.04.2_amd64.deb …
Unpacking libcuda1-340 (340.108-0ubuntu5.20.04.2) …
Selecting previously unselected package libxnvctrl0:amd64.
Preparing to unpack …/3-libxnvctrl0_470.57.01-0ubuntu0.20.04.3_amd64.deb …
Unpacking libxnvctrl0:amd64 (470.57.01-0ubuntu0.20.04.3) …
Selecting previously unselected package nvidia-340.
Preparing to unpack …/4-nvidia-340_340.108-0ubuntu5.20.04.2_amd64.deb …
Adding ‘diversion of /usr/lib/x86_64-linux-gnu/libGL.so.1 to /usr/lib/x86_64-linux-gnu/libGL.so.1.distrib by nvidia-340’
Adding ‘diversion of /usr/lib/i386-linux-gnu/libGL.so.1 to /usr/lib/i386-linux-gnu/libGL.so.1.distrib by nvidia-340’
Adding ‘diversion of /usr/lib/x86_64-linux-gnu/libGL.so to /usr/lib/x86_64-linux-gnu/libGL.so.distrib by nvidia-340’
Adding ‘diversion of /usr/lib/i386-linux-gnu/libGL.so to /usr/lib/i386-linux-gnu/libGL.so.distrib by nvidia-340’
Adding ‘diversion of /usr/lib/x86_64-linux-gnu/libEGL.so.1 to /usr/lib/x86_64-linux-gnu/libEGL.so.1.distrib by nvidia-340’
Adding ‘diversion of /usr/lib/i386-linux-gnu/libEGL.so.1 to /usr/lib/i386-linux-gnu/libEGL.so.1.distrib by nvidia-340’
Adding ‘diversion of /usr/lib/x86_64-linux-gnu/libEGL.so to /usr/lib/x86_64-linux-gnu/libEGL.so.distrib by nvidia-340’
Adding ‘diversion of /usr/lib/i386-linux-gnu/libEGL.so to /usr/lib/i386-linux-gnu/libEGL.so.distrib by nvidia-340’
Adding ‘diversion of /usr/lib/x86_64-linux-gnu/libGLESv2.so to /usr/lib/x86_64-linux-gnu/libGLESv2.so.distrib by nvidia-340’
Adding ‘diversion of /usr/lib/i386-linux-gnu/libGLESv2.so to /usr/lib/i386-linux-gnu/libGLESv2.so.distrib by nvidia-340’
Adding ‘diversion of /usr/lib/x86_64-linux-gnu/libGLESv2.so.2 to /usr/lib/x86_64-linux-gnu/libGLESv2.so.2.distrib by nvidia-340’
Adding ‘diversion of /usr/lib/i386-linux-gnu/libGLESv2.so.2 to /usr/lib/i386-linux-gnu/libGLESv2.so.2.distrib by nvidia-340’
Adding ‘diversion of /usr/lib/x86_64-linux-gnu/libGLESv1_CM.so to /usr/lib/x86_64-linux-gnu/libGLESv1_CM.so.distrib by nvidia-340’
Adding ‘diversion of /usr/lib/i386-linux-gnu/libGLESv1_CM.so to /usr/lib/i386-linux-gnu/libGLESv1_CM.so.distrib by nvidia-340’
Adding ‘diversion of /usr/lib/x86_64-linux-gnu/libGLESv1_CM.so.1 to /usr/lib/x86_64-linux-gnu/libGLESv1_CM.so.1.distrib by nvidia-340’
Adding ‘diversion of /usr/lib/i386-linux-gnu/libGLESv1_CM.so.1 to /usr/lib/i386-linux-gnu/libGLESv1_CM.so.1.distrib by nvidia-340’
Unpacking nvidia-340 (340.108-0ubuntu5.20.04.2) …
Selecting previously unselected package nvidia-opencl-icd-340.
Preparing to unpack …/5-nvidia-opencl-icd-340_340.108-0ubuntu5.20.04.2_amd64.deb …
Unpacking nvidia-opencl-icd-340 (340.108-0ubuntu5.20.04.2) …
Selecting previously unselected package screen-resolution-extra.
Preparing to unpack …/6-screen-resolution-extra_0.18build1_all.deb …
Unpacking screen-resolution-extra (0.18build1) …
Selecting previously unselected package nvidia-settings.
Preparing to unpack …/7-nvidia-settings_470.57.01-0ubuntu0.20.04.3_amd64.deb …
Unpacking nvidia-settings (470.57.01-0ubuntu0.20.04.3) …
Setting up nvidia-opencl-icd-340 (340.108-0ubuntu5.20.04.2) …
Setting up libxnvctrl0:amd64 (470.57.01-0ubuntu0.20.04.3) …
Setting up screen-resolution-extra (0.18build1) …
Setting up libc6-i386 (2.31-0ubuntu9.9) …
Setting up nvidia-settings (470.57.01-0ubuntu0.20.04.3) …
Setting up libcuda1-340 (340.108-0ubuntu5.20.04.2) …
Setting up lib32gcc-s1 (10.3.0-1ubuntu1~20.04) …
Setting up nvidia-340 (340.108-0ubuntu5.20.04.2) …
dpkg: error: version ‘-’ has bad syntax: revision number is empty
dpkg: error: version ‘-’ has bad syntax: revision number is empty
update-initramfs: deferring update (trigger activated)
INFO:Enable nvidia-340
DEBUG:Parsing /usr/share/ubuntu-drivers-common/quirks/put_your_quirks_here
DEBUG:Parsing /usr/share/ubuntu-drivers-common/quirks/lenovo_thinkpad
DEBUG:Parsing /usr/share/ubuntu-drivers-common/quirks/dell_latitude
Adding system user nvidia-persistenced' (UID 131) ... Adding new group nvidia-persistenced’ (GID 136) …
Adding new user nvidia-persistenced' (UID 131) with group nvidia-persistenced’ …
Not creating home directory `/'.
Loading new nvidia-340-340.108 DKMS files…
Building for 5.15.0-60-generic
Building for architecture x86_64
Building initial module for 5.15.0-60-generic
Error! Bad return status for module build on kernel: 5.15.0-60-generic (x86_64)
Consult /var/lib/dkms/nvidia-340/340.108/build/make.log for more information.
dpkg: error processing package nvidia-340 (–configure):
installed nvidia-340 package post-installation script subprocess returned error exit status 10
Processing triggers for mime-support (3.64ubuntu1) …
Processing triggers for gnome-menus (3.36.0-1ubuntu1) …
Processing triggers for libc-bin (2.31-0ubuntu9.9) …
Processing triggers for man-db (2.9.1-1) …
Processing triggers for desktop-file-utils (0.24-1ubuntu3) …
Processing triggers for initramfs-tools (0.136ubuntu6.7) …
update-initramfs: Generating /boot/initrd.img-5.15.0-60-generic
Errors were encountered while processing:
nvidia-340
E: Sub-process /usr/bin/dpkg returned an error code (1)
So I tried installing both. The installation for 418.113 does not succeed, but the 470.161 successfully installs. It had a few options that I didn’t fully understand that whether I should install i386 libraries, or should enable dkms, or some option about X server. I tried enabling all of them. However, the Ubuntu machine doesn’t show any GUI.
Luckily I can SSH into the machine, and here is the some information:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.161.03 Driver Version: 470.161.03 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|================
===============+======================+======================|
| 0 Quadro K1100M Off | 00000000:01:00.0 Off | N/A |
| N/A 42C P8 N/A / N/A | 41MiB / 2000MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 1168 G /usr/lib/xorg/Xorg 7MiB |
| 0 N/A N/A 1460 G /usr/bin/gnome-shell 4MiB |
| 0 N/A N/A 1538 C /usr/NX/bin/nxnode.bin 23MiB |
+-----------------------------------------------------------------------------+
The 470 driver should be installable using the Software&Updates application, but it’s now also correctly installed with dkms and 32bit compatibility. Nevertheless you should uninstall it and using the packaged driver since this is a hybrid graphics system which needs some more software support which gets installed alongside the packaged driver.
Please delete /etc/X11/xorg.conf since this diables the intel igpu which is driving the internal display.
I don’t see 470 listed in the Software & Updates application. But I was able to install it by adding the ppa sudo apt-add-repository ppa:graphics-drivers/ppa
After that I was able to install nvidia-cuda-toolkit as well. I will soon test it out, but things seem to be working for now. The solution seemed pretty easy and straightforward in the end, but unfortunately took me a long time to find out.
Thanks a lot for all your help. I highly appreciate it.