Challenges with the addition of NVIDIA module

I generated Linux 3.7.1 by the approach “S.A.K.C. 2.78” on my openSUSE Tumbleweed system successfully. It uses a specific output directory.

Now I have got the challenge to add the driver for my NVIDIA graphics card there.

  • It seems that “tricks” are needed to point the corresponding installation script to an usable header file “version.h”.
  • If I try the following command
Sonne:~ # sh /home/elfring/geladen/NVIDIA-Linux-x86_64-304.64.run--kernel-source-path=/home/elfring/Projekte/Linux/linux-stable --kernel-output-path=/home/elfring/Projekte/Linux/Bau/kernel/linux-3.7.1 -a

in a console, I get still an error message.

If you are using a Linux 2.4 kernel, please make sure
you either have configured kernel sources matching your
kernel or the correct set of kernel headers installed
on your system.

If you are using a Linux 2.6 kernel, please make sure
you have configured kernel sources matching your kernel
installed on your system. If you specified a separate
output directory using either the "KBUILD_OUTPUT" or
the "O" KBUILD parameter, make sure to specify this
directory with the SYSOUT environment variable or with
the equivalent nvidia-installer command line option.

Depending on where and how the kernel sources (or the
kernel headers) were installed, you may need to specify
their location with the SYSSRC environment variable or
the equivalent nvidia-installer command line option.

Installation has failed.

For installing the nVIDIA driver, have a look at these two Blogs:

Installing the nVIDIA Video Driver the Hard Way: https://forums.opensuse.org/blogs/jdmcdaniel3/installing-nvidia-video-driver-hard-way-29/

AND

LNVHW - Load NVIDIA (driver the) Hard Way from runlevel 3 - Version 1.46: https://forums.opensuse.org/blogs/jdmcdaniel3/lnvhw-load-nvidia-driver-hard-way-runlevel-3-version-1-10-32/

Thank You,

I have read your articles already. I do not get the script “NVIDIA-Linux-x86_64-304.64.run” to work with a customised build output directory as expected so far. :frowning: Do I need to pass more command line parameters?

Am I wrong, or is a space char missing between “.run” and “–kernel” ?

I used “… .run --kernel-source-path=…”, of course. Otherwise, the command would have not been executed. (I’m sorry for this little parameter confusion.)

After you download lnvhw, you must edit the script as root (there is a single line you must edit) and tell it where you are downloading the driver files. Since you run the script as root, you can’t just say look at the home download folder when it was downloaded as a normal user. You can use the following bash script to edit any text file owned by root.

SYSEdit - System File Editor - Version 1.50: https://forums.opensuse.org/blogs/jdmcdaniel3/sysedit-system-file-editor-version-1-00-60/

Thank You,

I could adjust the variable “nVidia_folder” in your script. But I do not want to answer all questions from the script “NVIDIA-Linux-x86_64-304.64.run” interactively. I would prefer to use command line parameters here.

Are there any more chances for the needed configuration with a script like “NVIDIA-Linux-x86_64-304.64.run” if a different output directory is used and the selected kernel source files are not stored under the folder “/usr/src” in my use case?

It seems that “tricks” are needed to point the corresponding installation script to an usable header file “version.h”.

Would you like to share any more experiences about the software development for the cooperation of the NVIDIA module with recent kernels?:wink:

So if you are trying to use kernel 3.8, there is a need for a patch, but not with kernel 3.7 I have found. You can read about kernel 3.8 here and the required patch.

https://forums.opensuse.org/english/get-technical-help-here/pre-release-beta/481690-linux-kernel-3-8-rcx-has-been-released-test-post-your-comments-here.html

I might also add that the lnvhw script can patch the driver files for you if you save the patch as NVIDIA*.patch where you use what every name you like in place of *. Since the bash script is an open book to its function, you are free to modify as you desire.

I would like to say that I spend more and more time in Linux using the built-in nouveau open source driver which is WAY BETTER than it has ever been. And I encourage everyone using kernel 3.7 or higher to give the built-in driver a try.

Kernel 3.7 is in the latest openSUSE 12.2 Beta 1 right now: software.opensuse.org: Download openSUSE 12.3 Beta 1

Thank You,

Can your scripts adjust the environment variables “SYSSRC” and “SYSOUT” or other corresponding command line options?

I would like to say that I spend more and more time in Linux using the built-in nouveau open source driver which is WAY BETTER than it has ever been.

I tried it out a few times. It seems that this driver let my graphic card fan spin faster (and therefore louder) and the texts are displayed by bigger fonts than it is needed.

If you have installed the Kernel Source files from YaST or you are using my SAKC bash script to compile your kernel, there is no need normally to specify the kernel source location. Since it is a bash script, one could add another option for these commands, but I have had no need to do so. You can find SAKC here: https://forums.opensuse.org/blogs/jdmcdaniel3/s-k-c-suse-automated-kernel-compiler-version-2-50-34/. The lnvhw bash script provides several built in command line options like -p or -K and the ability to enter your own entire command line. The reason I wrote it was to have a way to list all of the driver files I have downloaded, from which I may select and to feed in the most common install options. I simply don’t like to remember exact file names, or their locations and their load options. lnvhw solved that issue for me and I thus decided to provide it as a possible solution for other users. In the end, if you know better on what to do, then go for it I say.

Thank You,

I find that the NVIDIA module installation tools need an appropriate parameter for the source directory. How do you think also about consequences from a different setting for the variables “kernel_folder” and “compile_folder” in your script?

In the SAKC bash script, kernel_folder is where you download the kernel tarballs before they have been uncompressed. They would normally go into the folder $HOME/Downloads, but you can change their location if you wish. The compile_folder is where you want the extracted kernel source files to reside when they get compiled and the default is $HOME/Kernel. $HOME/Kernel folder will be created if it does not exist and you have the option to change its location. It is recommended that you edit and compile your kernel as a normal user and only elevate to root when it gets installed. During the install process, openSUSE creates a symlink from its normal location in /lib/modules/kernel-version/source pointing to /usr/scr/ to instead pointing into your $HOME/Kernel/Kernel-Version area. Root has no problem following this link and nor does the nVIDIA video driver when it gets installed.

Thank You,

I wonder still why the program “nvidia-installer” does not like to build the kernel module on my system. Do I overlook any configuration option?

So I do not use Tumbleweed, though I have not heard of a problem with it and the nVIDIA driver. I always say you should do these things before you compile a kernel or try to install the nVIDIA driver:

Open YaST / Software / Software Management - Select the View Button on the top left and pick Patterns. Now, you will see several Patterns listed and you want to select:

Development 
  
[X] Base Development 
[X] Linux Kernel Development 
[X] C/C++ Development 

Then Press the Accept button on the bottom right and allow these applications to install. I would have done this before doing an upgrade to Tumbleweed. When using Tumbleweed, you are NOT suppose to add in other repositories for KDE and such as you are getting the full swath of upgrades by Tumbleweed. Have a look back on these instructions: https://forums.opensuse.org/content/section/12-tumbleweed.html

Why not give us a look at your repos with the terminal command:

zypper repos

And copy the result in here in a code # for us to see. When software does not work in openSUSE, it is very often due to mixed application files, intended to work together, from different repositories. In the case of Tumbleweed, it is intended to be practically the sole source for files. If you don’t want to follow its advices, you need to go back to the standard openSUSE version. It is the main reason I do not use Tumbleweed myself. I can obtain the latest of anything I wish to use like the kernel or the KDE desktop without going full head into Tumbleweed. Either you are in and in to stay, following all of its guidelines or you are out and you need to stay out of using Tumbleweed. I take my own advice in this matter.

Thank You,

The package “304.64_k3.4.6_2.10-21.1” fails also to install the desired module(s) on my system.

Now, you will see several Patterns listed and you want to select:

Yesterday the development tools generated Linux 3.7.3 for my configuration successfully.

When using Tumbleweed, you are NOT suppose to add in other repositories for KDE …

I dare to try out a different software mixture. :wink:

When software does not work in openSUSE, it is very often due to mixed application files, intended to work together, from different repositories.

I assume that the script “kernel/conftest.sh” (from “NVIDIA-Linux-x86_64-304.64.run”) might still contain more open issues. Unfortunately, my current graphics processor was moved to the hardware support category “legacy”.

Now that you mention package nVIDIA driver version 304.64 I begin to see a possible problem. I would have to go back through the kernel releases, but the bottom line is to use the most resent kernel, you got to use the most recent nVIDIA driver which is at 310.19. You can find links to it here:

Installing the nVIDIA Video Driver the Hard Way: https://forums.opensuse.org/blogs/jdmcdaniel3/installing-nvidia-video-driver-hard-way-29/

nVIDIA’s sole solution to changing kernel versions is to upgrade to the latest nVIDIA driver OR do not use the latest kernel OR you need to stick with the open source driver and do not load the nVIDIA driver. And even while I have wrote bash scripts to load the nVIDIA driver, my main PC uses open source and it works fine. If you have an older nVIDIA chipset that requires an older driver and you don’t want to use open source, then you can’t use Tumbleweed. I can go back in time and see what patches existed for the nVIDIA driver, but patches seldom went past a single kernel upgrade. For instance, there is a patch for nVIDIA driver 310.19 to work with kernel 3.8, but it will be about the only patch to come out as the model of kernels and drivers just keeps moving forward.

Thank You,

The package “xf86-video-nv 2.1.20-9.5” provides a mostly working graphic display for my desktop environment “KDE”. But an application like “empathy” misses some features here. :frowning:

Xlib:  extension "GLX" missing on display ":0".
libEGL warning: DRI2: failed to authenticate

(empathy:18305): Clutter-CRITICAL **: Unable to initialize Clutter: The OpenGL version could not be determined

You may need a

make cloneconfig && make prepare

to prepare the sources. The fact that version.h could not be found to me is an indicator things aren’t in place.