How to Install NVIDIA Drivers using Debian Repository

Nvidia Corporation is an American technology company which specializes at designing graphics processing units (GPUs) for the gaming, cryptocurrency and a system on a chip unit (SoCs) for the mobile computing and automotive market. For those in possession of PC running Debian operating system and have Nvidia graphics card, you need to install the drivers for optimized hardware acceleration of OpenGL applications via a direct-rendering X server. This article I will show you how to install the latest version of NVIDIA driver using the Debian 9 repositories.

To identify your system NVIDIA GPU codename of the installed video card, use lspci command.

$ lspci | grep -E "VGA|3D"
01:00.0 3D controller: NVIDIA Corporation GK107M [GeForce  GT 750M] (rev a1)

This will tell you whether you have Nvidia graphics card on your system.

Installing Nvidia Drivers

After identifying, we can now head to the installation section of graphics driver on Debian 9. Note that multiple precompiled driver versions are available for Debian 9 "Stretch". As of stretch Debian release, you don't need nvidia-xconfig anymore, and a xorg.conf file is not needed either in the most situation. Everything should just work out of the box.

Since the drivers are available on the  "contrib" and "non-free" repository components. Add them to your  /etc/apt/sources.list file.

$ sudo su -
# echo "deb http://httpredir.debian.org/debian/ stretch main contrib non-free" >> /etc/apt/sources.list

Then update your cache index and do a system upgrade.

$ sudo apt-get update
$ sudo apt-get upgrade && sudo apt-get dist-upgrade
$ sudo reboot

After all above is successfully executed, install the appropriate linux-headers and kernel module packages:

$ sudo apt install linux-headers-$(uname -r|sed 's/[^-]*-[^-]*-//') nvidia-driver nvidia-kernel-dkms

This will install the nvidia-driver package. DKMS will build the nvidia module for your system, via the nvidia-kernel-dkms package.

For the nouveau Xorg display driver to be blacklisted, restart your system. Nvidia driver will be loaded fine after.

$ sudo reboot

Get Nvidia driver version

Use nvidia-smi command which reads temps directly from the GPU without the need to use X at all. For this, run:

$ sudo nvidia-smi

It will give you information about NVIDIA driver version. NVIDIA module should be properly loaded for this to work.

Get module version

If execution of the above command fails for any reason since NVIDIA module couldn't be loaded, you can always see NVIDIA version number by directly retrieving nvidia.ko module using the modinfo Linux command. The below command will check for NVIDIA driver version under your currently running kernel:

$ modinfo /usr/lib/modules/$(uname -r)/kernel/drivers/video/nvidia.ko | grep ^version

version: 390.77

Creating empty xorg.conf

For systems, you may need to remove xorg.conf file to Nvidia to work properly. Use the commands below for this.

$ sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.old
$ sudo touch /etc/X11/xorg.conf

And reboot the system.

Manually creating xorg.conf

If you need to modify your xorg.conf for Nvidia driver, a sample configuration is provided below.

~$ cat /etc/X11/xorg.conf
Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Unknown"
    HorizSync       30.0 - 80.0
    VertRefresh     55.0 - 75.0
    DisplaySize     400 225
    Modeline       "1920x1080_60.00"  172.80  1920 2040 2248 2576  1080 1081 1084 1118  -HSync +Vsync
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    BusID          "PCI:1:0:0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Viewport    0 0
        Depth       24
        Modes      "1920x1080_60.00"
    EndSubSection
EndSection

The configuration shown is for a 1920x1080 resolution. Key things to note.

  • Specify the correct HorizSync and VertRefresh

You can generate Modeline using:

$ gtf 1920 1080 60

Then add name Modeline in Modes. Restart Xorg server after changing it. A reboot of the system may be necessary as well.

Josphat Mutai 12:05 am

About Josphat Mutai

Red Hat Certified Engineer with more than 2 years experience managing critical Cloud Infrastructures and Services. Passionate about Technology and loves testing and reviewing gadgets and Open-source tools.

Author Archive Page

Have anything to say?

Your email address will not be published. Required fields are marked *

All comments are subject to moderation.