How to install the NVIDIA drivers on CentOS 8

The NVIDIA Driver is a program needed for your NVIDIA Graphics GPU to function with better performance. It communicates between your Linux operating system, in this case CentOS 8, and your hardware, the NVIDIA Graphics GPU. The NVIDIA drivers can be installed by using the bash command after stopping the GUI and disabling the nouveau driver by modifying the GRUB boot menu.

To install Nvidia driver on other Linux distributions, follow our Nvidia Linux Driver guide.

In this NVIDIA Drivers installation guide you will learn:

  • How to identify your NVIDIA graphic card model on your operating system.
  • Where to download the NVIDIA driver package for CentOS 8.
  • How to install prerequisites for a successful Nvidia Driver compilation and installation on CentOS 8.
  • How to disable the nouveau driver.
  • How to successfully install NVIDIA Drivers on your CentOS 8 Linux operating system.
Installed Nvidia drivers on CentOS 8 Linux GNOME Workstation

Installed Nvidia drivers on CentOS 8 Linux GNOME Workstation running graphic card benchmark.

Software Requirements and Conventions Used

Software Requirements and Linux Command Line Conventions
Criteria Requirements
Operating System CentOS 8
Software Existing Desktop installation such as GNOME.
Other Privileged access to your Linux system as root or via the sudo command.
Conventions # – requires given linux commands to be executed with root privileges either directly as a root user or by use of sudo command
$ – requires given linux commands to be executed as a regular non-privileged user

How to install the NVIDIA drivers on CentOS 8 Workstation step by step instructions



  1. Open up the terminal and identify your Nvidia graphic card model by executing:
    $ lspci -vnn | grep VGA
    01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] [10de:1c03] (rev a1) (prog-if 00 [VGA controller])
    
  2. Download the Nvidia driver package from nvidia.com using search criteria based on your Nvidia card model and the Linux operating system.
    Download an appropriate Nvidia driver for your VGA card.

    Download an appropriate Nvidia driver for your VGA card.

    Alternatively, if you know what you are doing you can download the driver directly from the Nvidia Linux driver list. Once ready you should end up with a file similar to the one shown below:

    $ ls NVIDIA-Linux-x86_64-*
    NVIDIA-Linux-x86_64-430.50.run
    
  3. Next, install package prerequisites for a successful Nvidia driver compilation and installation.
    # dnf groupinstall "Development Tools"
    # dnf install libglvnd-devel elfutils-libelf-devel
    
  4. Permanently disable the nouveau driver by modifying the GRUB boot menu:
    # grub2-editenv - set "$(grub2-editenv - list | grep kernelopts) nouveau.modeset=0"
    
    Disabling nouveau driver on CentOS 8.

    Disabling nouveau driver on CentOS 8.

  5. Reboot your CentOS 8 Desktop:
    WARNING
    Depending on your Nvidia VGA model your system might misbehave. At this stage be ready to get your hands dirty. After the reboot you may end up without GUI at all. Be sure that you have the SSH enabled on your system to be able login remotely or use CTRL+ALT+F2 to switch TTY console and continue with the installation.
    # reboot
    
  6. The Nvidia drivers must be installed while the Xorg server is stopped. Switch to the text mode by:
    #  systemctl isolate multi-user.target
    
  7. Install the Nvidia driver by executing the following command via TTY console or remote SSH login:
    NOTE
    ERROR: Unable to find the kernel source tree for the currently running kernel
    In case you receive the above error message during the execution of the below command, follow the kernel source instructions on how to install kernel source on CentOS / RHEL Linux system.
    # bash NVIDIA-Linux-x86_64-*
    

    When prompted answer YES to installation of NVIDIA’s 32-bit compatibility libraries, overwrite existing libglvnd files and automatic update of your X configuration file.

  8. Reboot your system one more time.

    In case after login your encounter black screen execute the below command and try login again:

    # systemctl restart systemd-logind
    

    Let us know if you have a more permanent solution to this issue by using the comments below.

    # reboot

    All done. The Nvidia driver should now be installed on your CentOS 8 Desktop. Reboot your system now, login and run nvidia-settings to further configure your Nvidia graphic card settings.



Troubleshooting

GDM on Xorg server does not start after user login and user ends up with black screen. The Xorg log contains the following or similar error messages:

[  3515.464] (II) systemd-logind: got pause for 13:68
[  3515.738] (II) systemd-logind: got resume for 13:64
[  3515.757] (II) NVIDIA(0): Setting mode "DFP-1:nvidia-auto-select"
[  3515.793] (II) NVIDIA(0): ACPI: failed to connect to the ACPI event daemon; the daemon
[  3515.793] (II) NVIDIA(0):     may not be running or the "AcpidSocketPath" X
[  3515.793] (II) NVIDIA(0):     configuration option may not be set correctly.  When the
[  3515.793] (II) NVIDIA(0):     ACPI event daemon is available, the NVIDIA X driver will
[  3515.793] (II) NVIDIA(0):     try to use it to receive ACPI event notifications.  For
[  3515.793] (II) NVIDIA(0):     details, please see the "ConnectToAcpid" and
[  3515.793] (II) NVIDIA(0):     "AcpidSocketPath" X configuration options in Appendix B: X
[  3515.793] (II) NVIDIA(0):     Config Options in the README.
[  3515.793] [dix] couldn't enable device 8
[  3515.793] (II) systemd-logind: got resume for 13:66
[  3515.793] [dix] couldn't enable device 6
[  3515.794] (II) systemd-logind: got resume for 13:65
[  3515.794] [dix] couldn't enable device 7
[  3515.794] (II) systemd-logind: got resume for 13:72
[  3515.794] [dix] couldn't enable device 14
[  3515.794] [dix] couldn't enable device 17
[  3515.794] (II) systemd-logind: got resume for 13:71
[  3515.794] [dix] couldn't enable device 13
[  3515.794] (II) systemd-logind: got resume for 13:67
[  3515.794] [dix] couldn't enable device 9
[  3515.794] (II) systemd-logind: got resume for 13:73
[  3515.794] [dix] couldn't enable device 15
[  3515.794] (II) systemd-logind: got resume for 13:69
[  3515.794] [dix] couldn't enable device 11
[  3515.794] [dix] couldn't enable device 16
[  3515.794] (II) systemd-logind: got resume for 13:70
[  3515.794] [dix] couldn't enable device 12
[  3515.794] (II) systemd-logind: got resume for 13:68
[  3515.794] [dix] couldn't enable device 10

Try restart the systemd’s systemd-logind service:

# systemctl restart systemd-logind