Nvidia driver, CUDA tools and libraries

nvidia-settings
Oh no, another Nvidia driver repository? Why?

This driver reflects my personal view for the way the driver should be packaged for Fedora and CentOS/RHEL. It’s somewhat different from ELRepo repositories for RHEL/CentOS and from RPMFusion packages for Fedora.

Repository installation

To install the repository on a supported Fedora distribution, run as root the following command:

dnf config-manager --add-repo=http://negativo17.org/repos/fedora-nvidia.repo

To install the repository on CentOS/RHEL:

yum-config-manager --add-repo=http://negativo17.org/repos/epel-nvidia.repo

Starting from Fedora 25, the Nvidia software packages are available for installation by default also in Gnome Software.

gnome-software-nvidia

Please note that the driver will show up only if your system matches one of the PCI ID supported by the driver. Otherwise, only the other Nvidia programs (mostly for CUDA development) will show up in the software center.

What’s different?

First of all the packaging is a lot simplified; more stuff is compiled from source, smaller packages and more options. This packages try to comply as maximum to the Fedora Packaging Guidelines; which means they have debuginfo packages, default Fedora’s GCC compile time options (where possible) and standard locations for binaries, data and docs.

What follows below, is a detailed explanation of all the “differences” from the various Nvidia driver packages that I was able to spot on the web and a detailed description on how to install components, etc.

Nvidia drivers

Packaging

  • nvidia-settings, nvidia-persistenced, nvidia-xconfig and nvidia-modprobe are compiled from source.
  • All RPM filters except for GL and OpenCL libraries have been removed, so there is no weird dependency option in the SPEC file. RPM pulls in all correct requirements on its own. This is to avoid pulling in the Nvidia drivers instead of the Mesa libraries or in place of the new open source OpenCL support that’s in Fedora.
  • Simplified packaging with much simpler and readable SPEC file.
  • Dependency on libva-vdpau-driver. So in Totem, or any other libVA supported application you can benefit from VDPAU acceleration.
  • Sources are generated with a script and inserted individually in the various packages; so it can be easily reproduced just by changing the version and rerunning the script.
  • nvidia-xconfig is not required on anything that uses the modular X.org directives, as it writes too much in the configuration file (keyboards, monitors, etc.) and the required entries should be written in separate configuration files under /etc/X11/xorg.conf.d. The package is still available as it’s required to speed up some configuration like multi-monitor setups with SLI Mosaic enabled from the command line, but not installed by default.
  • The NVIDIA OpenGL-based Framebuffer Capture (NvFBCOpenGL) libraries (NvFBC and NvIFR) are private APIs that are only available to NVIDIA approved partners for use in remote graphics scenarios (i.e. Steam In-Home Streaming hardware encoding); so they are packaged in another small package called nvidia-driver-NvFBCOpenGL.
  • The nvidia-settings package now builds the external libXNVCtrl.so library that can be used to control the graphic cards through the NV-CONTROL extension. This library updates the old and obsolete one in Fedora based on drivers version 165.
  • Starting from version 343.13, the nvidia-settings binary is compiled with GTK3 instead of GTK2 on Fedora and RHEL/CentOS 7+.
  • The driver can be installed separately from the nvidia-settings utility, so if you simply want a working driver and do not care about details, your experience should be as close as possible to the one with open source drivers.

Versioning

  • ELRepo ships 32 bit compatibility libraries in a separate package with x86_64 as the architecture and “32bit” in the name. 32 bit libraries should be like in RPMFusion, with an i686 package installable in parallel with the x86_64 one. There are no other packages in the distribution that are built for x86_64, with “32bit” in their name that contain i686 binaries (!), so Nvidia drivers should not be an exception. So no separate “32bit.x86_64” package for 32 bit libraries also on CentOS/RHEL; just install nvidia-driver-libs.i686.
  • Versions are not hidden; all packages have the same driver version.
  • No alternatives system, only the latest version which integrates CUDA support is available. For older releases nouveau works great; and anything below a GeForce 8xxx it’s in my opinion too low end to play anything modern. And Quake 3 and Doom 3 work greatly with nouveau, so that’s not a case!
  • The CentOS/RHEL repository contains the “Long Lived Branch version” where less changes occur; while Fedora repositories contains the “Short Lived Branch version”. Beta CentOS/RHEL and Fedora’s rawhide repositories will contain the “Beta Branch version”

CUDA support

  • CUDA libraries/tools for the driver are split into subpackages. There’s no need to install all the CUDA libraries and tools on a system that has only one adapter and is used for occasional gaming or for simple office use. This can save ~120 MB worth of installed libraries. nvidia-persistenced falls in this category as it’s not needed on a normal laptop or gaming system.
  • Complete packaged CUDA stack has been added for all supported distributions, all the packages provide/require/obsolete the relevant packages in the Nvidia CUDA repository; so you can enable this repository along with the official Nvidia CUDA one (x86_64 systems only).

