About nVidia proprietary driver software

One thing I am sure of is that we keep having to explain this to nVidia users over, and over, and over. I feel we or I must be lacking something in our explanation.

NVidia the company requires that their proprietary driver software is kernel dependent. It is not fair for all Linux users to have to wait on a new kernel package because the patches for nVidia proprietary driver software are not available. IMO nVidia the company could choose to do this differently as many other companies do. This is a decision of nVidia the company. There is nothing, nadda, zero, that OpenMandriva can do about this.

This is not new, it has always been this way. nVidia the company and only them can change this. We hear reports that they may be in the process of doing this.

Recently OpenMandriva has had some discussion about how to handle this in the hope of better serving our users.

From the TC meeting 2023-01-11:

  • Agreed: There should always be working nvidia packages for current production and latest legacy drivers for kernels on released iso’s.
  • Agreed: For new kernel in testing repo after 3-4 days, publish if there’s a good reason why the nvidia packages haven’t been built for the new kernels, and after 7 days publish no matter what.

Bero made a first point about the fact that as long as the users install the nvidia driver first, they will always have the kernel version it was built against.
Then, a second point that the sequence “install all updates, then install nvidia driver” is known to not work properly.

This means if user installs OM ROME from iso then installs nvidia driver first then the kernel that goes with those drivers will be available until the next time that user installs new nvidia drivers. Then they will have the kernel that goes with the new drivers until the next time. Rinse and repeat. As far as I know this is not one bit different from how this worked in Linux 20 years ago.

What I remember from having nVidia hardware years ago was that the first thing to do after an install was to install the proprietary driver and reboot. This was both in Fedora and Mandriva in those ancient times. After that nvidia drivers will not install unless there is a kernel to go with them. If new nvidia drivers install then the new kernel will also be installed.

A reverse way of saying is this:

If you are using nvidia proprietary drivers and you install a new kernel and nvidia proprietary drivers are not installed at that time and you boot in to that new kernel you will not be using nvidia proprietary drivers.

Hi Ben,
in your explanation there is something not completely clear to me.
As far as I’ve understood you said the new kernel will update only after updating nVidia drivers because the two elements are paired. But I wonder if nVidia would upgrade to a new version if its paired kernel is still on and cannot be updated. It looks to me as it is a vicious circle.
Usually, as I realize there is a kernel update, I remove my nVidia drivers, update kernel and wait for new drivers to be ready. I do not know if there is some way to do some sort of dialog automation for managing this process in a way that the user is aware and can clearly choose what to do.
Or, maybe, I have simply not understood the whole point well.
Thank you for your time.

Hi Ben,

I suppose my question yesterday regarding Nvidia drivers prompted this post, and it’s handy to have it as a sticky post on the forum. Perhaps the question keeps arising as there is nothing in the OM Wiki regarding Nvidia and driver installation (that I can find, please point me to it if I have missed it).

I don’t understand in depth how other distros (Fedora / Arch / SUSE / Debian) use DKMS (Dynamic Kernel Module Support - Wikipedia) to allow kernels to be updated / changed and keep Nvidia driver support. I had a quick boot into the OM Live USB, and found that dkms isn’t installed, but is available in the repos as are a number of nvidia packages which look like they relate to dkms.

Is there any documentation you can point me to regarding nvidia on OM, or am I straying into unsupported territory with dkms?

Some (not exhaustive) bits here.

Edit: We do appreciate the feedback on this issue.

I do not believe that is said in my first post. As far as I know a new kernel will install if it is available.But the kernel that goes with existing nvidia drivers will not be removed. The nvidia driver packages will not without the kernel package they go with.

There are dkms packages available. This is supposed to automate this somehow. I do not write about these because I do not know if they work, have been tested, ect. I can not test this myself as I do not have nVidia hardware.

I do understand that many users find this issue difficult to understand. Repeated requests for people that do have nVidia hardware to write about this so far have not born results. OpenMandriva really needs for people with nVidia hardware to help us with testing and documentation about this. Remember that there are no paid employee’s. Everyone is donating their time and knowledge.

We do appreciate the feedback on this issue.

Not written in response to any individual. This has been brewing for a long time, the post was written mostly because of things I believe we cleared up in our TC-meeting the day before.

I believe your other questions are answered by @rugyada or in my post above to @Marco.

