SDB:NVIDIA drivers

Jump to: navigation, search


Icon-warning.png
Warning: If you plan to replace your card with a more recent one, it's recommended that you uninstall the NVidia DDX driver (reverting back to modesetting DDX driver (newer; default) or nouveau DDX driver (older; optional)) before upgrading your hardware.

Open GPU kernel modules versus Proprietary drivers

The following article is about installing NVIDIA's Proprietary drivers. For more information about the Open GPU kernel modules, that NVIDIA released in May 2022, read this openSUSE Blog article.

Situation

Installing the official NVIDIA drivers using ZYpp (YaST or Zypper) is desired.

For information regarding NVIDIA's official linux .run file see "the hard way" page.

Procedure

Installing with YaST or Zypper requires root privileges.

Note that YaST is not available in OpenSUSE Aeon or Kalpa. You must use the command line with transactional-update and Zypper.

Special Requirements

You need to have multiversion feature for kernel packages enabled, it is normally the case by default.
You can verify that you have the following entry in /etc/zypp/zypp.conf:

multiversion = provides:multiversion(kernel)


Add the Nvidia Repository

The NVIDIA drivers can not be included with openSUSE because of their license. Conveniently, NVIDIA has an openSUSE repository that can be added and downloaded from.

You'll be asked whether you agree to import the 3rd party NVIDIA gpg key on the first refresh. We currently don't have a good way how to "trust" the thirdparty key and avoid this step. So please confirm the import of the key with yes.

Via terminal

Leap

As root, enter the following in a terminal:

# zypper install openSUSE-repos-Leap-NVIDIA

or

# zypper addrepo --refresh 'https://download.nvidia.com/opensuse/leap/$releasever' NVIDIA
Aeon, Kalpa, Leap Micro

As root, enter the following in a terminal:

# transactional-update -i pkg install openSUSE-repos-NVIDIA

and then restart your system.

Tumbleweed / Slowroll

As root, enter the following in a terminal (chose the command matching your openSUSE distribution flavour):

# zypper install openSUSE-repos-Tumbleweed-NVIDIA
# zypper install openSUSE-repos-Slowroll-NVIDIA

or

# zypper addrepo --refresh https://download.nvidia.com/opensuse/tumbleweed NVIDIA

Via YaST (for Leap and Tumbleweed)

  1. Open YaST, then click Software Repositories.
  2. Click Add (in the bottom left), then select Community Repositories.
  3. Select NVIDIA Graphics Drivers, then click OK.

Automated installation (tested on Tumbleweed)

To auto-detect and install the right driver for your hardware, run

# zypper install-new-recommends --repo repo-non-free

or

# zypper install-new-recommends --repo NVIDIA

Which command to choose depends on how you added the Nvidia repository and which name the repo has.

Manual installation

Get the hardware information

In a terminal:

# lspci | grep VGA
# lscpu | grep Arch

Alternatively:

# hwinfo --gfxcard | grep Model
# hwinfo --arch

Using inxi utility:

# inxi -G
# inxi -Ga

This information is also available in the Display subsection at YaST Hardware Information.


Determination of driver version

One way to determine the appropriate driver is to input your hardware information into Nvidia's driver search engine. Beware: Nvidia's site may declare shorter support period with the same chip for mobile graphics compared to desktop video cards. This is not true for Linux drivers (more info here). openSUSE provides unified Linux driver for all flavours: GeForce and Quadro, desktop and mobile. The driver decides during startup whether it supports this GPU or not.

Note: Specific video cards are mapped to the following naming convention listed below. You will need this information when you are ready to install via commandline/zypper.

  • G03 = driver v340 = legacy driver for GT8xxx/9xxx devices (via a community user)
  • G04 = driver v390 = legacy driver for GTX4xx/5xx Fermi devices
  • G05 = driver v470 = driver for GeForce 600 series and GeForce 700 series (Kepler)
  • G06 = driver v550 = driver for GeForce 700 series (Maxwell, Pascal...) and up
Icon-warning.png
Warning: Legacy drivers G03 and G04 won't work with actual kernel 6.6.x series. Use free nouveau drivers instead!

Installation

Alternatively, YaST Software or the following command can be used to check the available packages:

# zypper se -s x11-video-nvidiaG0* nvidia-video-G06* nvidia-gl*G0*
S  | Name                      | Type    | Version         | Arch   | Repository
---+---------------------------+---------+-----------------+--------+------------------------
   | nvidia-gl-G06             | package | 545.29.06-18.1  | x86_64 | nVidia Graphics Drivers
   | nvidia-glG04              | package | 390.157-37.1    | x86_64 | nVidia Graphics Drivers
   | nvidia-glG05              | package | 470.223.02-59.1 | x86_64 | nVidia Graphics Drivers
   | nvidia-video-G06          | package | 545.29.06-18.1  | x86_64 | nVidia Graphics Drivers
   | x11-video-nvidiaG04       | package | 390.157-37.1    | x86_64 | nVidia Graphics Drivers
   | x11-video-nvidiaG05       | package | 470.223.02-59.1 | x86_64 | nVidia Graphics Drivers


If you are going to install CUDA later, then you must use latest driver version (G06 as of Feb, 2024).

YaST (for Leap and Tumbleweed)

  1. Go to the YaST Control Center and click Software Management.
  2. View > Repositories > NVIDIA
  3. Choose the appropriate driver, e.g. x11-video-nvidiaG04 or x11-video-nvidiaG05 or nvidia-video-G06
  4. Optionally choose the corresponding OpenGL acceleration libraries; nvidia-glG04 or nvidia-glG05 or nvidia-gl-G06.
  5. Press Accept.
  6. Restart your computer.

Command line

It's for the moment the only way to install the drivers in OpenSUSE Aeon and Kalpa.

Once you know which product is mapped to the appropriate driver command mapping (e.g. G04 or G05 or G06), you can use :

Leap and Tumbleweed
# zypper in <x11-video-nvidiaG04 or x11-video-nvidiaG05 or nvidia-video-G06>
# zypper in <nvidia-glG04 or nvidia-glG05 or nvidia-gl-G06>
Aeon and Kalpa
  • For nvidia-video-G06 :
# transactional-update -i pkg in nvidia-drivers-G06 nvidia-driver-G06-kmp-default nvidia-video-G06 nvidia-gl-G06 nvidia-compute-G06
  • For x11-video-nvidiaG05 :
# transactional-update -i pkg in nvidia-gfxG05-kmp-default x11-video-nvidiaG05 nvidia-glG05 nvidia-computeG05
  • For x11-video-nvidiaG04 :
# transactional-update -i pkg in nvidia-gfxG04-kmp-default x11-video-nvidiaG04 nvidia-glG04 nvidia-computeG04

Restart your computer.

Secureboot

Kernels in Leap 15.2 or higher (and Tumbleweed since Kernel 6.2.1) will, by default, refuse to load any unsigned kernel modules on machines with secure boot enabled.

During the NVIDIA driver installation on a secureboot system a MOK keypair is being created and the kernel modules been signed with the created private key. The created certificate (public key) remains on the storage below /var/lib/nvidia-pubkeys, but it also needs to be imported to the list of to be enrolled MOK pubkeys.

After the first reboot this certificate can easily be enrolled to the MOK database. The EFI tool for this (mokutil) is automatically started: inside the tool select "Enroll MOK", then "Continue", then "Yes". Use your root password (US keyboard layout!) when prompted for a password. The certificate is now added to the MOK database and is considered trusted, which will allow kernel modules with matching signatures to load. To finish, select "Reboot".

Nvidia-secureboot-enrollKey.jpg

In case you miss the timeout for certificate enrollment after first reboot, you can easily import again the certificate by running the following command:

For nvidia-driver-G0X (X >= 6):

# mokutil --import /var/lib/nvidia-pubkeys/MOK-nvidia-driver-G0<X>-<driver_version>-<kernel_flavor>.der --root-pw
  • For nvidia-gfxG0X (X < 6):
# mokutil --import /var/lib/nvidia-pubkeys/MOK-nvidia-gfxG0<X>-<driver_version>-<kernel_flavor>.der --root-pw

Then reboot the machine and enroll the certificate as described before.

As the last resource, in case you are having problems with secure boot, you can, at your own risk, disable validation for kernel modules:

# mokutil --disable-validation