Kernel modules

  • Multiple choice of kernel module packages; akmod (RPMFusion) for Fedora and binary kmod (Kernel ABI whitelists) for CentOS/RHEL. In addition to this, on both distributions dkms packages are available. This way all cases and personal preferences are covered for both distributions.
  • Starting of drivers version 331.17, the kernel module packages contain the main Nvidia kernel module (nvidia.ko) but also the Unified Memory kernel module.
  • Support for multiple kernel modules has been deprecated in recent driver versions (they are available up to 352.xx); but both akmod and dkms packages can be configured to build the additional modules instead of the single one, so you can still choose your preferred method.
  • Starting from Nvidia driver version 334.16, the Nvidia DDX driver for X can also rely on the nvidia-modprobe command in the system to create devices and set permissions, so the new optional package has been added.
  • The nvidia module has a soft dependency on the nvidia-uvm module, making sure the module is loaded when installing the nvidia-driver-cuda package, but making sure that these modules are not included in the initrd (thing that would happen with systemd configuration (module-s-load.d). UDev rules make sure the module has proper permissions.
  • On Fedora, the kernel modules are compressed with XZ, like all the other kernel modules.

Default configuration

  • Dracut options are depending on the distribution; so no more “vga=normal is an obsolete option” at boot. Each distribution gets its own specific GRUB options for booting.
  • 96 DPI is written in the default xorg.conf config file. Why? Gnome 3 by defaults hard-codes a 96×96 DPI resolution, most of the free drivers do (intel, nouveau, etc.) as the EDID is almost never reliable (please see the excellent Adam’s Jackson post where he explains this). As an example, if you install the Nvidia drivers on a RHEL/CentOS 6 laptop where you used to have nouveau installed (96 DPI hardcoded), the fonts gets 90% of the time supersize and ugly as Gnome 2 and the Nvidia driver do not hard-code 96 DPI like Gnome 3.
  • Make X.org NVIDIA Files section to be loaded latest in case there are other packages providing a custom Files section.
  • Starting from Fedora 21, all driver X.org configuration can be managed by simply adding/removing X.org configuration snippets in /etc/X11/xorg.conf.d.
  • Use new OutputClass directive on Fedora 21 X.org server 1.16 (and later) to load the driver and do not rely on an edited /etc/X11/xorg.conf file. This also removes editing of the xorg.conf file from the package scriptlets. This does not hardcode the 96 DPI resolution.
  • Add the IgnoreABI directive by default on Fedora rawhide builds.

Kernel modesetting and Wayland support

Kernel mode setting on the nvidia-drm module has been disabled by default for various reasons. First of all, Wayland support in the drivers require a patched Wayland which has been refused upstream, and then the driver itself does not expose an FB driver for the console, so you won’t see any difference in the terminal output, you will still be limited to VGA.

There is a proposal for sorting everything out at XDC 2016 for hardware vendors that require to expose extensions for the drivers.

The Wayland libraries are still included in the Fedora builds, as all the dependencies are there but they are not used. On CentOS/RHEL 7 packages, they are not included as this would result in missing dependencies.

Vulkan support

vulkan_500px_june16Vulkan is now part of Fedora, so on supported Fedora releases, the Vulkan loader and libraries can be installed and you do not need to do anything to enable support in the drivers. CentOS and Red Hat Enterprise Linux do not have Vulkan yet. I’m not sure if it’s worth installing it by default along with the drivers, though.

Distribution and Nvidia driver version support

Here is a rundown of Nvidia supported drivers and options split by distribution. Basically, CentOS/RHEL will always get a Long Lived branch release if possible, Fedora always a Short Lived branch release, and unreleased distributions will always get a Beta driver.

Operating systemel6 / el7f24 / f25f26
Driver branchLong LivedShort Lived
Long Lived
Beta
Short Lived
Long Lived
Driver version375.39378.13378.13
NVENC7.1.97.1.97.1.9
Architectures:

i686
x86_64
YesYesYes
Basic nvidia driver:

nvidia-driver
nvidia-driver-libs
nvidia-libXNVCtrl
YesYesYes
CUDA libraries and tools:

nvidia-driver-cuda
nvidia-driver-cuda-libs
nvidia-driver-NVML
nvidia-persistenced
YesYesYes
OpenGL Framebuffer Capture:

nvidia-driver-NvFBCOpenGL
YesYesYes
Nvidia tools:

nvidia-healthmon (x86_64)
nvidia-validation-suite (x86_64)
nvidia-modprobe
nvidia-settings
nvidia-xconfig

YesYesYes
Binary kernel
modules (kABI):

kmod-nvidia
YesNoNo
DKMS kernel
modules:

dkms-nvidia
YesYesYes
aKMOD kernel
modules:

akmod-nvidia
NoYesYes
32 bit compatibility on x86_64:

nvidia-libXNVCtrl
nvidia-driver-libs
nvidia-driver-cuda-libs
nvidia-driver-NVML
YesYesYes
Development

nvidia-driver-devel
nvenc
nvenc-samples
libvdpau-devel
YesYesYes
GLVND libraries

libglvnd
libglvnd-egl
libglvnd-gles
libglvnd-glx
libglvnd-opengl
libglvnd-core-devel
libglvnd-devel
YesYesYes
VDPAU libraries

libvdpau
1.1.11.1.11.1.1

Sample installation

Here is an example. Let’s assume you have a freshly installed Fedora 25 system with a recent Nvidia GPU and you want to:

  • Install the driver for gaming
  • Play Vulkan enabled games
  • Want to be comfortable with the control panel
  • Play 32 bit games on a 64 bit system
  • Play 32 bit Vulkan games on a 64 bit system
$ sudo dnf install nvidia-settings kernel-devel dkms-nvidia vulkan.i686 nvidia-driver-libs.i686
Last metadata expiration check: 0:33:49 ago on Mon Oct 24 14:14:30 2016.
Dependencies resolved.
============================================================================================
 Package              Arch     Version                                Repository       Size
============================================================================================
Installing:
 dkms-nvidia          x86_64   2:375.10-1.fc25                        fedora-nvidia   6.4 M
 libglvnd             i686     1:0.2.999-3.20161017gita813b56.fc25    fedora-nvidia   103 k
 libglvnd             x86_64   1:0.2.999-3.20161017gita813b56.fc25    fedora-nvidia   105 k
 libglvnd-gles        i686     1:0.2.999-3.20161017gita813b56.fc25    fedora-nvidia    29 k
 libglvnd-gles        x86_64   1:0.2.999-3.20161017gita813b56.fc25    fedora-nvidia    28 k
 libglvnd-glx         i686     1:0.2.999-3.20161017gita813b56.fc25    fedora-nvidia   114 k
 libglvnd-glx         x86_64   1:0.2.999-3.20161017gita813b56.fc25    fedora-nvidia   110 k
 libglvnd-opengl      i686     1:0.2.999-3.20161017gita813b56.fc25    fedora-nvidia    39 k
 libglvnd-opengl      x86_64   1:0.2.999-3.20161017gita813b56.fc25    fedora-nvidia    38 k
 libva-vdpau-driver   x86_64   0.7.4-14.fc24                          fedora           61 k
 libvdpau             i686     1.1.1-3.fc24                           fedora           35 k
 nvidia-driver        x86_64   2:375.10-1.fc25                        fedora-nvidia   3.1 M
 nvidia-driver-NVML   x86_64   2:375.10-1.fc25                        fedora-nvidia   397 k
 nvidia-driver-libs   i686     2:375.10-1.fc25                        fedora-nvidia    15 M
 nvidia-driver-libs   x86_64   2:375.10-1.fc25                        fedora-nvidia    14 M
 nvidia-libXNVCtrl    x86_64   2:375.10-1.fc25                        fedora-nvidia    26 k
 nvidia-settings      x86_64   2:375.10-1.fc25                        fedora-nvidia   935 k
 vulkan               i686     1.0.30.0-1.fc25                        fedora          1.5 M
 vulkan               x86_64   1.0.30.0-1.fc25                        fedora          1.4 M
 vulkan-filesystem    noarch   1.0.30.0-1.fc25                        fedora          8.0 k
 
Transaction Summary
============================================================================================
Install  20 Packages
 
Total download size: 43 M
Installed size: 184 M
Is this ok [y/N]:

As you can see, this system has dkms enabled kernel module and libraries for running 32 bit applications. The amount of data to download for the drivers is really small compared to packages that contain CUDA libraries and tools. All packages have an higher Epoch set; so they should never be upgraded on your system when you enable this repository along the RPMFusion or ELRepo ones.

Package installation

If you are booting the system in UEFI mode; as a prerequisite to installing any external module (not built into the kernel package), you have to disable UEFI Secure Boot in the system configuration. All modules contained in the kernel package are signed with keys that are generated during build and deleted when packaging. If you want to preserve Secure Boot, you need to sign the modules yourself and import the keys into your hardware module. Doing so is out of scope here; if you need a decent guide just follow Red Hat’s guide for signing kernel modules.

First of all remove all the Nvidia drivers you might have on your system due to RPMFusion, ELRepo, or the Nvidia CUDA repository. The packages should already take care of this for you, as they should be completely compatible; but better be safe than sorry. This is usually accomplished with the following root command:

yum -y remove \*nvidia\*

Then, to install the Nvidia driver and its control panel utility in CentOS/RHEL with the binary kABI (Kernel ABI whitelist) module (this is the default on CentOS/RHEL), perform the following command:

yum -y install nvidia-driver nvidia-settings

To do the same in Fedora, perform the following command:

dnf -y install nvidia-driver nvidia-settings kernel-devel

Requirement on kernel-devel is required as otherwise the package kernel-debug-devel is pulled in automatically in place of the normal non-debug package. There is bug opened on dnf/libsolv for this.

Specific driver installations

For both Fedora and CentOS/RHEL distributions it’s possible to install additional packages and / or variant of the basic kernel modules. This paragraph contains some examples. Make sure you have the RPMFusion repository enabled if you plan to use akmod kernel modules on Fedora or EPEL if you plan to use DKMS modules on CentOS/RHEL.

akmod kernel module variant (Fedora):

dnf -y install nvidia-driver kernel-devel akmod-nvidia

DKMS kernel module variant (Fedora/CentOS/RHEL):

yum/dnf -y install nvidia-driver kernel-devel dkms-nvidia

To add 32 bit libraries on a 64 bit system (for games or applications like Steam):

yum -y install nvidia-driver-libs.i686

Additional driver configuration to your system

To add additional configuration to your system, just create the /etc/X11/xorg.conf file if it does not exist (by default it exists only in Red Hat Enterprise Linux / CentOS 6 systems). For example:

Section "Device"
    Identifier  "Device0"
    Driver      "nvidia"
    Option      "NoLogo" "true"
    Option      "DPI" "96 x 96"
    Option      "SLI" "Auto"
    Option      "nvidiaXineramaInfoOrder" "DFP-0"
    Option      "metamodes" "GPU-a493fbbb-7d76-86a2-8764-d76d487a75a7.DVI-I-1: nvidia-auto-select +0+0, GPU-c02960a4-be28-d5ce-8b02-be04b5e2550b.DVI-I-1: nvidia-auto-select +1680+0"
    Option      "BaseMosaic" "on"
EndSection

In this example we have 2 video cards with one monitor each, so we enabled SLI, Base Mosaic to have multi monitor support on SLI and make a layout with the second GPU monitor on the right of the first one. Also, we fix the DPI to 96×96, which is the hardcoded default in Gnome and in Open Source drivers.

Configuration for headless systems

Your system might only be used for CUDA development and not require the X server to be running the driver at all, so you might want to tweak the configuration a bit to make the system load (for example) the Intel driver as the main display and just the Nvidia driver for calculation. In this case, the Intel driver should load the modesetting driver, offload the rendering to the Nvidia driver and not use any monitor attached to the X server for the Nvidia driver.

So in this case, I would change /etc/default/grub to remove the nomodeset parameter to make the Intel KMS driver to load properly, regenerate the Grub config file, reboot and use this xorg.conf:

Section "ServerLayout"
    Identifier "layout"
    Screen 0 "intel"
    Inactive "nvidia"
EndSection
 
Section "Device"
    Identifier "nvidia"
    Driver "nvidia"
    BusID "<BusID for NVIDIA device here>"
EndSection
 
Section "Screen"
    Identifier "nvidia"
    Device "nvidia"
    Option "AllowEmptyInitialConfiguration"
EndSection
 
Section "Device"
    Identifier "intel"
    Driver "modesetting"
EndSection
 
Section "Screen"
    Identifier "intel"
    Device "intel"
EndSection

An example of the above can also be read in the official documentation.

The device file /dev/nvidia0 is normally created when loading the Nvidia driver, so if the X driver is not loaded the device file fileis not created. You can use the nvidia-modprobe command that is in the package with the same name.
It contains a SUID binary that creates the device files and set the appropriate permissions when automatic device creation is not available. It is called directly by Nvidia libraries:

$ for i in $(rpm -ql nvidia-driver-libs.x86_64); do strings $i | grep nvidia-modprobe && echo $i; done
/usr/bin/nvidia-modprobe
/usr/lib64/libnvidia-cfg.so.1
/usr/bin/nvidia-modprobe
/usr/lib64/libnvidia-cfg.so.375.20
/usr/bin/nvidia-modprobe
/usr/lib64/libnvidia-eglcore.so.375.20
/usr/bin/nvidia-modprobe
/usr/lib64/libnvidia-glcore.so.375.20
/usr/bin/nvidia-modprobe
/usr/lib64/libnvidia-glsi.so.375.20
/usr/bin/nvidia-modprobe
/usr/lib64/vdpau/libvdpau_nvidia.so.1
/usr/bin/nvidia-modprobe
/usr/lib64/vdpau/libvdpau_nvidia.so.375.20

This requires some testing and adjustments with specifics to your setup, but is definitely possible to use the integrated Intel card and or rely on a system without X installed to run the CUDA components.

CUDA

Packaging

  • Previously in the repository was included the GPU Deployment kit. This was constructed with NVML (NVIDIA Management Library) headers, docs and samples from a separate tarball. The separate tarball was using a different version number than the drivers and was packaged in the nvidia-driver-NVML and nvidia-driver-NVML-devel packages. Installing these, the gpu-deployment-kit dependency provided by the CUDA repositories was preserved. Starting from CUDA version 8, the NVML header is provided by a CUDA subpackage (cuda-nvml-devel) and no longer provided as part of the GPU Deployment kit.
  • Along with NVML, the nvidia-healthmon and nvidia-validation-suite package is provided to monitor TESLA GPU clusters (x86_64 systems only). For whatever confusing reason, these are not part of the CUDA 8 release. I will leave them in the repository for a while before removing them.
  • Included is also the NVENC (Nvidia Encoder) header, docs and code samples. Again, this uses a different version than the drivers.
  • All the libraries are split into subpackages, much like in the original Nvidia CUDA repository. This allows you to install and build software relying on specific components without the need to install all the CUDA toolkit just to satisfy a library dependency. With the new packaging organization, the original cuda-devel and cuda-extra-libs will pull in all the specific subpackages giving you the same situation you are accustomed to. Also, for the same reason, static libraries have been included in each respective devel subpackage.
  • In addition to the libraries bundled in the CUDA toolkit, also the cuDNN library for distributed neural networks is included in the repository. See the table below for details.

Distribution and CUDA version support

Operating systemel6 / el7f23 / f24 / f25
CUDA branch/version8.0.448.0.44
CUDA cuDNN version5.15.1
Basic CUDA libraries/tools:

cuda
cuda-libs
cuda-extra-libs
cuda-cublas
cuda-cudart
cuda-cufft
cuda-cudnn
cuda-cupti
cuda-curand
cuda-cusolver
cuda-cusparse
cuda-npp
cuda-nvgraph
cuda-nvrtc
cuda-nvvp
YesYes
CUDA development:

cuda-cli-tools
cuda-devel
cuda-cublas-devel
cuda-cudart-devel
cuda-cudnn-devel
cuda-cufft-devel
cuda-cupti-devel
cuda-curand-devel
cuda-cusolver-devel
cuda-cusparse-devel
cuda-npp-devel
cuda-nvgraph-devel
cuda-nvml-devel
(also i686)
cuda-nvrtc-devel
YesYes
Java GUI programs:

cuda-nsight
cuda-nvvp
YesYes
Documentation and samples

cuda-samples
cuda-docs
(noarch)
YesYes

CUDA installations

To install just a runtime CUDA support (required for running CUDA enabled programs):

yum -y install cuda nvidia-driver-cuda

To install packages required for enabling CUDA development:

yum -y install cuda-devel

or, if you need to develop some application that requires multiple libraries:

yum -y install cuda-devel

A couple of examples. Just the basic tools:

$ sudo dnf install cuda
Last metadata expiration check: 0:00:20 ago on Sun Oct 23 13:11:01 2016.
Dependencies resolved.
================================================================================
 Package           Arch         Version               Repository           Size
================================================================================
Installing:
 cuda              x86_64       1:8.0.44-4.fc24       fedora-nvidia        95 M
 cuda-cufft        x86_64       1:8.0.44-4.fc24       fedora-nvidia        97 M
 cuda-curand       x86_64       1:8.0.44-4.fc24       fedora-nvidia        38 M
 cuda-libs         x86_64       1:8.0.44-4.fc24       fedora-nvidia       6.4 M
 
Transaction Summary
================================================================================
Install  4 Packages
 
Total size: 236 M
Installed size: 469 M
Is this ok [y/N]:

The basic tools along with all the libraries (note that the NVML headers are included):

$ sudo dnf install cuda-devel
Last metadata expiration check: 0:10:00 ago on Sun Oct 23 13:11:01 2016.
Dependencies resolved.
================================================================================
 Package                 Arch       Version             Repository         Size
================================================================================
Installing:
 cuda                    x86_64     1:8.0.44-4.fc24     fedora-nvidia      95 M
 cuda-cublas             x86_64     1:8.0.44-4.fc24     fedora-nvidia      21 M
 cuda-cublas-devel       x86_64     1:8.0.44-4.fc24     fedora-nvidia      38 M
 cuda-cudart             x86_64     1:8.0.44-4.fc24     fedora-nvidia     131 k
 cuda-cudart-devel       x86_64     1:8.0.44-4.fc24     fedora-nvidia     659 k
 cuda-cufft              x86_64     1:8.0.44-4.fc24     fedora-nvidia      97 M
 cuda-cufft-devel        x86_64     1:8.0.44-4.fc24     fedora-nvidia      73 M
 cuda-cupti              x86_64     1:8.0.44-4.fc24     fedora-nvidia     1.2 M
 cuda-cupti-devel        x86_64     1:8.0.44-4.fc24     fedora-nvidia     213 k
 cuda-curand             x86_64     1:8.0.44-4.fc24     fedora-nvidia      38 M
 cuda-curand-devel       x86_64     1:8.0.44-4.fc24     fedora-nvidia      60 M
 cuda-cusolver           x86_64     1:8.0.44-4.fc24     fedora-nvidia      23 M
 cuda-cusolver-devel     x86_64     1:8.0.44-4.fc24     fedora-nvidia     4.1 M
 cuda-cusparse           x86_64     1:8.0.44-4.fc24     fedora-nvidia      23 M
 cuda-cusparse-devel     x86_64     1:8.0.44-4.fc24     fedora-nvidia      23 M
 cuda-devel              x86_64     1:8.0.44-4.fc24     fedora-nvidia     1.6 M
 cuda-libs               x86_64     1:8.0.44-4.fc24     fedora-nvidia     6.4 M
 cuda-npp                x86_64     1:8.0.44-4.fc24     fedora-nvidia      91 M
 cuda-npp-devel          x86_64     1:8.0.44-4.fc24     fedora-nvidia      47 M
 cuda-nvgraph            x86_64     1:8.0.44-4.fc24     fedora-nvidia     4.6 M
 cuda-nvgraph-devel      x86_64     1:8.0.44-4.fc24     fedora-nvidia      12 k
 cuda-nvml-devel         x86_64     1:8.0.44-4.fc24     fedora-nvidia      41 k
 cuda-nvrtc              x86_64     1:8.0.44-4.fc24     fedora-nvidia     6.6 M
 cuda-nvrtc-devel        x86_64     1:8.0.44-4.fc24     fedora-nvidia      16 k
 
Transaction Summary
================================================================================
Install  24 Packages
 
Total size: 655 M
Installed size: 1.4 G
Is this ok [y/N]:

An example where your CUDA application just uses the CUDA Runtime API and not the kernel runtime:

$ sudo dnf install cuda-cudart
Last metadata expiration check: 0:13:10 ago on Sun Oct 23 13:11:01 2016.
Dependencies resolved.
================================================================================
 Package           Arch         Version               Repository           Size
================================================================================
Installing:
 cuda-cudart       x86_64       1:8.0.44-4.fc24       fedora-nvidia       131 k
 
Transaction Summary
================================================================================
Install  1 Package
 
Total size: 131 k
Installed size: 536 k
Is this ok [y/N]:

This will avoid you pulling in all the libraries as before just because you need a single library. This is useful for example for programs that leverage just some part of the CUDA toolkit, like the Nvidia Performance Primitives for image and signal processing in FFmpeg, and similar things.

Bugs

Just open an issue to the specific package on GitHub.

705 thoughts on “Nvidia driver, CUDA tools and libraries

  1. I just followed your instructions to install nvidia using dkms, everything seem to have gone well but for not finding more than one monitor out of three and it threw an error in Xorg log saying not being able to find nv. Searching it manually shows none, what did I miss?

    BTW, it reports: nvidia, 367.35, 4.6.5-300.fc24.x86_64, x86_64: installed

    GLXGears work well, as well.

    1. For actual bugs in the drivers you should report to the Nvidia forums. Regarding the nv driver, it has been obsoleted in Fedora 19 and by default X.org will try to use the nouveau (or modesetting) driver in case of Nvidia cards. But since you are using the proprietary driver you can ignore the message.

    1. Nope, they are part of the Vulkan package. The Vulkan package is not yet part of Fedora but should be soon as the review has already been completed.

  2. i dont understand why all your repos are insecure http & also on the same server, can you host the gpg keys on github? are you allowed to put a package into main fedora that simply contains the keys?

    1. Hello, sorry for the late reply, the comment is not blocked, it was simply pending. The plan is to get everything in one repository as more and more things have dependency on each other, so the various names HandBrake, nvidia, cdrtools, etc. will go away. As part of that there will be a release package with the keys and the mirror urls. I already have a few mirror offers.

      As soon… as I have time πŸ™

      1. so you’re saying we just have to cross check from multiple connections at multiple times with multiple users & hope for the best?

        i just think it would be useful for now to manually mirror the .repo file & the keys on github/google/etc to minimize the effect of a MITM on the user that could have them installing a fake repo

        btw your instructions keep mentioning rpmfusion but not free vs nonfree

  3. Hi Slaanesh,
    First of all, thanks for all your work on this repo. It has been by far the best nvidia driver solution for my fedora workstation(s) for years now.

    Just wondering if the Fedora 22 repo has been discontinued? The fedora-22 dir is now gone from the repo.

    Sorry if this was already announced somewhere and I missed it (I have had a look through the comments here and searched your blog posts by can’t find anything to that effect).

    Thanks!

      1. Yeah, I normally leave the repository in place until the next push, in which case EOL distributions get deleted.
        Thanks for feedback!

        1. Many thanks from here as well. We might plan in advance that fc24 is not “normal”, in the sense that nvcc — even in the Cuda 8 beta — does not play with fc24’s gcc 6.1. Has anyone here had success? I haven’t abandoned all hope of compiling cuda programs on fc24 with a local gcc 5.4 install, but at present have reverted back to fc23 — less proliferation of libraries. If Nvidia resolves their gcc 6.x issues before fc23 eol all will be good. If not, the easiest path may be to wait them out.

          1. I haven’t tried CUDA 8 yet, so I don’t know its state. Do you have any pointers for new issues/features/things I should look for when packaging it?
            So far most of the (Fedora/RHEL) CUDA users I’ve seen are using CentOS and not Fedora. There works fine for everything.

  4. I am running a fresh install

    System: Kernel: 4.6.4-301.fc24.x86_64 x86_64 (64 bit) Desktop: Xfce 4.12.3
    Distro: Korora release 24 (Sheldon)
    Graphics: Card: NVIDIA GM107 [GeForce GTX 750 Ti]
    Display Server: Fedora X.org 118.4 drivers: nvidia (unloaded: fbdev,vesa,nouveau)
    Resolution: 1920×1080@60.00hz
    GLX Renderer: GeForce GTX 750 Ti/PCIe/SSE2 GLX Version: 4.5.0 NVIDIA 367.35

    I just installed with “dnf install nvidia-driver” out of negativo17.org repo

    Running xfdashboard
    libGL error: No matching fbConfigs or visuals found
    libGL error: failed to load driver: swrast
    [xcb] Unknown sequence number while processing queue
    [xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
    [xcb] Aborting, sorry about that.
    xfdashboard: xcb_io.c:274: poll_for_event: Assertion `!xcb_xlib_threads_sequence_lost’ failed.
    Aborted (Speicherabzug geschrieben)

    locate swrast
    /usr/lib64/dri/kms_swrast_dri.so
    /usr/lib64/dri/swrast_dri.so
    /usr/lib64/gallium-pipe/pipe_swrast.so

    https://askubuntu.com/questions/541343/problems-with-libgl-fbconfigs-swrast-through-each-update

    I reinstalled nvidia-driver after kernel-update.

    glxgears is running with no problems.

    What to do to have xfdashboard?

    With Korora 23 most recent kernel and most recent nvidia-driver from negativo17.org xfdashboard had no problems.

    Please help.

    Thks
    AW

    1. The problem is that xfdashboard uses /usr/lib64/libGL.so.1 while the proper symlink is /usr/lib64/libglvnd/libGL.so.1

      A workaround is to do this:

      env LD_PRELOAD="/usr/lib64/libglvnd/libGL.so.1" xfdashboard

      This is probably not Negativo’s fault but xfdashboard using a hardcoded path to the shared library.

      1. Yes, that is the solution. It works. Thanks.

        On a native/original installation of Korora 24 XFCE with driver nouveau xfdasboard is running.

  5. There appears to be some problem between mesa-libGLES and libglvnd on libGLESv2.so.2()(64bit). I haven’t yet installed the nvidia driver yet on my desktop, but I did enable the nvidia repo (as well as the multimedia repo) and did an update which upgrades gstreamer1-plugins-bad. This pulls in libglvnd rather than mesa-libGLES (as my laptop did) which breaks nouveau and leads to an oops screen. It complains about missing symbol _glapi_check_multithread. The goal is install the nvidia driver, but seems this strange intermediate state causes some problems. Just want to make you and others aware of this problem enabling the nvidia repo and the multimedia repo but not yet having the nvidia driver installed. To fix the problem I installed mesa-libGLES then removed libglvnd. Maybe this could be an explicit requires so it somehow prefers the mesa-libGLES package?

    1. Hello, yes there is some cause/effect thing in place. First of all, gstreamer1-plugins-bad requires libGL and libEGL to be present:

      # rpm -q --requires gstreamer1-plugins-bad | egrep "libGL|libEGL"
      libEGL.so.1()(64bit)
      libGL.so.1()(64bit)
      libGLESv2.so.2()(64bit)

      These in turn are offered by both mesa-libGL and mesa-libEGL. But if you have Nvidia driver repository enabled, they are provided by libglvnd; at least until Fedora base components will provide a libglvnd compatible mesa libGL. Those will take precedence, as if you have the Nvidia driver repository enabled this means you are actually asking for the driver. So, if you don’t need the driver, do not enable the repository for it.

      Otherwise, if you now want everything (Nvidia driver + CUDA + 32 bit GL support), just do a:

      dnf -y install kernel-devel dkms-nvidia nvidia-driver-cuda nvidia-driver-libs.i686

      and you should be good to go. Something similar to the GL thing is the libcuda.so.1 loading in FFMpeg:

      # rpm -q --whatrecommends nvidia-driver-cuda-libs
      ffmpeg-libs-3.1.1-1.fc24.x86_64

      If you have the Nvidia repository enabled, then FFMpeg pulls in the “recommended” packages, otherwise it just skips them. So if you have the Nvidia driver repository enabled but you don’t want to use it, you will end up with unwanted components.

      Separate all these things is not easy, especially that now FFmpeg 3.1.1 can dynamic link CUDA libraries for the NPP acceleration (I haven’t enabled that yet). I might change it when merging all repositories together into 1. I will make an update on the repository page with the above details.

  6. Hi,
    In my case you’re driver is the only working on a fresh install of F24 with 1080 cards…
    I tried RPMfusion / UnitedRPMs, with them i got the grey screen saying “oops something got wrong ….”

    Maybe someone can reply to that:
    1. How is that possible ?
    2. Can i stay with your drivers with a 90% chance they’ll don’t break (this is on production machines)
    3. I saw maybe I need to install the akamods but I don’t get a thing : with the “classic” non akmod driver if the kernel is updated do I get into trouble each times ?

    1. Hello, good to hear that they work for you. For the answers:

      1. I don’t know, I don’t even know how they are packaged anymore
      2. Yes, they have been available for quite a few years now and if you look at the page there’s even the kind of version (long lived, short lived, beta) version that is supported on each distribution
      3. DKMS and akmods are just two variants of the same thing. It just happens that I’m also the Fedora/EPEL mantainer of DKMS, but that’s it. Feel free what you think is right for you.

  7. Following my upgrade to Fedora 24 I have issued the command dnf repoquery –unsatisfied as recommended on site https://fedoraproject.org/wiki/DNF_system_upgrade to see if there are any old packages that should be removed because they would not be working properly anyway, and received the following messages which to me make no sense, unless I am completely misinterpreting the message.

    The kernel mentioned in the first message is the last of the Fedora 23 kernels that is still installed after the upgrade to F24, while the kernel listed in the 2nd message is the kernel installed by a sudo dnf upgrade issued the day after the upgrade to F24. Hence the bottom line is both kernels mentioned in the messages are installed, so why is dnf reporting that it can’t find them?

    package kmod-nvidia-4.5.7-200.fc23.x86_64-2:367.27-1.fc24.x86_64 requires kernel-uname-r = 4.5.7-200.fc23.x86_64, but none of the providers can be installed
    package kernel-4.6.3-300.fc24.x86_64 requires kernel-core-uname-r = 4.6.3-300.fc24.x86_64, but none of the providers can be installed

    1. I got an X11 oops after upgrading my Fedora 23 system to Fedora 24. The nvidia driver wouldn’t load and it turned out that /lib/modules/4.6.3-300.fc24.x86_64/modules.dep wasn’t updated for the extra/nvidia drivers. I booted the Fedora 23 4.5 kernel, removed the kmod-nvidia-4.6.3-300.fc24.x86_64-367.27-1.fc24.x86_64 rpm and rebuild with akmods –kernels 4.6.3-300.fc24.x86_64. My next boot of the Fedora 24 kernel 4.6.3 worked fine. I don’t know why the modules.dep file wasn’t update properly. Thanks for all your work on creating the nvidia rpm packages.

  8. Hello I installed a fresh Fedora 24 on a laptop with a Core I7 that has an integrated Intel graphics. And the laptop has a geforce 850m as well. So I enabled your repos and installed the drivers. It seems that nouveau is disabled automatically after installing nvidia drivers from your repo wich is great, I think. The nvidia modules are loaded and the display manager shows as normally. But when I try to log in, black screen and then it switchs back to the display manager. Any clues??

  9. Fedora 24 using the 340 driver didn’t work. After investigation, module was not loaded.

    /var/cache/akmods/nvidia/340.96-3-for-4.6.3-300.fc24.x86_64.failed.log
    install: cannot stat ‘_kmod_build_4.6.3-300.fc24.x86_64/uvm/nvidia*.ko’: No such file or directory
    installed buildsys-build-rpmfusion-kerneldevpkgs-akmod-x86_64
    It now builds and loads on boot but all I get is a looping Nvidia logo.

    Have look further tomorrow.

  10. After installing nvidia driver on my Fedora 24 installation, computer crashes with this message: “WeΔ‡ome to emergency mode! …”

  11. I have installed the 340 driver in fedora 24 MATE and I get a “failed to query glx server vendor” in the nvidia server settings. And of course i have no 3d acceleration.
    This is a great advance since the nvidia blob could not make a graphical start.
    Any ideas?

    Thanks very much for your help.

  12. Hey,

    I am using Fedora 24 and your nvidia driver. I have an issue after about 5-10 minutes where the screen will disappear and show the boot log. If I then Ctrl+Alt+F2 I get back to the desktop and from there on in am good. I was using a 660 but yesterday got the 960 and both do exactly the same …

    Any help ?

    Thanks

  13. Hello, thank you for the Nvidia drivers but I have a problem. I’m on Fedora 24, I installed the RPMFusion free and non-free repos. I installed “kernel-devel”, your repo and the drivers “$ sudo dnf config-manager –add-repo=”http://negativo17.org/repos/fedora-nvidia.repo” && sudo dnf install kernel-devel nvidia-driver dkms-nvidia nvidia-driver-libs.i686″. After a reboot that worked well but only for 5mn. After a few minutes the screen swicth to the tty ! I could go back to Gnome but the screen was corrupted and slow.

    I removed the drivers “sudo dnf remove \*nvidia\*” and I couldn’t boot anymore (black screen).

    I hope you can help me. Thanks !

    1. I reinstall Fedora 24 and tried with “dnf install nvidia-driver akmod-nvidia kernel-devel” and it’s the same. After a few minutes the screen swicth to the tty ! The one where there is some boot infos.

      1. For the nvidia drivers removing that produce a black screen it seems to be related to libglvnd that is not removed.

          1. Yeah, I thought about it, but eventually this package would be replaced by an official one and there are plans to use it also on AMD Catalyst drivers, so I can’t make it require Nvidia drivers. Maybe I can add some weak requriments in the RPM package like the CUDA driver part for FFMPeg libraries?

          2. I don’t know how you can deal with this package but I know that if someone remove the nvidia driver he should not have a black screen πŸ˜€ It took me some time to find it was the culprit.

            If a weak requirement in the RPM package can avoid the black screen it’s ok. Maybe a little note should be add where you explain how to remove the driver to avoid more people having a black screen in the mean time ?

      2. If you added RPMFusion, then those commands would install the RPMFusion version of the nvidia driver. AFAIK, the F24 repo for negativo17 still has some problems. It does not work with akmod-nvidia, and dkms-nvidia doesn’t actually install anything.

        1. I’m using Fedora 24 like a lot of other people here, and it both works with akmods and DKMS packages.
          Did you follow the guide? Did you make sure that kernel-devel is installed and and not kernel-debug-devel as described in the instructions?

          There is only an issue after about 5-10 minutes where the screen will disappear and show the boot log, and you have to Ctrl+Alt+F2 to get back to the desktop. It’s not related to the Nvidia driver, it’s a bug in Gnome Shell which fix has not yet been ported to Fedora 24 packages:

          https://github.com/GNOME/gnome-shell/commit/5226d8b0864fa894f180b8584e837aaf565578b2
          https://bugzilla.gnome.org/show_bug.cgi?id=764898
          https://bugzilla.redhat.com/show_bug.cgi?id=1350184

  14. Hi,

    Thanks for the driver. Is it possible add in the nvidia.icd into /etc/OpenCL/vendors when installed to list the GPU as a OpenCL device?

    1. Hello, it is already done, you need to install the nvidia-driver-cuda package:

      $ sudo dnf provides /etc/OpenCL/vendors/nvidia.icd 
      nvidia-driver-cuda-2:367.27-1.fc24.x86_64 : CUDA integration for nvidia-driver
      Repo        : fedora-nvidia

      It will also load the unified video memory module, etc…

      1. Thanks for the quick reply! I somehow got into a state where I had the nvidia-opencl libraries but no .icd. It seems that those OpenCL libraries are loaded in with nvidia-driver-cuda-libs. I’ll keep that in mind for the future.

        Would it be better off moved it to an opencl package?

  15. Hi,
    I still cannot get the Fedora 23 graphical boot logo after selecting the kernel to boot from, instead I get 3 different coloured horizontal bars at the bottom of the screen overlaying each other, that progress across the screen, to indicate boot progress. Playing around with GRUB_GFXPAYLOAD_LINUX doesn’t seem to impact this in any way. Is there something else I need to look at to resolve why this is happening with your drivers?

    1. Just further to this. To try and test things out I uninstalled all the nvidia related packages that were installed except the nouveau xorg driver package. This broke xorg as the system was no longer able to start it, apparently because it could no longer find any screens.
      To work around this I booted with the rescue entry in grub, which booted with the graphical Fedora logo, which booted to a console login, but did not enable the network so I couldn’t run a dnf install to reinstall your nvidia drivers. To fix this issue I booted into another linux distro I have installed and manually downloaded the rpms to a directory on my Fedora root partition and did a manual install of all the ones that didn’t have dependency issues that could be resolved from the rescue environment.
      Having gotten the packages installed, which included kmod-nvidia and akmod-nvidia packages, when I booted into each of the existing kernels, the boot process did an akmod-nvidia build process, but could not start xorg until I did a subsequent reboot off that kernel, why was xorg not able to use the akmod built driver immediately?
      Having gotten the drivers back in and usable, the boot process has reverted back to not displaying the graphical boot logo that is displayed from the rescue boot, why is this the case?
      Also after getting the drivers reinstalled I ran a system update which installed a newer kernel. When I booted into the new kernel the akmod build did not take place, hence that process was able to use the kmod-nvidia driver, so why couldn’t the kernels that were already installed when I reinstalled the nvidia drivers able to use the kmod driver?

  16. Having an issue getting the system to boot after installing the drivers on a fresh Fedora build. Only commands I ran after install were:

    dnf update
    reboot
    rpm -i rpmfusion-free-release-23.noarch.rpm
    rpm -i rpmfusion-nonfree-release-23.noarch.rpm
    dnf config-manager --add-repo=http://negativo17.org/repos/fedora-nvidia.repo
    dnf install nvidia-driver
    reboot

    After rebooting, the system hangs for a few seconds at “Starting switch root” and then crashes with the unrecoverable error screen. Uninstalling the drivers and re-enabling nouveau doesn’t seem to work either for some reason – getting the same crash. Any ideas on what’s wrong or how to fix this? Thanks.

    1. In the instructions I wrote there’s written to install kernel-devel as well, but I don’t see it in your commands.
      I think it’s the usual problem with kernel-debug-devel providing kernel-devel, so you don’t have the correct headers installed. That’s a known bug in Fedora open since forever.

  17. Your host is extremely slow. Have you considered using copr for this?

    All in all, amazing work. This repo has made my life running linux on Mac Pro much much simpler.

    1. Would love to, but can not. Copr and official Fedora tools (Koji, etc.) can not be used for things that are in the list of forbidden items. So Nvidia drivers, cdrtools, all multimedia stuff, etc. They can’t serve but also can’t be used for building packages, so it’s a no go.

      Mirrors are welcome though πŸ™‚

      1. I wouldn’t be able to help with a mirror, but I would be happy to donate some $$$ to help you boost your capacity, if this is possible. It would be a small token of gratitude for all the effort you put into providing these packages. Have you considered something like this? Maybe others would jump in as well, and with small amounts from a lot of people, we could do something nice.

        1. Thank you very much. That would be great. Actually in the main page there should be a button to donate through Paypal and a QR code for donating Bitcoins.
          If that is not the case… well, then I have a problem with WordPress πŸ™‚

          1. The button is there, don’t worry =) I must say I haven’t paid attention to it before, though. Anyway, I will stand by my offer and make a donation. After all, life on Fedora + Nvidia is *much* simpler thanks to your efforts.

            BTW negativo17.org/site/ returns a 404.

  18. On fedora 22 the nvidia samples do not build anymore (also tried on fedora 23 with the same result):

    make
    make[1]: Entering directory '/usr/share/doc/cuda-samples/0_Simple/simpleTemplates'
    /usr/bin/nvcc -ccbin g++ -I../../common/inc  -m64    -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_52,code=compute_52 -o simpleTemplates.o -c simpleTemplates.cu
    cc1plus: fatal error: cuda_runtime.h: No such file or directory
    compilation terminated.
    Makefile:229: recipe for target 'simpleTemplates.o' failed
    make[1]: *** [simpleTemplates.o] Error 1
    make[1]: Leaving directory '/usr/share/doc/cuda-samples/0_Simple/simpleTemplates'
    Makefile:52: recipe for target '0_Simple/simpleTemplates/Makefile.ph_build' failed
    make: *** [0_Simple/simpleTemplates/Makefile.ph_build] Error 2

    I could build gromacs using cuda but not the samples.
    Thanks

    1. There’s a missing “-I /usr/include/cuda” somewhere, the cuda_runtime.h header is not in /usr/include folder or you will have headers everywhere. Will check if I can patch samples directly.

      Thanks for reporting.

  19. Hi,
    I did a dnf update which install a new version of nvidia-driver but my system doesn’t work anymore and journalctl complains that the module nvidia could not be inserted. Weirdly enough the module has been built because I can see the file but modinfo nvidia throws an error after the first line (which shows the filepath). I check and it seems some version of packages are inconsistent 19-1 versus 19-2. Could this be the problem? Here is the list and I marked with an asterisk the affected packages:

    nvidia-driver.x86_64 2:364.19-2.fc22
    nvidia-driver-NVML.x86_64 2:364.19-2.fc22
    *nvidia-driver-NVML-devel.x86_64 1:352.79-1.fc22
    nvidia-driver-NvFBCOpenGL.x86_64 2:364.19-2.fc22
    nvidia-driver-cuda.x86_64 2:364.19-2.fc22
    nvidia-driver-cuda-libs.x86_64 2:364.19-2.fc22
    nvidia-driver-devel.x86_64 2:364.19-2.fc22
    nvidia-driver-libs.x86_64 2:364.19-2.fc22
    *nvidia-healthmon.x86_64 1:352.79-1.fc22
    *nvidia-libXNVCtrl.x86_64 2:364.19-1.fc22
    *nvidia-libXNVCtrl-devel.x86_64 2:364.19-1.fc22
    *nvidia-modprobe.x86_64 2:364.19-1.fc22
    *nvidia-persistenced.x86_64 2:364.19-1.fc22
    *nvidia-settings.x86_64 2:364.19-1.fc22
    *nvidia-validation-suite.x86_64 1:352.79-1.fc22
    *nvidia-xconfig.x86_64 2:364.19-1.fc22

    Thank you for your help

    1. I think I found what the problem was. The modules are now compressed .ko.xz and my script that call sign-file to sign the modules for the secure boot was actually signing the compressed module which would make it unreadable. Unstead you need to uncompress the module by calling unxz then sign the .ko file and then compress it again by calling xy.

      (ps: I sent my initial post twice because I thought it failed but it was simply awaiting moderation, and I was on a different computer so I would not see it, sorry for this)

      1. Thanks for letting me know. Would you mind sharing your script? Maybe I can create or provide some hook (and then instructions) for an easier signing of the modules once installed. Also, I’m about to trigger another update where I changed a bit the signing part.

    2. I don’t see the kmod/akmod/dkms packages there… btw, the important part is satisfied by the dependencies; so unless you got a dependency error, you can be sure that the packages you have installed are correct.

      As written in the table here: https://github.com/negativo17/nvidia-driver
      you can see that versions for some components are different.

  20. Hi,
    I updated to 364.19-2 but it doesn’t boot anymore. It seems there are some remaining 364.19-1 packages. In journalctl it complains that the nvidia module could not be inserted by modprobe. With modinfo the only things that works is modinfo -n nvidia but modinfo nvidia also throws an error.
    Do you know what is going on?
    What would be the command to rollback to 364.19-1 for all the installed packages from your repo?
    Thanks

  21. Has anyone got this to work in fedora 24 (beta)?

    When I am trying to install nvidia-driver, it pulls in kernel-debug-devel 4.5.5-300.fc24, but the installed kernel is 4.5.6-300.fc24.x86_64.

    Also when I try to install kernel-devel it is version 4.5.5-300.fc24.

    When I go ahead and install anyway, I get the “Ooops, something went wrong” screen.

    1. There is something wrong with the dependencies in the packages installed. To have the modules built you require matching kernel and kernel-devel packages.

      1. Ok, yes. I will wait for the official f24 release and if the problem persists take it to askfedora. But it should work on f24 (provided I get the correct packages installed), correct?

        1. Just happened here as well. The fedora-rpos package for Fedora 24 has been updated, disabling the updates testing repository. This lead to some packages installed which are not yet available in the released updates.

          Just run a dnf distro-sync or dnf --enablerepo=updates-testing update and you should be good to go.

  22. I have run the rpm command and I only have the statements you have listed, which I am not surprised at as this is the first time I have ever installed these drivers. I didn’t know they existed until now.
    Is the GRUB_CMDLINE_LINUX statement in your script replacing the existing statement or inserting into the existing statement, as I have extra parameters on that statement that are not in your script.
    I had a similar problem when attempting to use the akmod drivers from rpmfusion which was resolved by using GRUB_GFXPAYLOAD_LINUX=keep, which seems to be ignored immediately upon using your drivers. It also doesn’t matter what I specify for this parameter the boot is always the same.
    It seems to me that from your script you are using grubby to generate grub.cfg and to update the mbr, is that correct, because if so it seems to me that you have the updating of /etc/defaul/grub and the execution of grubby in the wrong order in the script. Also I use grub2-mkconfig and grub2-install to create grub.cfg and to update the mbr, could that be causing an issue with your drivers?

    1. Hello, sorry for the late reply.

      The settings used in Grubby and /etc/default/grub are totally independent. Grubby uses its own command line parameters and is used to modify the existing grub configuration file, while the latter is only used when you run grub2-mkconfig to overwrite completely the file.

      In fact at the beginning I was not even shipping the settings in /etc/default/grub.

      The parameters to GRUB_CMDLINE_LINUX are added, the whole variable is never replaced as people could have different settings like you.

  23. I have just installed the kmod-nvidia packages into Fedora 23 and have now encountered a graphical boot issue. On a normal boot after selecting the grub boot menu entry the boot process would display a graphical boot Fedora logo for the length of the boot process. With your kmod drivers installed instead of the logo I get 3 different coloured thick lines overlaying each other at the bottom of the screen progressing across the screen to indicate boot progress. I have tried to play around with the GRUB_GFXPAYLOAD_LINUX option in /etc/default/grub but nothing I set makes any difference. I have made sure that after every change I update grub.cfg and update the mbr, but it always functions as if GRUB_GFXPAYLOAD_LINUX=text is set.
    Do you have any idea what in your drivers would be causing this or what I need to set in /etc/default/grub to get the standard Fedora Graphical Boot Screen back again?

    1. I think you have some leftover from other installations, as I don’t disable the graphical boot up on installation. Check that you have only the lines listed in the scripts section of the nvidia-driver package:

      $ rpm -q --scripts nvidia-driver
      postinstall scriptlet (using /bin/sh):
      if [ "$1" -eq "1" ]; then
        /usr/sbin/grubby --update-kernel=ALL --args='nouveau.modeset=0 rd.driver.blacklist=nouveau nomodeset gfxpayload=vga=normal' &>/dev/null
        sed -i -e 's/GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="nouveau.modeset=0 rd.driver.blacklist=nouveau nomodeset gfxpayload=vga=normal /g' /etc/default/grub
      fi || :
      preuninstall scriptlet (using /bin/sh):
      if [ "$1" -eq "0" ]; then
        /usr/sbin/grubby --update-kernel=ALL --remove-args='nouveau.modeset=0 rd.driver.blacklist=nouveau nomodeset gfxpayload=vga=normal' &>/dev/null
        sed -i -e 's/nouveau.modeset=0 rd.driver.blacklist=nouveau nomodeset gfxpayload=vga=normal //g' /etc/default/grub
      fi ||:
  24. Hi!
    There seems to be an error in package dkms-nvidia-364.19-1.fc23.x86_64.rpm. Module nvidia-uvm.ko is not being built, so opencl dependent programs fail to use opencl. It seems that in a file dkms.conf strings BUILT_MODULE_NAME and DEST_MODULE_LOCATION for “nvidia-uvm” and “nvidia-drm” have the same [number] field:

    BUILT_MODULE_NAME[2]="nvidia-uvm"
    DEST_MODULE_LOCATION[2]="/extra"

    BUILT_MODULE_NAME[2]="nvidia-drm"
    DEST_MODULE_LOCATION[2]="/extra"

    If [2] is changed to [3] for the “nvidia-drm”, all modules are built and installed without errors.

  25. it’s working
    nvidia 10199040 106 nvidia_modeset,nvidia_uvm
    4.5.5-300.fc24.x86_64
    364.19-1.fc24

  26. dnf install libglvnd-server-module.x86_64

    nothing provides libglvnd(x86-64) = 0.0.0-19.af2aeb0.fc23 needed by libglvnd-server-module-0.0.0-19.af2aeb0.fc23.x86_64

    1. The server extensions has been superseded by a GLX extension. Since libglvnd 0.1.x and Nvidia drivers 364.x there is no more support for it.

  27. Thanks for your wonderful nvidia repo in the first place!

    I found a little config oddity with the nvidia-driver-cuda-36x.xx-x.fc23.x86_64 RPMs. Both 361.42 and 364.19 are affected.

    You install
    /usr/lib/modules-load.d/nvidia-uvm.conf
    containing
    nvidia-uvm
    which itself depends on the central “nvidia” kernel module.

    Unfortunately this file gets included in initramfs.img.

    So systemd tries to load this very early from the initramfs. But it seems dracut is missing the information that it should include it there because systemd fails to load nvidia-uvm toggling away from the plymouth bootscreen and presenting the red [failed] message.

    Adding nvidia and nvidia-uvm to dracut.conf (or manually by calling dracut –add) fixes it.

    Don’t know how to handle that without including the huge nvidia.ko in the initramfs.

    The module gets loaded later anyway and everything works fine. But I don’t like “failed” messages in the boot sequence;-)

    1. That’s really interesting, thanks for spotting. I will exclude all nvidia modules from initramfs.img (/usr/lib/dracut/dracut.conf.d/99-nvidia.conf).

      Thanks for notifying!

  28. Nvidia driver 364.19 hangs my Fedora 23 installation. I’m using a fairly standard GTX-650 card and this keeps happening to me every once in a while. Some Nvidia drivers work like a charm, adapting perfectly to kernel updates, and then… boom! The frowning booting face. It keeps me on the edge because I never know when I’m going to lose my main working computer.

  29. Are there plans to build the legacy 340 for Fedora 24? I do a daily use of an old notebook that still works great and it is running now F22.

  30. Thanks for updating Fedora 23 to the 364.19 driver (works great). I was hoping to get vulkan support with the 364.19 driver, but maybe vulkan needs to packaged up separately first.

  31. I recently found an issue with an updated tool in Fedora that seems to only happen with the nvidia driver, not with the nouveau driver.

    I am not playing any video games these days so it might be time to consider switching over to nouveau. Just posting this to see if there are any thoughts on this.

    I am using:
    nvidia-driver-340.96-1.fc23.x86_64

    My card:
    NVIDIA Corporation GT200 [GeForce GTX 260] (rev a1)

    I don’t have a pressing issue with the nvidia driver but the bug is with the new version of liveusb-creator which gives a segmentation fault. The Fedora devs don’t want to know about it since I am using the nvidia driver.

    Current reason for not switching to nouveau is that I can’t get the two GPU temperatures to show up when using it. I have a mostly default (tho I use Xfce) install on an old hard drive that I did the nouveau testing with.

    P.S. I don’t actually need the liveusb-creator since I can just use `dd` to create a bootable USB when needed.

  32. akmod-nvidia-2:364.15-1.fc24.x86_64
    dkms-nvidia-2:364.12-1.fc24.x86_64

    Please update dkms-nvidia to match. It’s currently unusable because no other 364.12 dependencies exist. Thanks!

  33. With stable 364.19 being released this week, are you considering updates Fedora 23 to the 364.19 driver version?

  34. fedora 23 with NVS 5400M
    dnf complain
    /sbin/ldconfig: /usr/lib64/nvidia/libEGL.so.1 is not symbolic link

    lrwxrwxrwx. 1 root root     16  1 avril 09:04 libEGL.so -> libEGL.so.346.46
    -rwxr-xr-x. 1 root root  14368 23 mars  01:24 libEGL.so.1
    -rwxr-xr-x. 1 root root 952704 18 fΓ©vr.  2015 libEGL.so.346.46

    must be changed??

    1. Nvidia drivers override base Mesa EGL libraries, even with GLVND:

      $ ldconfig -p | grep EGL
              libEGL_nvidia.so.0 (libc6,x86-64) => /lib64/libEGL_nvidia.so.0
              libEGL_nvidia.so.0 (libc6) => /lib/libEGL_nvidia.so.0
              libEGL.so.1 (libc6,x86-64) => /usr/lib64/nvidia/libEGL.so.1
              libEGL.so.1 (libc6,x86-64) => /lib64/libEGL.so.1
              libEGL.so.1 (libc6) => /usr/lib/nvidia/libEGL.so.1
              libEGL.so.1 (libc6) => /lib/libEGL.so.1

      And in both Mesa and Nvidia cases, the EGL library is always a symlink, don’t know where you got that library from. ldconfig is complaining that you have a library with the SONAME it should create a link for as a physical file.

      Fedora 23 has drivers 361.42 in the repos, not 346.46, and the links/libraries are fine, so you are asking for help on your setup which has nothing to do with what I ship.

  35. Hello! I’m having problem with installing nvidia-driver. First I uninstalled everything with:
    dnf remove *nvidia*

    Then installed with:
    dnf install nvidia-driver

    After installation I got this error:
    systemd-modules-load[219]: Failed to find module ‘nvidia-uvm’

    So I uninstalled kmod-nvidia* and akmod-nvidia* and installed akmod-nvidia again. Then build it again with akmods –force.

    And now I see this in lsmod|grep nvidia.
    nvidia_modeset 741376 7
    nvidia_uvm 561152 0
    nvidia 10014720 141 nvidia_modeset,nvidia_uvm
    drm 335872 6 nvidia

    But I’m still getting error mentioned above. Can anybody help me?

      1. Situation is getting weirder. After uninstalling everything nvidia driver related I’m still getting this error
        systemd-modules-load[219]: Failed to find module β€˜nvidia-uvm’
        When I try to install nvidia-driver again. I’m ending with blinking boot screen. This is part of the Xorg.0.log:

        [ 58.838] (II) LoadModule: “nvidia”
        [ 58.838] (II) Loading /usr/lib64/xorg/modules/drivers/nvidia_drv.so
        [ 58.838] (II) Module nvidia: vendor=”NVIDIA Corporation”
        [ 58.838] compiled for 4.0.2, module version = 1.0.0
        [ 58.838] Module class: X.Org Video Driver

        And later on there is this in log:
        [ 58.839] (EE) NVIDIA: Failed to initialize the NVIDIA kernel module. Please see the
        [ 58.839] (EE) NVIDIA: system’s kernel log for additional error messages and
        [ 58.839] (EE) NVIDIA: consult the NVIDIA README for details.

        1. Ok, I don’t know what happened. But the driver is working again.
          This is what I did:
          rm -rf /lib/modules/$(uname -r)/extra

          At this location I found nvidia.ko, nvidia-uvm.ko and nvidia-modeset.ko.

          Then I edited /lib/modules/$(uname -r)/modules.dep and deleted lines with above kernel objects

          After this I installed nvidia driver again from your repository and everything looks good.

          Maybe this will help someone in future.

          1. I’ve got the same problem from kernel 4.4.6-301 onward. I don’t know what’s going on. Does it mean it can’t use Kernel Modesetting with this version?

    1. Updated the Fedora 24 repository. Remember that 364.12 is beta. Wayland support is not finished, specific Nvidia patches have been rejected upstream and KMS does not work properly on every hardware.

        1. Haven’t tested it yet… Unfortunately I don’t have an Optimus laptop anymore. Judgning from the Nvidia notes on their forum not much has changed for Optimus laptops.

      1. Hi!

        As rpmfusion doesn’t provide FC24 packages for akmods and kmodtool, I had to build both packages from SRPMs. However, installing nvidia-driver and akmod-nvidia always resulted in installing kmod-nvidia, too.

        Right now, booting into gdm doesn’t work, as I’m stuck on the Fedora Plymouth logo. Removing kmod-nvidia and rebuilding akmod-nvidia also doesn’t seem to help.

        Is installing the dkms-nvidia RPM instead of the akmod-nvidia RPM in your repo an option? I couldn’t test it because right now there seems to be some version conflict (dkms-nvidia-364.12 vs nvidia-driver-364.15).

        GPU is NVIDIA GTX 970.

  36. Hello! Thanks for the repo. I’m using Fedora 23, MATE spin. After hours installing and reinstalling these packages and those on rpmfusion, I finally have the nvidia driver working. The solution for me was embarrassingly simple: enter BIOS, disable ‘fast boot’ and ‘UEFI secure boot’. Now I can play Portal 2, wahey.

    Slaanesh, please could you add “disable UEFI secure boot” to instructions above? It wasn’t obvious to me. As I understand, secure boot requires kernel modules be signed, which isn’t the case for the modules in this repo or any home baked with akmod.

    Here’s what else I learnt:

    1. You really don’t need an xorg.conf . Creating one with nvidia-xconfig will only mean X crashes if the driver isn’t available, rather than fallback to low resolution.
    2. As explained above, to play 32 bit games (as on Steam), you need to install the nvidia-driver-libs.i686 package . Otherwise you’ll see an error “OpenGL GLX context is not using direct rendering, which may cause performance problems.” You can test 32-bit direct rendering with the command `glxinfo32 | grep “direct rendering”`
    3. glxgears and glmark2 are useful benchmarks. My glmark2 score increased hundredfold from 140 to 14000 after installing driver.

    Debugging guide I would have found useful:

    1. Delete rhgb (graphical boot) from grub.cfg
    2. Check lsmod lists nvidia module
    3. Which logs to check if it doesn’t.

    Thanks again.

    1. Thanks for the suggestion, the information has been added to the installation section, with also a link for signing your own modules.

  37. Hi,

    It seems on cuda-samples package there are hardcoded paths that make all compilations fail:

    For example, in:
    /usr/share/doc/cuda-samples/5_Simulations/smokeParticles

    make yields:

    “/home/slaanesh/rpmbuild/SOURCES/cuda/cuda-7.5.18-x86_64″/bin/nvcc -ccbin g++ -I../../common/inc -m64 -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_52,code=compute_52 -o GLSLProgram.o -c GLSLProgram.cpp
    /bin/sh: /home/slaanesh/rpmbuild/SOURCES/cuda/cuda-7.5.18-x86_64/bin/nvcc: El fitxer o directori no existeix
    Makefile:243: recipe for target ‘GLSLProgram.o’ failed

    The hardcoded path is on CUDA_PATH variable, at the beggining of the Makefile:
    # Location of the CUDA Toolkit
    CUDA_PATH ?= “/home/slaanesh/rpmbuild/SOURCES/cuda/cuda-7.5.18-x86_64”

    1. Thanks for notifying, there was a mistake in the makeself files from Nvidia were extracted. To tell the truth I never tried building the samples, only external programs.
      If you need to fix them immediately, you can just call the Makefiles like this:

      CUDA_PATH=/usr make

      Fixed packages are building; they will be uploaded in a few minutes.

      1. Thanks for the hotfix and the kick fix, already built stuff wuth CUDA. I was checking the samples cause I was having issues with Tensorflow and wanted to check if everything was OK.

    1. You would need a separate repo then. 355.00.28 is older than 361.28. It will be included by default in 364.x or whatever.
      As with previous OpenGL releases, Nvidia adds the feature to some older driver so not everyone will jump on it.

  38. Hello, I am sorry, but I encountered a problem with your version of the 361.28 driver. After install the driver from your repo, some of the Steam games began to crash. Dota 2 crashed with error “Missing basic OpenGL v1.0 -> v2.0 required OpenGL functionality.”, other Valve games CS, HL2… ended with message “Could not find required OpenGL entry point ‘glGetError’! Either your video card is unsupported or your OpenGL driver needs to be updated.}}”. 32Bit libs where of-course installed.
    I followed workarounds described in wiki.archlinux.org/index.php/Steam. I also tried to deflect libs from Steam runtime-libs (via. /etc/ld.so.conf.d/steam.conf ldconfig….) all without any success.
    After uninstall the your driver and install it from default run file downloaded from nvidia.com all games began to work properly.
    I am using F23 x64, KDE, GTX960, dualmonitor.

    1. Unfortunately yes, this is due to some executables accessing non OpenGL ABI compliant stuff in the libGL.so.1 library, which are not exposed by libglvnd. I’ve reverted to the non-glvnd libGL.so.1 library as per Nvidia installer’s default:

      https://devtalk.nvidia.com/default/topic/915640/unix-graphics-announcements-and-news/multiple-glx-client-libraries-in-the-nvidia-linux-driver-installer-package/

      The latest nvidia-driver* packages should fix the issue.

  39. Think there’s a problem with the latest nvidia-driver-libs.

    old install:
    # tree /lib*/nvidia
    /lib64/nvidia
    β”œβ”€β”€ [ 260 May 20 2014] alternate-install-present
    β”œβ”€β”€ [ 16 Nov 18 13:23] libEGL.so.1 -> libEGL.so.340.96
    β”œβ”€β”€ [ 965K Nov 9 2:05] libEGL.so.340.96
    β”œβ”€β”€ [ 22 Nov 18 13:23] libGLESv1_CM.so.1 -> libGLESv1_CM.so.340.96
    β”œβ”€β”€ [ 47K Nov 9 2:05] libGLESv1_CM.so.340.96
    β”œβ”€β”€ [ 19 Nov 18 13:23] libGLESv2.so.2 -> libGLESv2.so.340.96
    β”œβ”€β”€ [ 61K Nov 9 2:05] libGLESv2.so.340.96
    β”œβ”€β”€ [ 15 Nov 18 13:23] libGL.so.1 -> libGL.so.340.96
    β”œβ”€β”€ [ 1.2M Nov 9 1:05] libGL.so.340.96
    β”œβ”€β”€ [ 18 Nov 18 13:23] libOpenCL.so.1 -> libOpenCL.so.1.0.0
    β”œβ”€β”€ [ 21K Nov 9 1:20] libOpenCL.so.1.0.0
    └── [ 4.0K Jan 25 0:58] xorg
    └── [ 13M Nov 9 1:09] libglx.so
    /lib/nvidia
    β”œβ”€β”€ [ 16 Nov 18 13:21] libEGL.so.1 -> libEGL.so.340.96
    β”œβ”€β”€ [ 647K Nov 9 2:12] libEGL.so.340.96
    β”œβ”€β”€ [ 22 Nov 18 13:21] libGLESv1_CM.so.1 -> libGLESv1_CM.so.340.96
    β”œβ”€β”€ [ 42K Nov 9 2:11] libGLESv1_CM.so.340.96
    β”œβ”€β”€ [ 19 Nov 18 13:21] libGLESv2.so.2 -> libGLESv2.so.340.96
    β”œβ”€β”€ [ 58K Nov 9 2:11] libGLESv2.so.340.96
    β”œβ”€β”€ [ 15 Nov 18 13:21] libGL.so.1 -> libGL.so.340.96
    β”œβ”€β”€ [ 1.0M Nov 9 1:11] libGL.so.340.96
    β”œβ”€β”€ [ 18 Nov 18 13:21] libOpenCL.so.1 -> libOpenCL.so.1.0.0
    └── [ 21K Nov 9 1:25] libOpenCL.so.1.0.0

    Latest:
    # tree /lib*/nvidia
    /lib64/nvidia
    β”œβ”€β”€ [ 260 May 20 2014] alternate-install-present
    β”œβ”€β”€ [ 18K Feb 3 18:09] libEGL.so.1
    β”œβ”€β”€ [ 18 Feb 9 17:46] libOpenCL.so.1 -> libOpenCL.so.1.0.0
    β”œβ”€β”€ [ 26K Feb 3 18:15] libOpenCL.so.1.0.0
    └── [ 4.0K Feb 15 20:52] xorg
    └── [ 12M Feb 3 18:14] libglx.so
    /lib/nvidia
    β”œβ”€β”€ [ 14K Feb 3 18:12] libEGL.so.1
    β”œβ”€β”€ [ 18 Feb 9 17:42] libOpenCL.so.1 -> libOpenCL.so.1.0.0
    └── [ 26K Feb 3 18:18] libOpenCL.so.1.0.0

    Appears we’re missing a pile of files all of a sudden.

    1. Actually you should do rpm -ql libglvnd nvidia-driver-libs, and not check the nvidia folder. The Nvidia labeled folder contains only the overrides to equally named system libraries; most of the libraries now have unique names.

      The libglvnd package is a placeholder that has been put in place until the base OS catches up (Mesa, etc.), so for now it’s still overriding the base libraries.

      If you want more details:
      https://devtalk.nvidia.com/default/topic/915640/unix-graphics-announcements-and-news/multiple-glx-client-libraries-in-the-nvidia-linux-driver-installer-package/

      Last question, are the packages working for you? They should pull in the libglvnd packages as a dependency.

  40. First off, everything has been working great, I really like this repository and prefer it to the packaged binary that NVIDIA distributes.

    I recently moved from Fedora 22 to Fedora 23, and now whenever I log in my NVIDIA settings are ignored. I’ve successfully added a section to my /etc/X11/xorg.conf.d which I generated with sudo nvidia-settings, so when I get the actual login screen on first boot both monitors are on in the proper layout. When I log into my user account the main monitor turns OFF and I am with just the second monitor enabled. I can open nvidia-settings again and fix them, but if I alt-f2 -> r -> enter and restart my gnome session the monitor settings immediately jump back to just one monitor.

    1. If anyone else is experiencing a similar problem, it has nothing to do with the NVIDIA drivers. You just need to delete ~/.config/monitors.xml and the problem should go away. Alt-F2 -> r -> enter to reset gnome session and verify.

  41. I installed Fedora 23. Updated it, add your repo and then installed nvidia-driver but now i get

    “Oh! Something has gone wrong”

    When trying to boot up GNOME. What might be?

    I have a ASUS 970, Intel Core i5 2500K, 16 Gigs of RAM and a ASUS P8Z68-V PRO.

    Thanks.

Leave a Reply