Just a couple of months back I had bought a new laptop with Intel Core i5-6200U processor and NVIDIA GeForce 930M GPU. And being a first-timer on Linux, the first thing I tried to do was to install the latest graphic drivers by Intel and Nvidia, because that’s what most noobs do on Windows too.

So, being a Linux noobie at that time, I googled this thing and I ended up here (AskUbuntu being a reputed site, became my first choice among the search results). I did what the solution said, and ended up screwing my distro, it wouldn’t proceed past the login screen. I tried doing what a few other sites were telling, all ending up the same road. I tried using Ubuntu’s own Software Updater app too, ending on the same note again.

Until one day I discovered that I could directly install the Graphics Driver from the Terminal without any hassles (sigh -_-)


WHAT NOT TO DO

These are what I tried ending up on the same road (not going past the Login screen despite the correct credentials)

  • Trying to update via .run files provided by NVIDIA’s official site
  • Trying to update via Ubuntu’s very own Software and Updates app.
  • Having the following two repos and installing the driver via terminal
ppa:xorg-edgers/ppa
ppa:mamarley/nvidia
  • Updating the kernel (unless you install the drivers)


WHAT TO DO

Now it’s a really simple process on Ubuntu 16.04 (Doing this on 15.10 was hell, checked the X Server Log Files and didn’t get anything special to boast about)

Run these steps:


sudo apt update
  • As a root user, run this command:
lshw -numeric -C display

OR

lspci -vnn | grep VGA
  • The output will show your NVidia model number. Example:
def print_hi(name)
  puts "Hi, #{name}"
end
print_hi('Tom')
#=> prints 'Hi, Tom' to STDOUT.
*-display
  description: VGA compatible controller
  product: Sky Lake Integrated Graphics [8086:1916]
  vendor: Intel Corporation [8086]
  physical id: 2
  bus info: pci@0000:00:02.0
  version: 07
  width: 64 bits
  clock: 33MHz
  capabilities: pciexpress msi pm vga_controller bus_master cap_list rom
  configuration: driver=i915_bpo latency=0
  resources: irq:128 memory:dd000000-ddffffff memory:b0000000-bfffffff ioport:f000(size=64)
*-display
  description: 3D controller
  product: GM108M [GeForce 930M] [10DE:1346]
  vendor: NVIDIA Corporation [10DE]
  physical id: 0
  bus info: pci@0000:01:00.0
  version: a2
  width: 64 bits
  clock: 33MHz
  capabilities: pm msi pciexpress bus_master cap_list rom
  configuration: driver=nvidia latency=0
  resources: irq:131 memory:de000000-deffffff memory:c0000000-cfffffff memory:d0000000-d1ffffff    ioport:e000(size=128) memory:df000000-df07ffff
  • The Model used by my system is GeForce 930M. Next, we will find a correct NVIDIA driver within the Ubuntu repos using this info. But before that, navigate here and enter details. Example:

-After a successful search, take a note of the driver number

Version:  361.42
Release Date:  2016.3.30
Operating System:  Linux 64-bit
Language:  English (US)
File Size:  82.74 MB 

-Then install the corresponding driver

sudo apt-get install nvidia-361
...
Done.

nvidia_361:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.4.0-18-generic/updates/dkms/

nvidia_361_modeset.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.4.0-18-generic/updates/dkms/

nvidia_361_uvm.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.4.0-18-generic/updates/dkms/

depmod........

DKMS: install completed.
Setting up ocl-icd-libopencl1:amd64 (2.2.8-1) ...
Setting up nvidia-opencl-icd-361 (361.42-0ubuntu1) ...
Setting up bbswitch-dkms (0.8-3ubuntu1) ...
Loading new bbswitch-0.8 DKMS files...
First Installation: checking all kernels...
Building only for 4.4.0-18-generic
Building initial module for 4.4.0-18-generic
Done.

bbswitch:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.4.0-18-generic/updates/dkms/

depmod....

DKMS: install completed.
Setting up nvidia-prime (0.8.2) ...
Setting up screen-resolution-extra (0.17.1) ...
Setting up nvidia-settings (361.42-0ubuntu1) ...
Setting up vdpau-driver-all:amd64 (1.1.1-3ubuntu1) ...
Processing triggers for libc-bin (2.23-0ubuntu2) ...
Processing triggers for initramfs-tools (0.122ubuntu6) ...
update-initramfs: Generating /boot/initrd.img-4.4.0-18-generic
Processing triggers for ureadahead (0.100.0-19) ...
Processing triggers for dbus (1.10.6-1ubuntu3) ...
  • Now you can reboot your system. Then after loading Ubuntu, you can load the X Server Settings app:


CONCLUSION

So that’s it, folks. This is the safest and a recommended way to install NVIDIA drivers for Linux. And I repeat, do not install the drivers using the .run file.