It looks like I’ve found something useful I can do for the OM community then, as quite a few of the things that I need to install are going to require loading the Nvidia drivers via dkms and without that I can’t make OM my daily driver. I’ll install the system, and see how I get on. Hopefully I have enough knowledge to get it working, and I’ll write up something detailing what I did, and how it works. :crossed_fingers:

Quick update:

Installed OM Rome
Updated packages - kernel is 6.1.4-desktop-1omv2301
Blacklist nouveau driver in /etc/default/grub ( add rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1)
Update grub
Reboot
Install kernel-desktop-devel
Install nvidia-dkms-kmod
Reboot
lsmod | grep nvidia shows kernel modules loaded successfully.
vkcube working, running on Selected GPU 1: NVIDIA GeForce GTX 1650 with Max-Q Design, type: DiscreteGpu

Looks okay so far, just basic test done, but not bad for an hours work. :slight_smile:

3 Likes

Whether any nvidia proprietary drivers work I can not verify because I do not have the hardware.

With ROME currently:

  1. ROME release was delayed to make sure we had working nvidia and nvidia-legacy drivers for the kernel version (6.1.1) on the iso’s.

  2. Kernel 6.1.2 was released and there were never any nvidia proprietary drivers made for it that I am aware of.

  3. The current kernel version in ROME is 6.1.4. There is nvidia driver package for this, currently I do not see nvidia-legacy packages.

So will OM try to have drivers for every kernel released?

Yes.

Is it possible that sometimes this does not happen?

Yes.

Should users that install nvidia proprietary driver pay attention when they upgrade their system?

Yes.

Does OpenMandriva need users to help with testing and documenting for nVidia proprietary drivers?

Yes.

What will it take for this to improve?

A developer that wants to work with nVidia’s closed source software to join OpenMandriva.

Summary: In a small all volunteer group if only one person gets ill, has a family or job emergency, ect. then the best of plans can go unfulfilled. Does not mean we like it or that no one cares.

OpenMandriva is designed to be a Community Linux distribution.

OpenMandriva has no employees. It consists of a small group of all volunteer, unpaid, part-time, developers and other contributors - and we all wish there were more of us.

As a Community distribution of Linux we depend on community members to help solve issues and make things better.

Things get done when someone in the OM Community volunteers and does it.

Hi Ben,
As a nVidia owner, I can say that unfortunately things are not the way you suppose.
If one has nVidia drivers on, the new Kernel will not be automatically installed. Since the non-free repository lacks the latest nVidia driver which is suitable for the new kernel, the upgrade process will skip installing it because of dependency issue.
Reverting to the Nouveau driver is not automatic. First one has to manually remove the nVidia drivers in use, reboot and only then one can upgrade the Kernel.

I did not realize that. Isn’t that what nvidia users want? If I understand what you are saying if you install nvidia drives then there will not be a kernel installed until there are nvidia drivers to go with that kernel.

Edit: However what you say would fit exactly what @bero said in the TC-meeting 01-11.

Bero made a first point about the fact that as long as the users install the nvidia driver first, they will always have the kernel version it was built against.
Then, a second point that the sequence “install all updates, then install nvidia driver” is known to not work properly.

@Marco maybe I am asking the wrong question? What do you expect of OpenMandriva regarding nVidia proprietary drivers?

Look Ben, I do really appreciate your efforts for managing nvidia drivers as best as you can.
Returning to your question, I expect that all kernels have their related nvidia drivers when they are available for upgrade.
For me it would be better to wait a couple of days and have my whole system regularly upgraded that turning those drivers on and off to pair them with any newcome kernel.
Years ago this aspect was not relevant because one could download the original drivers from nvidia web site and install them. But, as far as I know, this option has been made unavailable because of technical matters I do not know well. However it would solve many problems since it would totally move the management of the video drivers to the user only.

Another update:

Installed kernel-rc-desktop kernel-rc-desktop-devel
Nvidia modules compiled automatically on installation.
Reboot into 6.2.0-rc2
Nvidia drivers working as expected in vkcube.

So far, everything seems to be working fine with nvidia-dkms-kmod drivers for OM Rome, at least for me. :+1:

1 Like

If any of what I say in this thread sounds like I am arguing, that is not my intention. I am trying my best to explains how OM manages this, but I am handicapped by not having the hardware myself. And I am trying to understand what it is users seem to be complying about. I believe I am missing something.