Driver Update

During a driver update the old and no longer being used public key is being registered to be deleted from the MOK data base. So in addition to the "Enroll MOK" menu entry a "Delete MOK" entry will appear in the EFI tool once you reboot the machine. In order to finally remove it from the MOK data base, select "Delete MOK", then "Continue", then "Yes". Again use your root password (US keyboard layout!) when prompted for a password. You can show the certificate/description of the public key when selecting "View Key X" in order not to delete the wrong key. Press any key to continue from there.

Nvidia-secureboot-deleteKey.jpg

Uninstalling the NVIDIA drivers

YaST

  1. Start YaST, go to: Software -> Software Management
  2. Change the 'Filter' to filter by software repositories
  3. Select the respective NVIDIA repository
  4. Mark any installed package from this repository for deletion and press 'Accept'. You may be prompted for conflicts, please ignore any conflicts and chose to break dependencies.
  5. Now in YaST select: Software -> Software Repositories
  6. Chose the respective NVIDIA repository and mark it 'disabled' - don't delete it as it will return enabled the next time the repositories are synced with the server.

Uninstalling the proprietary drivers will restore the previous X configuration file /etc/X11/xorg.conf if one existed. If the hardware has changed in the mean time it may be necessary to manually edit this file.


Zypper

 # zypper rm <x11-video-nvidiaG04 or x11-video-nvidiaG05 or nvidia-video-G06>

If that doesn't delete all the packages you can find the other names with

 # zypper se -ir NVIDIA

or

 # zypper lr
 # zypper se -ir <the repo number>

Also, the installer for the NVIDIA driver might have added nouveau to the blocklist; to be able to run the modesetting DDX driver or nouveau DDX driver again make sure there are no files containing the words blacklist nouveau at /etc/modprobe.d/, as the installer might fail to remove these.

After uninstalling the packages, you might need to recreate the initrd by running:

 # dracut -f

Automatically Accept License

Whenever nonfree drivers get installed or updated the user by default has to manually accept the licenses in order to update. This is not an issue unless you want to automate updating your system on distributions such as MicroOS. Where the auto updater will stop working whenever zypper needs you to manually agree to the license of the nvidia driver updates. In these cases you can get Zypper to autoaccept proprietary licenses by going to `/etc/zypp/zypper.conf` and set

autoAgreeWithLicense = yes

and then run `sudo dracut -f`.

Troubleshooting

  • https://en.opensuse.org/SDB:NVIDIA_troubleshooting
  • If your computer freezes before the login screen after installing the propietary drivers and you are using GDM (usually the case if you are using GNOME), try adding WaylandEnable=false in /etc/gdm/custom.conf. This will disable the GNOME Wayland session as an option during login. If you want Wayland to still be enabled, run the command below and reboot.
 # sudo ln -sfv /dev/null /etc/udev/rules.d/61-gdm.rules
  • KDE may not work with Wayland protocol.
  • You can verify the driver was actually loaded by running lsmod | grep nvidia in the terminal. The output should be like:
nvidia_drm             57344  2
nvidia_modeset       1187840  3 nvidia_drm
nvidia_uvm           1110016  0
nvidia              19771392  81 nvidia_uvm,nvidia_modeset
drm_kms_helper        229376  2 nvidia_drm,i915
drm                   544768  13 drm_kms_helper,nvidia_drm,i915

The numbers in the middle column do not need to be the same. If the driver is loaded the problem relies elsewhere, since that means it was installed successfully.

  • As stated before in this guide, if you are using secure boot make sure you accept the MOK, else the module won't load. One way to know see if secure boot could be blocking the module is looking at the output of dmesg and search for warnings like the following:
Lockdown: modprobe: unsigned module loading is restricted; see man kernel_lockdown.7
modprobe: ERROR: could not insert 'nvidia': Required key not available


See also

Optimus

Users on hardware configurations with NVIDIA Optimus (usually the case on laptops) are advised to read SDB: NVIDIA SUSE Prime. Offloading to the dedicated GPU is possible using the instructions at [1]

CUDA

Developers and users involved in High Performance Computing applications may want to install CUDA libraries. Additional instructions are provided at the CUDA Toolkit Documentation and download links at NVIDIA Developer

External links