I don’t even know if this should go into Open Source, but there are definitely machines that will not run X.org with the Nouveau driver with some of the newest NVidia cards, and this is the only realistic way I know to fix it.

The procedure for installing this thing is incredibly weird and error-prone on CentOS 7. I used to do this on Slackware without any effort at all. Oh well, I guess in software this is called progress.

After downloading the latest driver from the NVidia website (let’s say it’s in ~andrew/Downloads/NVIDIA-Linux-x86_64-352.55.run) you’ll need to make sure you have the latest update of the kernel from CentOS:

yum groupinstall "Development Tools"
yum install kernel-devel kernel-headers
yum -y upgrade kernel kernel-devel

And reboot. You’ll be doing a lot of rebooting for this procedure.

Now you’ll need to make sure that the Nouveau driver is not turned on automatically on boot (that’s the open source driver that works pretty well except for the current NVidia cards):

sudo mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
sudo dracut -v /boot/initramfs-$(uname -r).img $(uname -r)

And reboot. At this point when your system boots it won’t look as pretty as it used to, that’s ok.

Now you’ll need to kill X. Use the key combination Ctrl+Alt+F2 (or other F keys) to get to a command-line-only screen. Log in as root. Now run this command to turn off X:

systemctl stop gdm

And now you’re ready to install the driver (change the path and name of the installer to suit your user’s name and the version you downloaded):

~andrew/Downloads/NVIDIA-Linux-x86_64-352.55.run

Hopefully that will all work now. At the end it will ask if it should modify the X configuration file for you – tell it yes.

Now reboot again. Your system should now be using the NVidia driver. You can check in a terminal like this:

lsmod | grep nvidia

It should print something like this:

nvidia 8638316 43
drm 311588 3 nvidia
i2c_core 40325 3 drm,i2c_piix4,nvidia

Enjoy!