A major part of this from OM contributor side is managing limited resources. How much can we do for the benefit of most users with 7 part time, unpaid, volunteer developers. Developers are very busy folks. When the day job calls they have to answer so that can slow down what they are working on with the OpenMandriva project. We are trying to do something to make things better for users with existing nVidia hardware. We realize we can not make this ideal.

You can install nvidia drivers from Unix Drivers | NVIDIA. Each driver package has a README with instructions.

You can be sure that I am not managing the nvidia driver packages, and that is a good thing for users. I do not have the knowledge for that.

As far as I know if a user installs OM nvidia packages there is nothing standing in the way of upgrading their system. The only consequence is that if there is a kernel update the kernel does not get updated. If that is not what is happening then I missed something.

One solution for this would be if the dkms packages of nvidia and nvidia-legacy work. I have not written about those because I do not know yet.

If user installs nvidia-dkms-kmod or nvidia-legacy-dkms-kmod does that mean every time a new kernel is installed that dkms builds the kernel modules? I want to be sure I understand this correctly.

We need to make a step by step tutorial to using these.

The current instructions are:

To install from Konsole (terminal):

$ sudo dnf --refresh in nvidia --enablerepo rolling-testing-x86_64-non-free
or
$ sudo dnf --refresh in nvidia-legacy --enablerepo rolling-testing-x86_64-non-free

If you installed ROME znver1 replace x86_64 with znver1.

So we need to add a section for installing with dkms. I make a guess:

Using dkms may be easier for most users as this will automatically build kernel modules when a new kernel is installed.

To use dkms:

$ sudo dnf --refresh in nvidia-dkms-kmod --enablerepo rolling-testing-x86_64-non-free
or
$ sudo dnf --refresh in nvidia-legacy-kmod-desktop --enablerepo rolling-testing-x86_64-non-free

If you installed ROME znver1 replace x86_64 with znver1.

Is any of that correct?

Yes, automatically.

Yes, but you also need to install kernel-desktop-devel (from whichever repo it resides) in order for the kernel modules to compile. With both kernel-desktop-devel and nvidia-dkms-kmod when you upgrade / switch kernels a scriptlet will run after the install. It’s very important to wait for that scriptlet to finish before rebooting, and should be noted. It can take many minutes to compile the modules, although on OM Rome the command prompt doesn’t return until it’s done, although it could appear that nothing is happening (without monitoring CPU usage).

As another update, I’ve tested DIRT 4 running via Steam, and the dGPU was detected in the options menu, and the game ran just fine on the dGPU.

