This is an old revision of the document!
Disabling the NVIDIA Nouveau driver in Ubuntu
sometimes you might want to use the most current nvidia binary driver rather than the nouveau driver package.. or you want no driver at all for whatever reason, so you need to disable the pre-installed nouveau driver..
note all commands below should be executed with root privileges, either prepend sudo
or become root first by running sudo su -
edit /etc/modprobe.d/blacklist-framebuffer.conf
make sure these two lines are in there:
blacklist nouveau blacklist nvidiafb
now uninstall the driver
sudo apt-get --purge remove xserver-xorg-video-nouveau
also recreate the initrd image as newer ubuntu releases load the nouveau module in there already.
update-initramfs -u
and reboot
after the reboot there should not be any nouveau related modules anymore. try
lsmod | grep nouveau
if it returns an empty result, you where successful :) if not, try adding these parameters in the file /etc/default/grub
to the GRUB_CMDLINE_LINUX_DEFAULT
parameter:
rdblacklist=nouveau nouveau.modeset=0
after that, you need to recreate the grub config by running
update-grub
and reboot once more. check again and if you still see nouveau modules, start googling ;) so far these steps have always worked on all ubuntu systems i had touched since 10.04
use a repository for a packaged driver
if you want to install the nvidia driver instead of the nouveau driver, you can probably save the above steps if you are happy with the “proprietary drivers” provided through ubuntu. however, these drivers might be rather old. if you need newer drivers, you can use a repository which provides them. and if you need to auto-install the latest nvidia driver, you can use a python utility to detect which driver package you need. Here is how this is done:
# install python pip to get pyvidia apt-get -y install python-pip pip install --upgrade pip pip install pyvidia pip install six add-apt-repository -y ppa:graphics-drivers/ppa apt-get -y update apt-get -y install nvidia-$(pyvidia)
what if nouveau is disabled, nvidia is installed but xorg logs "no device found"?
if you have a system that contains both nvidia and non-nvidia graphics adapters (for example an onboard intel GPU), you might need to tell xorg which PCI device to use in combination with the nvidia driver. to do that, run
nvidia-smi
on the target system. it will display a Bus-Id for your card that looks similar to this:
0000:01:00.0
you will need this id for your xorg.conf file. However, the values displayed through nvidia-smi are hex values, for xorg.conf you need decimal numbers. if you don't know how to convert from hex to dec you can just google for “0x31 = ? decimal” and it will show you the decimal conversion as a suggested result :) we are only interested in the 01:00.0 section, you can ignore the 0000: at the begining.
now edit your /etc/X11/xorg.conf
file and find the Device
Section. in this section add a BusID
parameter so that the entire section looks something like this:
Section "Device" Identifier "Device0" Driver "nvidia" BusID "PCI:1:0:0" EndSection
there might be more stuff in there, that's fine, just add the BusID line and keep the rest as is. what's important is, that you add the BusID in the Device section where the Driver is set to “nvidia” :)
now restart your xorg and it should find your card at the given PCI id
I want the opposite, Monitor on my onboard card, Nvidia card just for CUDA
in that case you should not need any xorg.conf file, as long as you only connect a screen to your onboard card. BUT, when you install your nvidia drivers, you should make sure that the nvidia glx extensions are not installed, otherwise you won't even have software accelerated glx support which means no more unity desktop and no mor glx applications. in order to do that, you need to pass an additional option to the nvidia installer:
./NVIDIA-Linux-x86_64-375.20.run --no-opengl-files
now your system will still use the standard xorg glx module and hence work with your onboard card.