The new Ubuntu release is here and as usual it comes with nouveau kernel module for your NVIDIA GPU. Probably this driver is good for everyday office use, but if you like to play games you will need the proprietary driver from NVIDIA for sure! Here are the steps to install the official drivers from NVIDIA with the help of the unofficial community driven repository “Graphics Drivers” team. This is Personal Package Archives (PPA) repository!
DKMS is used for building the NVIDIA kernel module when a new kernel is installed. So you do not have to worry if you update your kernel.
Be careful as it is stated in the repository:
Important: The contents of Personal Package Archives are not checked or monitored. You install software from them at your own risk.
and
You can update your system with unsupported packages from this untrusted PPA by adding …
Still till now no major problems in this repository from its creation and if you just have a home computer and you are a novice in Ubuntu (linux) world you can use this approach of installing NVIDIA proprietary drivers. There is another way of installing the NVIDIA driver from an official source and we are going to cover it soon (coming soon).
STEP 1) Update your system.
Always do this step before installing new software or repositories!
myuser@srv:~$ sudo apt update -y
STEP 2) Add the new repository, which has the nvidia proprietary driver – ppa:graphics-drivers/ppa
myuser@srv:~$ sudo add-apt-repository -y ppa:graphics-drivers/ppa Hit:1 http://gb.archive.ubuntu.com/ubuntu bionic InRelease Get:2 http://security.ubuntu.com/ubuntu bionic-security InRelease [83.2 kB] Get:3 http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu bionic InRelease [21.3 kB] Hit:4 http://gb.archive.ubuntu.com/ubuntu bionic-updates InRelease Get:5 http://gb.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB] Get:6 http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu bionic/main amd64 Packages [14.1 kB] Get:7 http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu bionic/main i386 Packages [13.1 kB] Get:8 http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu bionic/main Translation-en [4644 B] Fetched 211 kB in 1s (302 kB/s) Reading package lists... Done myuser@srv:~$
STEP 3) Update and install the nvidia driver
As you can see we use a tool for installing drivers under Ubuntu:
ubuntu-drivers
which is part of this package “ubuntu-drivers-common” and it should be installed by default if missing just install it with apt (look below for more information).
myuser@srv:~$ sudo apt -y update Hit:1 http://gb.archive.ubuntu.com/ubuntu bionic InRelease Hit:2 http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu bionic InRelease Get:3 http://security.ubuntu.com/ubuntu bionic-security InRelease [83.2 kB] Hit:4 http://gb.archive.ubuntu.com/ubuntu bionic-updates InRelease Get:5 http://gb.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB] Fetched 158 kB in 1s (273 kB/s) Reading package lists... Done Building dependency tree Reading state information... Done myuser@srv:~$ sudo ubuntu-drivers autoinstall Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: build-essential dkms dpkg-dev fakeroot g++ g++-7 gcc gcc-7 gcc-8-base:i386 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan4 libatomic1 libbsd0:i386 libc-dev-bin libc6:i386 libc6-dev libcilkrts5 libdrm-amdgpu1:i386 libdrm-intel1:i386 libdrm-nouveau2:i386 libdrm-radeon1:i386 libdrm2:i386 libedit2:i386 libelf1:i386 libexpat1:i386 libfakeroot libffi6:i386 libgcc-7-dev libgcc1:i386 libgl1:i386 libgl1-mesa-dri:i386 libglapi-mesa:i386 libglvnd0:i386 libglx-mesa0:i386 libglx0:i386 libitm1 libllvm6.0:i386 liblsan0 libmpx2 libnvidia-cfg1-396 libnvidia-common-396 libnvidia-compute-396 libnvidia-compute-396:i386 libnvidia-decode-396 libnvidia-decode-396:i386 libnvidia-encode-396 libnvidia-encode-396:i386 libnvidia-fbc1-396 libnvidia-fbc1-396:i386 libnvidia-gl-396 libnvidia-gl-396:i386 libnvidia-ifr1-396 libnvidia-ifr1-396:i386 libpciaccess0:i386 libquadmath0 libsensors4:i386 libstdc++-7-dev libstdc++6:i386 libtinfo5:i386 libtsan0 libubsan0 libvdpau1 libx11-6:i386 libx11-xcb1:i386 libxau6:i386 libxcb-dri2-0:i386 libxcb-dri3-0:i386 libxcb-glx0:i386 libxcb-present0:i386 libxcb-sync1:i386 libxcb1:i386 libxdamage1:i386 libxdmcp6:i386 libxext6:i386 libxfixes3:i386 libxnvctrl0 libxshmfence1:i386 libxxf86vm1:i386 linux-libc-dev make manpages-dev mesa-vdpau-drivers nvidia-compute-utils-396 nvidia-dkms-396 nvidia-kernel-common-396 nvidia-kernel-source-396 nvidia-prime nvidia-settings nvidia-utils-396 pkg-config screen-resolution-extra vdpau-driver-all xserver-xorg-video-nvidia-396 zlib1g:i386 Suggested packages: menu debian-keyring g++-multilib g++-7-multilib gcc-7-doc libstdc++6-7-dbg gcc-multilib autoconf automake libtool flex bison gcc-doc gcc-7-multilib gcc-7-locales libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan4-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libmpx2-dbg libquadmath0-dbg glibc-doc:i386 locales:i386 glibc-doc lm-sensors:i386 libstdc++-7-doc make-doc libvdpau-va-gl1 nvidia-vdpau-driver nvidia-legacy-340xx-vdpau-driver The following NEW packages will be installed: build-essential dkms dpkg-dev fakeroot g++ g++-7 gcc gcc-7 gcc-8-base:i386 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan4 libatomic1 libbsd0:i386 libc-dev-bin libc6:i386 libc6-dev libcilkrts5 libdrm-amdgpu1:i386 libdrm-intel1:i386 libdrm-nouveau2:i386 libdrm-radeon1:i386 libdrm2:i386 libedit2:i386 libelf1:i386 libexpat1:i386 libfakeroot libffi6:i386 libgcc-7-dev libgcc1:i386 libgl1:i386 libgl1-mesa-dri:i386 libglapi-mesa:i386 libglvnd0:i386 libglx-mesa0:i386 libglx0:i386 libitm1 libllvm6.0:i386 liblsan0 libmpx2 libnvidia-cfg1-396 libnvidia-common-396 libnvidia-compute-396 libnvidia-compute-396:i386 libnvidia-decode-396 libnvidia-decode-396:i386 libnvidia-encode-396 libnvidia-encode-396:i386 libnvidia-fbc1-396 libnvidia-fbc1-396:i386 libnvidia-gl-396 libnvidia-gl-396:i386 libnvidia-ifr1-396 libnvidia-ifr1-396:i386 libpciaccess0:i386 libquadmath0 libsensors4:i386 libstdc++-7-dev libstdc++6:i386 libtinfo5:i386 libtsan0 libubsan0 libvdpau1 libx11-6:i386 libx11-xcb1:i386 libxau6:i386 libxcb-dri2-0:i386 libxcb-dri3-0:i386 libxcb-glx0:i386 libxcb-present0:i386 libxcb-sync1:i386 libxcb1:i386 libxdamage1:i386 libxdmcp6:i386 libxext6:i386 libxfixes3:i386 libxnvctrl0 libxshmfence1:i386 libxxf86vm1:i386 linux-libc-dev make manpages-dev mesa-vdpau-drivers nvidia-compute-utils-396 nvidia-dkms-396 nvidia-driver-396 nvidia-kernel-common-396 nvidia-kernel-source-396 nvidia-prime nvidia-settings nvidia-utils-396 pkg-config screen-resolution-extra vdpau-driver-all xserver-xorg-video-nvidia-396 zlib1g:i386 0 upgraded, 97 newly installed, 0 to remove and 22 not upgraded. Need to get 145 MB of archives. After this operation, 743 MB of additional disk space will be used. Get:1 http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu bionic/main amd64 libnvidia-cfg1-396 amd64 396.24.10-0ubuntu0~gpu18.04.1 [71.7 kB] .... .... myuser@srv:~$ sudo reboot
As you can see the nvidia 396 driver is going to be installed in our system. We included part of the output – the packages, which will be installed. When the setup is ready reboot your system to load the newly installed driver.
NVIDIA proprietary driver information
myuser@srv:~$ dmesg|grep -i nvidia [ 1.414268] nvidia: loading out-of-tree module taints kernel. [ 1.414273] nvidia: module license 'NVIDIA' taints kernel. [ 1.632334] nvidia: module verification failed: signature and/or required key missing - tainting kernel [ 1.639698] nvidia-nvlink: Nvlink Core is being initialized, major device number 236 [ 1.640031] nvidia 0000:0a:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=io+mem [ 1.640146] NVRM: loading NVIDIA UNIX x86_64 Kernel Module 396.24.10 Tue Jul 10 10:00:18 PDT 2018 (using threaded interrupts) [ 1.647029] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms 396.24.10 Tue Jul 10 08:53:56 PDT 2018 [ 1.648372] [drm] [nvidia-drm] [GPU ID 0x00000a00] Loading driver [ 1.648373] [drm] Initialized nvidia-drm 0.0.0 20160202 for 0000:0a:00.0 on minor 0 [ 37.086767] nvidia-uvm: Loaded the UVM driver in 8 mode, major device number 511 [ 37.761570] caller os_map_kernel_space.part.7+0xda/0x120 [nvidia] mapping multiple BARs [ 38.532918] input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:03.1/0000:0a:00.1/sound/card0/input16 [ 38.532960] input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:03.1/0000:0a:00.1/sound/card0/input17 [ 38.532996] input: HDA NVidia HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:03.1/0000:0a:00.1/sound/card0/input18 [ 38.533028] input: HDA NVidia HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:03.1/0000:0a:00.1/sound/card0/input19 [ 40.851562] caller os_map_kernel_space.part.7+0xda/0x120 [nvidia] mapping multiple BARs [ 41.205592] nvidia-modeset: Allocated GPU:0 (GPU-3bad60bf-8ff7-4cba-8b51-a931299a56d8) @ PCI:0000:0a:00.0 myuser@srv:~$ nvidia-smi Mon Jul 16 15:32:06 2018 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 396.24.10 Driver Version: 396.24.10 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 GeForce GTX 108... Off | 00000000:0A:00.0 On | N/A | | 0% 53C P0 69W / 275W | 271MiB / 11173MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 2143 G /usr/lib/xorg/Xorg 18MiB | | 0 2193 G /usr/bin/gnome-shell 13MiB | | 0 3593 G /usr/lib/xorg/Xorg 108MiB | | 0 3695 G /usr/bin/gnome-shell 123MiB | | 0 5052 G nvidia-settings 3MiB | +-----------------------------------------------------------------------------+
nouveau driver and vainfo information
myuser@srv:~$ lspci|grep -i nvidia 0a:00.0 VGA compatible controller: NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (rev a1) 0a:00.1 Audio device: NVIDIA Corporation GP102 HDMI Audio Controller (rev a1) myuser@srv:~$ dmesg|grep -i nvidia [ 1.617118] nouveau 0000:0a:00.0: NVIDIA GP102 (132000a1) [ 40.077131] input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:03.1/0000:0a:00.1/sound/card0/input16 [ 40.077194] input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:03.1/0000:0a:00.1/sound/card0/input17 [ 40.077234] input: HDA NVidia HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:03.1/0000:0a:00.1/sound/card0/input18 [ 40.077282] input: HDA NVidia HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:03.1/0000:0a:00.1/sound/card0/input19 myuser@srv:~$ sudo apt -y install vainfo mesa-utils myuser@srv:~$ vainfo libva info: VA-API version 1.1.0 libva info: va_getDriverName() returns 0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/nouveau_drv_video.so libva info: Found init function __vaDriverInit_1_1 libva info: va_openDriver() returns 0 vainfo: VA-API version: 1.1 (libva 2.1.0) vainfo: Driver version: mesa gallium vaapi vainfo: Supported profile and entrypoints VAProfileNone : VAEntrypointVideoProc
Troubleshooting – missing “ubuntu-drivers” in your system just install it with:
myuser@srv:~$ sudo apt install -y ubuntu-drivers-common
2 thoughts on “Install NVIDIA proprietary drivers on Ubuntu 18.0 LTS (x86_64)”