Another benefit to using dkms for the nvidia drivers is for laptop users, where you can switch between Integrated graphics (to save battery as the dGPU is totally disabled or Hybrid graphics (iGPU handles the desktop, switches to dGPU for games / cuda) with just a log-out using Supergfxctl. I’ve just compiled and tested this on OM Rome, and it’s working perfectly, with my whole laptop idling at 5w power draw at the desktop in Integrated mode.

Hopefully I’ve explained that clearly! :slight_smile:

Dooh! or Woops! I forgot I can actually test installing these, just can not test if they work.

What I see here is kernel devel is pulled in as a dependency but currently it will also install kernel-rc-desktop and kernel-rc-desktop-devel. So for most users we will want to do it like this:

$ sudo dnf --refresh in nvidia-dkms-kmod --enablerepo rolling-x86_64-non-free --exclude=kernel-rc*
OpenMandriva Rolling - x86_64                                                                                                                                                                                                                 3.6 kB/s | 4.3 kB     00:01    
OpenMandriva Rolling - Unsupported - x86_64                                                                                                                                                                                                   3.7 kB/s | 4.3 kB     00:01    
OpenMandriva Rolling - Restricted - x86_64                                                                                                                                                                                                    3.8 kB/s | 4.3 kB     00:01    
OpenMandriva Rolling - Non-free - x86_64                                                                                                                                                                                                      3.8 kB/s | 4.2 kB     00:01    
Dependencies resolved.
==============================================================================================================================================================================================================================================================================
 Package                                                                              Architecture                                     Version                                                        Repository                                                         Size
==============================================================================================================================================================================================================================================================================
Installing:
 kernel-desktop                                                                       x86_64                                           6.1.4-1                                                        rolling-x86_64                                                    127 M
 nvidia-dkms-kmod                                                                     x86_64                                           525.78.01-1                                                    rolling-x86_64-non-free                                           117 M
Installing dependencies:
 binutils                                                                             x86_64                                           2.39-2                                                         rolling-x86_64                                                     10 M
 cross-i686-openmandriva-linux-gnu-libc                                               x86_64                                           6:2.36-3                                                       rolling-x86_64                                                     14 M
 dkms                                                                                 noarch                                           2.8.4-3                                                        rolling-x86_64                                                     63 k
 gcc                                                                                  x86_64                                           12.2.0-1                                                       rolling-x86_64                                                     36 M
 gcc-cpp                                                                              x86_64                                           12.2.0-1                                                       rolling-x86_64                                                    659 k
 glibc-devel                                                                          x86_64                                           6:2.36-3                                                       rolling-x86_64                                                    1.7 M
 kernel-desktop-devel                                                                 x86_64                                           6.1.4-1                                                        rolling-x86_64                                                     13 M
 kernel-headers                                                                       x86_64                                           1:6.1.4-1                                                      rolling-x86_64                                                    1.4 M
 lib64cc1_0                                                                           x86_64                                           12.2.0-1                                                       rolling-x86_64                                                     56 k
 lib64crypt-devel                                                                     x86_64                                           4.4.33-1                                                       rolling-x86_64                                                     36 k
 lib64elfutils-devel                                                                  x86_64                                           0.188-2                                                        rolling-x86_64                                                     55 k
 lib64gcc-devel                                                                       x86_64                                           12.2.0-1                                                       rolling-x86_64                                                    3.2 M
 lib64gdk-x11_2.0_0                                                                   x86_64                                           2.24.33-1                                                      rolling-x86_64                                                    267 k
 lib64gtk-x11_2.0_0                                                                   x86_64                                           2.24.33-1                                                      rolling-x86_64                                                    1.5 M
 lib64isl23                                                                           x86_64                                           0.24-3                                                         rolling-x86_64                                                    1.0 M
 lib64lzma-devel                                                                      x86_64                                           5.4.0-1                                                        rolling-x86_64                                                     51 k
 lib64mpc3                                                                            x86_64                                           1.3.1-1                                                        rolling-x86_64                                                     73 k
 lib64ncurses-devel                                                                   x86_64                                           6.4-0.20230107.1                                               rolling-x86_64                                                    1.2 M
 lib64nvidia-egl-wayland1                                                             x86_64                                           1.1.11-1                                                       rolling-x86_64                                                     33 k
 lib64z-devel                                                                         x86_64                                           2.0.6-11                                                       rolling-x86_64                                                     32 k
 lib64zstd-devel                                                                      x86_64                                           1.5.2-5                                                        rolling-x86_64                                                     53 k
 lld                                                                                  x86_64                                           15.0.6-2                                                       rolling-x86_64                                                    1.7 M
 make                                                                                 x86_64                                           1:4.4-1                                                        rolling-x86_64                                                    329 k
 nvidia                                                                               x86_64                                           525.78.01-1                                                    rolling-x86_64-non-free                                            61 M
 nvidia-kmod-common                                                                   noarch                                           525.78.01-1                                                    rolling-x86_64-non-free                                           8.2 k
 nvidia-kmod-desktop                                                                  x86_64                                           525.78.01-1_6.1.4_1                                            rolling-x86_64-non-free                                            53 M
 nvidia-kmod-headers                                                                  x86_64                                           525.78.01-1                                                    rolling-x86_64-non-free                                           117 M
 patch                                                                                x86_64                                           2.7.6-3                                                        rolling-x86_64                                                    116 k
Installing weak dependencies:
 cross-i686-openmandriva-linux-gnu-binutils                                           x86_64                                           2.39-2                                                         rolling-x86_64                                                    4.2 M
 cross-i686-openmandriva-linux-gnu-gcc                                                x86_64                                           12.2.0-1                                                       rolling-x86_64                                                     94 M

Transaction Summary
==============================================================================================================================================================================================================================================================================
Install  32 Packages

That will install and should be good for most user cases.

I didn’t get the kernel-rc as a dependancy for installing kernel-desktop-devel on my install. I installed the kernel-rc much later as a test to see if it worked on a kernel change (that was the only other kernel I could see apart from server as an option).

:man_shrugging: