Article: Nvidia with openSUSE Tumbleweed (AKA Install Nvidia the Hard Way)

Introduction: Tumbleweed users can’t use RPMs from the official openSUSE repositories for Nvidia kernel module drivers because the RPMs are matched to the static kernel in the underlying static distro. The kernels in Tumbleweed are constantly changing, so drivers for Nvidia have to be reinstalled every time the kernel changes.

BTW, you don’t have to be a Tumbleweed user to use this method; it works in standard openSUSE too.

This article is for openSUSE 11.4 and higher, and for users who are a bit confused by the cryptic nature of the wiki edition. Advanced users will find it quicker to use the wiki edition provided they skirt the steps that are wrong for openSUSE versions 11.4+.

**Get Ready Step 1: Gather some background information about your video card and your current drivers. **

Have a look at your current status with this command:

/usr/sbin/hwinfo --gfxcard

Typically you’ll get a listing like this if you are using the nouveau drivers:

john@opensuse114:~> /usr/sbin/hwinfo --gfxcard
27: PCI 100.0: 0300 VGA compatible controller (VGA)             
  [Created at pci.318]
  Unique ID: VCu0.VDLXvujblSC
  Parent ID: vSkL.p_D9a9Gh3ZD
  SysFS ID: /devices/pci0000:00/0000:00:01.0/0000:01:00.0
  SysFS BusID: 0000:01:00.0
  Hardware Class: graphics card
  **Model: "nVidia G98 [GeForce 8400 GS]"**
  Vendor: pci 0x10de "nVidia Corporation"
  Device: pci 0x06e4 "G98 [GeForce 8400 GS]"
  SubVendor: pci 0x19da "ZOTAC International (MCO) Ltd."
  SubDevice: pci 0x9044 
  Revision: 0xa1
  **Driver: "nouveau"**
  Driver Modules: "drm"
  Memory Range: 0xfd000000-0xfdffffff (rw,non-prefetchable)
  Memory Range: 0xd0000000-0xdfffffff (ro,non-prefetchable)
  Memory Range: 0xfa000000-0xfbffffff (rw,non-prefetchable)
  I/O Ports: 0xdc80-0xdcff (rw)
  Memory Range: 0xfea00000-0xfea1ffff (ro,non-prefetchable,disabled)
  IRQ: 16 (13 events)
  I/O Ports: 0x3c0-0x3df (rw)
  Module Alias: "pci:v000010DEd000006E4sv000019DAsd00009044bc03sc00i00"
  Driver Info #0:
    Driver Status: nvidiafb is not active
    Driver Activation Cmd: "modprobe nvidiafb"
  Driver Info #1:
    **Driver Status: nouveau is active**
    Driver Activation Cmd: "modprobe nouveau"
  Config Status: cfg=no, avail=yes, need=no, active=unknown
  Attached to: #9 (PCI bridge)

I’ve highlighted the card type (e.g. GeForce 8400GS) and the active driver (nouveau). If you have the Nvidia community repositories for openSUSE installed, then you’ll have the nvidia drivers active instead of the nouveau drivers and your listing will reflect that the active driver is “nvidia” as demonstrated on this link](http://forums.opensuse.org/content/attachments/803d1308445517-hwinfo.txt.html).

If you want to see whether you have the Static RPMs for Nvidia drivers installed, run this command: rpm -qa | grep nvidia, and if they’re installed you’ll see a response like this:

john@opensuse114:~> rpm -qa | grep nvidia
nvidia-gfxG02-kmp-desktop-270.41.06_k2.6.37.1_1.2-4.1.x86_64
nvidia-computeG02-270.41.06-5.1.x86_64
x11-video-nvidiaG02-270.41.06-5.1.x86_64

{NB FYI when you do install these RPMs in openSUSE 11.4+, a file called nvidia.conf is created in directory /etc/modprobe.d/ and it contains the line blacklist nouveau. This blocks the nouveau driver. So if you added something to 50-blacklist.conf, take it out, it’s a mistake.}

Get Ready Step 2: Get rid of the RPM-based Nvidia driver installation

You’re going to stop using your base distro’s Nvidia drivers (via RPMs) so if you have RPMs installed, remove them in Yast → Software → Software management → search term: nvidia. Remove the three RPMs listed above in the code box. Be careful not to uninstall the nouveau driver. Switch to Yast → Software → Repositories and remove the Community repo for Nvidia. Then reboot and you will regress to the nouveau drivers.

{NB FYI: when you uninstall these three Nvidia RPMs in Yast, the process automatically takes out the nouveau blacklist file (/etc/modprobe.d/nvidia.conf) so that “nouveau” returns. If you can’t get nouveau when you reboot, check that the file nvidia.conf is gone from directory modprobe.d and also that you haven’t blacklisted nouveau at the bottom of the file “50-blacklist.conf” (by mistake lol).}

Get Ready Step 3: Install prerequisite RPMs Install these RPMs ==> gcc, make, kernel-source

Get Ready Step 4: Download the new driver. You’ll need the information you got when you ran the command /usr/sbin/hwinfo --gfxcard so you can pick the correct driver from the Nvidia site http://www.nvidia.com/Download/index.aspx?lang=en-us. The driver package will be named similar to this: NVIDIA-Linux-x86_64-295.33.run. You’ll be installing it as root after booting to a console subsequent to every kernel upgrade, so you should place it in the directory /root. Use a superuser file browser to do that (or the commands mkdir and mv).

Get Ready Step 5: Blacklist the nouveau driver. You should switch out nouveau by blacklisting it before you install the new Nvidia drivers from the “run” file.

Look in the directory /etc/modprobe.d/ for a file named variously: “nvidia.conf” or “nvidia-installer-disable-nouveau.conf” or similar. It must contain these two lines:

**blacklist nouveau
options nouveau modeset=0**

If it exists but contains only the first line, fix it, add the second line. If an appropriately named file doesn’t exist, make a file called “nvidia.conf” and put the two lines in it.

After you do that, the GUI will continue to run with nouveau until you install the Nvidia “run” file. Once that’s in place, the blacklisting becomes effective.

Now Install the Driver from the “run” File

Reboot and select to boot to runlevel 3, do this: boot to the grub menu, press the numeral key 3, then Enter and you’ll boot to runlevel 3

At the console login prompt, log in as root.

Open the “run” file as follows: if you put the run file in directory /root as I advised, then type this in the console:

**sh /root/NVIDIA**

and then press the Tab key. The “sh” function will locate the file and complete the command, changing it to look like this:

**sh /root/NVIDIA-Linux-x86_64-295.33.run**

Then you press the Enter key and the script will run.

Here’s the normal progress:

  • licence dialogue is displayed => accept
  • simply observe and wait through dialogue for building scripts and modules
  • if asked whether to install 32-bit compatibility OpenGL libs ==> select yes
  • simply observe and wait through searches for conflicting files
  • simply observe and wait through installation of driver dialogue
  • when asked if you want to install and let run the nvidia-xconfig utility, 99% of people should ==> select no
  • when told that installation is complete ==> select OK

You will return to the console prompt. Simply enter init 5 to complete the process and log in to your user account in GUI mode.

That’s all folks

Note: if you need to adjust the display (e.g twin screens, e.g. resolution) run this command after you log in: nvidia-settings

swerdna 19 June 2011; last update 5 May 2012

P.S. What about uninstalling the driver:

sh /root/NVIDIA-Linux-x86_64-295.33.run --uninstall

That is a very good article swerdna. For anyone that is going to install the nVIDIA driver the hard way, it is possible to automate that installation using a bash script file. It is posted in message #12 here:

LNVHW - Load NVIDIA (driver the) Hard Way from runlevel 3 - Page 2

The bash script is called lnvhw, you run it from a terminal session after you have reached run level 3 as suggested in swerdna’s article. If you have more than one nVIDIA driver version in your downloads folder, you will get a menu of video drivers to select from. Please give it a try…

Thank You,

[QUOTE=;][/QUOTE]
Good stuff! I saw a typo in there. Step one has this command “rpm -qa | grep fglrx” should be “rpm -qa | grep nvidia”. Your sample code has it correct though.

[QUOTE=;][/QUOTE]
What if i’m without a /etc/modprobe.d/nvidia.conf file ?
Shall i create one with only 2 lines in it (1) in order to blacklist nouveau before installing the nvidia driver from init 3 ?

*(1) *

 
blacklist nouveau 
options nouveau modeset=0

No, that is not the correct file. You need to edit the file /etc/modprobe.d/50-blacklist.conf and add the line **blacklist nouveau **at the end say. In KDE you would do an Alt-F2 or menu Run Command and enter:

kdesu kwrite /etc/modprobe.d/50-blacklist.conf

And then in the file add the line that says:


blacklist nouveau

Save the file and reboot for it to take effect.

Thank You,

This is not what i understood : “because of old habits you might have the line blacklist nouveau in file /etc/modprobe.d/50-blacklist.conf. It really ought to go in file /etc/modprobe.d/nvidia.conf, so I recomment that you check those files out and make it happen.”

Also what about the modeset option is i only add a “blacklist nouveau” line in /etc/modprobe.d/50-blacklist.conf ?

This is not what i understood : “because of old habits you might have the line blacklist nouveau in file /etc/modprobe.d/50-blacklist.conf. It really ought to go in file /etc/modprobe.d/nvidia.conf, so I recomment that you check those files out and make it happen.”

Also what about the modeset option is i only add a “blacklist nouveau” line in /etc/modprobe.d/50-blacklist.conf ?

I do not normally find it necessary to blacklist the nouveau driver. I ALWAYS add in the** nomodeset** command to your kernel load options in the grub menu.lst file for the normal load of openSUSE (this command already exists in the fail-safe openSUSE load). It appears that when you install the nVIDIA driver the hard way that in addition, the need to Edit the file /etc/sysconfig/kernel and set *NO_KMS_IN_INITRD = yes *is performed automatically and so you don’t need to do this either. If I boot with nomodeset set and then add a (temporary) 3, to switch to runlevel 3, I can then install the propritary nVIDIA video driver and it always then works like a champ. So I load this driver all of the time including after kernel update and it just works fine for me.

Thank You,

For future readers: jdmcdaniel is mistaken in advising to put the nouveau blacklisting into /etc/modprobe.d/50-blacklist.conf. The correct location is /etc/modprobe.d/nvidia.conf

Yes that was the old instructions. Here is what nVIDIA says at present: Nvidia Installer HOWTO for openSUSE users

  1. Run the following terminal commands

echo “blacklist nouveau” > /etc/modprobe.d/nvidia.conf

# You can use the following code in a script to set NO_KMS_IN_INITRD="yes"
 
# recreate initrd without KMS, if the use of KMS is enabled in initrd  to 

if grep -q NO_KMS_IN_INITRD=“no” /etc/sysconfig/kernel; then
sed -i ‘s/NO_KMS_IN_INITRD.*/NO_KMS_IN_INITRD=“yes”/g’ /etc/sysconfig/kernel
mkinitrd
fi

  1. Reboot your machine.
  1. Use the nvidia installer for <present version, which is 285.05.09 now>

sh NVIDIA-Linux-x86-XXX.XX.XX.run -q

IMPORTANT: You need to recompile and install the nvidia kernel module after each kernel update.

sh NVIDIA-Linux-x86-XXX.XX.XX .run -K

You can do the following instead of the script-let nVIDIA posted to do the same thing…

YaST -> /etc/sysconfig Editor -> Kernel -> NO_KMS_IN_INITRD = yes.

Thank You,

Excellent, clear article.

I notice on going to the Nvidia site Drivers - Download NVIDIA Drivers that as soon as you select Quadro, all the other selections go empty. Does this process work for Quadro cards?

I’m aware that Quadros can be reflashed to the equivalent GeForce, but that would not help if the Quadro-specific facilities are needed 9in my case that would be 30bit (10bit per component) color for wide-gamut IPS displays.

If anyone is running Tumbleweed on a laptop with Quadro 1000M or 2000M video card and could confirm this works, that would be helpful.

The driver downloads can be visited through a browser on ftp://download.nvidia.com/XFree86/Linux-x86_64/ . Enter a version folder > 200.00 and click on the README link. This will open a next folder, look for the file “index.html” and you’ll see a simple webpage. At the bottom you’ll find a link to the AppendixA. Supported Nvidia… Go through the list and you’ll find out whether your card is supported. This one here says it does : ftp://download.nvidia.com/XFree86/Linux-x86_64/290.10/README/supportedchips.html AFAIK that’s the latest stable driver package.

When I switch to Quadro at the nVIDIA site, I still get the same driver, but you would have to specify the complete model name and number to know for sure. Without knowing the spicifics, it appears to work the same.

Thank You,

BTW, you don’t have to be a Tumbleweed user to use this method;](http://venturebeatprofiles.com/company/profile/cyber-world-uk-ltd) it works in standard openSUSE too.](http://www.utalkmarketing.com/Hubs/HubHome.aspx?HubID=100366)You can do the following instead of the script-let nVIDIA posted to do the same thing.](http://www.stumbleupon.com/stumbler/jenifferhomes)…](http://www.redgage.com/cyberworldukltd)

YaST -> /etc/sysconfig Editor -> Kernel -> NO_KMS_IN_INITRD = yes.

Thank You,

BTW, you don’t have to be a Tumbleweed user to use this method;](http://venturebeatprofiles.com/company/profile/cyber-world-uk-ltd) it works in standard openSUSE too.](http://www.utalkmarketing.com/Hubs/HubHome.aspx?HubID=100366)You can do the following instead of the script-let nVIDIA posted to do the same thing.](http://www.stumbleupon.com/stumbler/jenifferhomes)…](http://www.redgage.com/cyberworldukltd)

YaST -> /etc/sysconfig Editor -> Kernel -> NO_KMS_IN_INITRD = yes.

Thank You,

I am a bit bafflled. Why all this trouble and and not simply add the Nvidia opensuse repository?

ftp://download.nvidia.com/opensuse/12.2/

Because this driver works only with the kernel version from 12.2. Tumbleweed updates the kernel frequently with newer versions.

See: https://en.opensuse.org/Portal:Tumbleweed

At this point there is no guarantee to have all additional modules available in the stable release like for Vmware or Virtualbox. And while the Packman Tumbleweed Essential repository attempts to deliver them there is no guarantee they will always succeed due to the incompatibilities with the quickly advancing Linux Kernel. The problems with proprietary Graphics drivers are similar and there is no guarantee they will work tomorrow, even if they do today. If you don’t know how to compile your own additional kernel modules and you don’t wish to learn or keep a very close eye on what is being updated, please don’t use Tumbleweed.

…]

If you have 3rd party kernel modules, Greg KH (the primary Tumbleweed maintainer) STRONGLY suggests that you not use Tumbleweed. Seriously, it’s not worth the pain and extra work, unless you really want to do it.

you mean the rpms from this repository are tagged to a specific kernel version? But IIRC, these rpms do need kernel sources and gcc to install, which means (i suppose) that they can compile against several kernel versions … or am I missing something?

Yup, you’re missing something. The rpms have precompiled kernel modules for the stock and updated kernels for an openSUSE version. The downloadable .run files need the kernel sources and some development tools, running the .run builds the kernel module for the running kernel (running kernel and kernel source version should be the same).

Since Tumbleweed has a much faster update cycle re. the kernel, packages are not available. Unless … for NVIDIA Optimus, using bumblebee, these packages use dkms (dynamic kernel mode)

What are the disadvantages of dkms? I know it from Debian (and debian-based) distros and their Nvidia drivers. There must be a reason why Nvidia does not use it for openSUSE packages.

dkms for openSUSE and nVIDIA have two problems in openSUSE 12.1 & 12.2 but consider I do not use Tumbleweed.

  1. dkms does not work without a modification in standard openSUSE and systemd. Have a look here to get dkms to work in openSUSE 12.1 & 12.2: https://forums.opensuse.org/blogs/jdmcdaniel3/dkms-systemd-how-get-dynamic-kernel-module-support-work-opensuse-12-1-100/

  2. the nVIDIA driver does not work with dkms even when dkms is working because it requires FULL source code and not just the headers you get when install the kernel source in openSUSE. You can get full source if you compile your own kernel. Look at these categories:

SANDI to install nVIDIA driver using dkms: https://forums.opensuse.org/blogs/jdmcdaniel3/s-n-d-i-suse-automated-nvidia-driver-installer-version-1-00-103/

SACK to compile your own kernel: https://forums.opensuse.org/blogs/jdmcdaniel3/s-k-c-suse-automated-kernel-compiler-version-2-50-34/

Again, I do not use Tumbleweed but have worked a lot with dkms and the nVIDIA driver.

Thank You,