.. _nvidia: Install NVIDIA Drivers ###################### NVIDIA is a manufacture of graphics processing units (GPU), also known as graphics cards. NVIDIA devices on Linux have two popular device driver options: the opensource drivers from the `nouveau project`_ or the proprietary drivers published by NVIDIA. The nouveau drivers are built into the |CL-ATTR| kernel and are loaded automatically at system boot if a compatible card is detected. These instructions show how to use the proprietary NVIDIA drivers which require a manual installation. .. note:: Software installed outside of :ref:`swupd ` is not updated with |CL| updates and must be updated and maintained manually. .. contents:: :local: :depth: 2 Prerequisites ************* * A |CL| system with a desktop installed * A NVIDIA device installed Install DKMS ************ The :ref:`Dynamic Kernel Module System (DKMS) ` allows the NVIDIA kernel modules to be automatically integrated when kernel updates occur in |CL|. Install the appropriate DKMS bundle using the instructions below: .. note:: The Long Term Support (LTS) kernel variant is more likely to remain compatible between updates with NVIDIA drivers. .. include:: ../guides/maintenance/kernel-modules-dkms.rst :start-after: kernel-modules-dkms-install-begin: :end-before: kernel-modules-dkms-install-end: Download and install the NVIDIA Linux Driver ******************************************** Download the NVIDIA Linux Driver ================================ #. Identify the model of NVIDIA GPU that is installed. .. code-block:: bash sudo lshw -C display #. Go to the `NVIDIA Driver Downloads website`_ . Search for and download the appropriate driver based on the model of NVIDIA GPU you have with *Linux 64-bit* selected as the Operating System . #. Open a terminal and navigate to where the :file:`NVIDIA-Linux-x86_64-.run` file was saved. In this example, it was saved in the Downloads folder. .. code-block:: bash cd ~/Downloads/ #. Make the :file:`NVIDIA-Linux-x86_64-.run` file executable. .. code-block:: bash chmod +x :file:`NVIDIA-Linux-x86_64-.run` Disable the nouveau Driver ========================== The proprietary NVIDIA driver is incompatible with the nouveau driver and needs to be disabled before installation can continue. #. Disable the nouveau driver by creating a blacklist file under :file:`/etc/modprobe.d` and reboot. .. code-block:: bash sudo mkdir /etc/modprobe.d printf "blacklist nouveau \noptions nouveau modeset=0 \n" | sudo tee --append /etc/modprobe.d/disable-nouveau.conf #. Reboot the system and log back in. It is normal for the graphical environment to not start with no NVIDIA driver loaded. Install the NVIDIA Linux Driver =============================== The NVIDIA installer will be directed to install files under :file:`/opt/nvidia` as much as possible to keep its contents isolated from the rest of the |CL| files under :file:`/usr`. #. A terminal not running on */dev/tty1* is useful to view uninterrupted installation progress. Switch to a secondary virtual terminal by pushing :command:`CTRL + ALT + F2` or remotely login over SSH. #. Configure the dynamic linker to look for and cache shared libraries under :file:`/opt/nvidia/lib` and :file:`/opt/nvidia/lib32` where the NVIDIA installer will place libraries. .. code-block:: bash echo "include /etc/ld.so.conf.d/*.conf" | sudo tee --append /etc/ld.so.conf sudo mkdir /etc/ld.so.conf.d printf "/opt/nvidia/lib \n/opt/nvidia/lib32 \n" | sudo tee --append /etc/ld.so.conf.d/nvidia.conf #. Navigate into the directory where the NVIDIA installer was downloaded. .. code-block:: bash cd ~/Downloads/ #. Run the installer with the advanced options below. .. code-block:: bash sudo ./NVIDIA-Linux-x86_64-.run \ --utility-prefix=/opt/nvidia \ --opengl-prefix=/opt/nvidia \ --compat32-prefix=/opt/nvidia \ --compat32-libdir=lib32 \ --x-prefix=/opt/nvidia \ --documentation-prefix=/opt/nvidia \ --no-precompiled-interface \ --no-nvidia-modprobe \ --no-distro-scripts \ --force-libglx-indirect \ --dkms \ --silent #. The graphical interface may automatically start after the NVIDIA driver is loaded. Return to the working terminal and log back in if necessary. #. Validate the nvidia kernel modules are loaded. .. code-block:: bash lsmod | grep ^nvidia #. Run a |CL| system verification to restore files that the NVIDIA installer likely deleted. .. code-block:: bash sudo swupd verify --quick --fix --bundles=lib-opengl .. note:: The NVIDIA software places some files under the :file:`/usr` subdirectory which are not managed by |CL| and conflict with the |CL| stateless design. Although a limited version of :command:`swupd verify --fix` is ran above, other uses of the :command:`swupd verify --fix` command should be avoided with the proprietary NVIDIA drivers installed. Uninstalling the NVIDIA driver ****************************** The NVIDIA drivers and associated software can be uninstalled and nouveau driver restored by: #. Remove the previously created file :file:`/etc/modprobe.d` that prevents nouveau from loading. .. code-block:: bash sudo rm /etc/modprobe.d/disable-nouveau.conf #. Run the :command:`sudo /opt/nvidia/bin/nvidia-uninstall` #. Follow the prompts on the screen and reboot the system. Debugging NVIDIA driver installation ************************************ * The NVIDIA driver places installer and uninstaller logs under :file:`/var/log/nvidia-install` and :file:`/var/log/nvidia-uninstall`. * :file:`NVIDIA-Linux-x86_64-.run --advanced-options` shows many parameters to control installation behavior. * :file:`NVIDIA-Linux-x86_64-.run --extract-only` extracts installation files into a directory named :file:`NVIDIA-Linux-x86_64-`. Additional resources ******************** * `Why aren't the NVIDIA Linux drivers open source? `_ * `Where can I get support for NVIDIA Linux drivers? `_ * `NVIDIA Accelerated Linux Graphics Driver Installation Guides `_ .. _`nouveau project`: https://nouveau.freedesktop.org/wiki/ .. _`NVIDIA Driver Downloads website`: https://www.nvidia.com/download/index.aspx