NVIDIA-560.35.03

Introduction to NVIDIA

The NVIDIA proprietary driver contains firmware, kernel drivers, userland drivers pertaining to OpenGL, Vulkan, and hardware acceleration, and provides useful utilites.

[Note]

Note

Though NVIDIA-565.57.01 exists, the open drivers do not build for 6.11 kernels. The proprietary ones build, but the process requires extracting the .run and applying a sed. For this reason, 560.35.03 is the version GLFS currently documents.

[Note]

Note

If you are doing multilib, install the x86_64 driver as it includes 32-bit libraries along with the 64-bit libraries.

NVIDIA Dependencies

Required

Xorg Libraries

Recommended

Installation of NVIDIA

[Note]

Note

Make sure to execute the following command when an Xorg instance isn't running, or else the driver will complain and quit. Alternatively, you can pass --allow-installation-with-running-driver --no-x-check to override NVIDIA's warnings. This is not recommended as it skips sanity checks, but is generally safe. If you do this, you should reboot afterwards.

Along with that, be sure to have the kernel source that you have compiled the kernel you are currently using with. Make sure the source tree has not been moved, or else you will have to specify the kernel source tree directory using --kernel-source-path=<path>. If you don't have the source tree on your system, the driver will fail to install.

For a complete list of flags, pass -A.

First enable XFree86 DRI support in the kernel and recompile if necessary.

Device Drivers --->
  Graphics support --->
    <*/M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
                                                                      ...  [DRM]

Install x86_64 NVIDIA by running the following commands as the root user:

sh NVIDIA-Linux-x86_64-560.35.03.run \
  --no-systemd          \
  --no-abi-note         \
  --install-compat32-libs

If you are only interested in the 32-bit driver, install x86 NVIDIA by running the following commands as the root user:

sh NVIDIA-Linux-x86-390.157.run

And just follow the prompts. It will first ask if you wish to install the NVIDIA Proprietary or MIT/GPL kernel modules. If you have the NVIDIA Grace Hopper or NVIDIA Blackwell cards, you must choose the MIT/GPL option. If you have a Turing, Ampere, Ada Lovelace, or Hopper card, it is recommended to now choose the MIT/GPL option. If you have a Maxwell, Pascal, or Volta card, choose NVIDIA Proprietary. If you are using both an older and newer card, but not the newest cards, go with NVIDIA Proprietary.

[Note]

Note

If you are having trouble installing the driver, it might be because it has issues with the Ncurses library. Pass --silent to the above command for your architecture as it may solve the issue. Also pass -M <kernel_type> where <kernel_type> can be open or proprietary. For the notice above, NVIDIA Proprietary is proprietary and MIT/GPL is open.

[Important]

Important

When you update the kernel, you will also need to reinstall the NVIDIA driver.

This is because there is glue, although thin, when kernel modules are built, and when most of the kernel modules are built with the current kernel version and get updated when the kernel also gets updated, this glue doesn't matter too much with 1st party modules (modules in the kernel source tree). However, when it comes to 3rd party modules, they aren't updated when the kernel updates, or have the newer kernel in mind, so this glue breaks, leading to broken kernel modules. This also applies if you stay on the same kernel verion but change some options, this can also break the glue.

Be sure that when you reinstall the driver, make sure you are using the new kernel and have the kernel source you built from. Otherwise the driver will fail to install.

Now you can skip most of the packages in this subsection. The ones you should install now in this subsection are: mako-1.3.6, libdrm-2.4.123, libva-2.22.0, libvdpau-1.5, libvdpau-va-gl-0.4.2, Cython-3.0.11, libyaml-0.2.5, PyYAML-6.0.2, and Mesa-24.2.7. LLVM will not be necessary for the rest of the packages in the book, but is recommended if you want to use Mesa's Nouveau down the road.

Command Explanations

--no-systemd: Disables systemd support.

--no-abi-note: Deletes a mostly useless note about a minimum kernel version for NVIDIA OpenGL libraries.

--install-compat32-libs: Enables the installation of 32-bit libraries.

Contents

Installed Programs: nvidia-bug-report.sh, nvidia-cuda-mps-control, nvidia-cuda-mps-server, nvidia-debugdump, nvidia-installer, nvidia-modprobe, nvidia-ngx-updater, nvidia-persistenced, nvidia-powerd, nvidia-settings, nvidia-sleep.sh, nvidia-smi, nvidia-uninstall, and nvidia-xconfig
Installed Firmware: gsp_ga10x.bin and gsp_tu10x.bin (firmware is for the x86_64 driver)
Installed Libraries: libEGL_nvidia.so, libGLESv1_CM_nvidia.so, libGLESv2_nvidia.so, libGLX_nvidia.so, libcuda.so, libcudadebugger.so, libglxserver_nvidia.so, libnvcuvid.so, libnvidia-allocator.so, libnvidia-api.so, libnvidia-cfg.so, libnvidia-egl-gbm.so, libnvidia-egl-wayland.so, libnvidia-eglcore.so, libnvidia-encode.so, libnvidia-fbc.so, libnvidia-glcore.so, libnvidia-glsi.so, libnvidia-glvkspirv.so, libnvidia-gpucomp.so, libnvidia-gtk2.so, libnvidia-gtk3.so, libnvidia-ml.so, libnvidia-ngx.so, libnvidia-nvvm.so, libnvidia-opencl.so, libnvidia-opticalflow.so, libnvidia-pkcs11-openssl3.so, libnvidia-pkcs11.so, libnvidia-ptxjitcompiler.so, libnvidia-rtcore.so, libnvidia-tls.so, libnvidia-wayland-client.so, libnvoptix.so, for Wine-9.21 (_nvngx.dll and nvngx.dll), libvdpau_nvidia.so, nvidia-drm_gbm.so, and nvidia_drv.so
Installed Directories: /usr/lib/firmware/nvidia, /usr/lib/gbm, /usr/lib/modprobe.d, /usr/lib/modules-load.d, /usr/lib/nvidia/wine, /usr/lib/nvidia/xorg, if on Systemd (/usr/lib/systemd/system-sleep and /usr/lib/systemd/system), /usr/lib/sysusers.d, /usr/lib/vdpau, /usr/lib/xorg/modules/drivers, /usr/share/X11/xorg.conf.d, if on Systemd (/usr/share/dbus-1/system.d), /usr/share/egl/egl_external_platform.d, /usr/share/nvidia, /etc/share/vulkan/icd.d, /etc/share/vulkan/implicit_layer.d, and /usr/src/debug/nvidia-utils

Short Descriptions

nvidia-bug-report.sh

is the NVIDIA bug reporting shell script.

nvidia-cuda-mps-control

allows multiple CUDA processes to share a single GPU context

nvidia-cuda-mps-server

creates the shared GPU context, manages the clients, and issues work to the GPU on behalf of the clients

nvidia-debugdump

collects the internal GPU state

nvidia-installer

installs, upgrades, and uninstalls the NVIDIA driver (running the runfile directly is recommended)

nvidia-modprobe

creates Linux device files and loads the NVIDIA kernel module

nvidia-ngx-updater

updates NGX features without requiring a full application update

nvidia-persistenced

maintains the persistent driver state

nvidia-powerd

provides support for the NVIDIA Dynamic Boost feature

nvidia-settings

a GUI application relying on GTK-3 that allows tweaking settings like resolution and refresh rate

nvidia-sleep.sh

interacts with the /proc/driver/nvidia/suspend interface

nvidia-smi

provides montioring information for Tesla and select Quadro devices

nvidia-uninstall

installs, upgrades, and uninstalls the NVIDIA driver (running the runfile directly is recommended)

nvidia-xconfig

manipulates X11 configuration files to allow the NVIDIA driver to be used when starting X11

libEGL_nvidia.so

provides NVIDIA implementations of OpenGL functionality

libGLESv1_CM_nvidia.so

provides the API entry points for all OpenGL ES and EGL function calls

libGLESv2_nvidia.so

provides the API entry points for all OpenGL ES and EGL function calls

libGLX_nvidia.so

provides NVIDIA implementations of OpenGL functionality

libcuda.so

provides runtime support for CUDA

libcudadebugger.so

provides support for debugging CUDA applications

libglxserver_nvidia.so

is the NVIDIA GLX extension module for X11

libnvcuvid.so

provides an interface to hardware video decoding capabilities

libnvidia-allocator.so

is used internally by other driver components

libnvidia-api.so

provides an interface for managing properties of GPUs.

libnvidia-cfg.so

is used internally by other driver components

libnvidia-egl-gbm.so

provides GBM EGL application support

libnvidia-egl-wayland.so

provides client-side Wayland EGL application support

libnvidia-eglcore.so

is used internally by other driver components

libnvidia-encode.so

provides an interface to video encoder hardware

libnvidia-fbc.so

provides an interface to capture and optionally encode the framebuffer of an X11 server screen

libnvidia-glcore.so

is used internally by other driver components

libnvidia-glsi.so

is used internally by other driver components

libnvidia-glvkspirv.so

is used internally by other driver components

libnvidia-gpucomp.so

is used internally by other driver components

libnvidia-gtk2.so

provides the nvidia-settings user interface

libnvidia-gtk3.so

provides the nvidia-settings user interface

libnvidia-ml.so

provides a monitoring and management API

libnvidia-ngx.so

provides functions for AI features

libnvidia-nvvm.so

provides JIT link-time-optimization for the CUDA driver

libnvidia-opencl.so

provides NVIDIA's implementation of the OpenCL API standard

libnvidia-opticalflow.so

can be used for hardware-accelerated computation of optical flow vectors and stereo disparity values

libnvidia-pkcs11-openssl3.so

is a cryptography library wrapper aiming to provide cryptography operations when the GPU and driver are operating in Confidential Compute mode

libnvidia-pkcs11.so

is a cryptography library wrapper aiming to provide cryptography operations when the GPU and driver are operating in Confidential Compute mode

libnvidia-ptxjitcompiler.so

is a JIT compiler which compiles PTX into GPU machine code and is used by the CUDA driver

libnvidia-rtcore.so

is used internally by other driver components

libnvidia-tls.so

provides thread local storage support for the NVIDIA OpenGL libraries

libnvidia-wayland-client.so

is required for nvidia-settings on Wayland

libnvoptix.so

implements the OptiX ray tracing engine

libvdpau_nvidia.so

provides the NVIDIA implementation for the VDPAU library

_nvngx.dll

provides DLSS support for use with Wine

nvngx.dll

provides DLSS support for use with Proton

nvidia-drm_gbm.so

is the NVIDIA implementation of GBM

nvidia_drv.so

is the NVIDIA X11 driver