Oracle Linux#

_images/logo-oracle.png

This section covers:

  • Oracle Linux 8

  • Oracle Linux 9

Preparation#

  1. Perform the Pre-installation Actions.

  2. The kernel headers and development packages for the currently running kernel can be installed with:

    • Oracle Linux 9:

      # dnf install kernel-devel-matched kernel-headers
      

      If using the 64k kernel variant on aarch64:

      # dnf install kernel-64k-devel-matched kernel-headers
      
    • Oracle Linux 8:

      # dnf install kernel-devel-$(uname -r) kernel-headers
      
    • Oracle Linux 8/9 using the UEK kernel variant:

      # dnf install kernel-uek-devel-$(uname -r) kernel-headers
      

      If the kernel has been compiled with a different compiler than the default system one, the different compiler must be configured to build all the DKMS modules that need to be used with the UEK kernel.

      The system compiler:

      $ gcc --version | grep GCC
      gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-5.0.1)
      

      With an UEK 8 kernel, we can clearly see that the kernel package is built with a different compiler:

      $ cat /usr/src/kernels/6.12.0-100.28.2.2.el9uek.x86_64/.config | grep CONFIG_CC_VERSION_TEXT
      CONFIG_CC_VERSION_TEXT="gcc (GCC) 14.2.1 20250110 (Red Hat 14.2.1-7)"
      

      This compiler belongs to the GCC toolset 14 Software Collection:

      $ . /opt/rh/gcc-toolset-14/enable
      $ gcc --version | grep GCC
      gcc (GCC) 14.2.1 20250110 (Red Hat 14.2.1-7)
      

      DKMS must be configured to use the same compiler to build the modules.

      For DKMS up to 3.2.2:

      # cat /usr/src/nvidia-*/dkms.conf | grep MAKE | sed -e 's|=\"|=\"source /opt/rh/gcc-toolset-14/enable; |g' > /etc/dkms/nvidia.conf
      

      From DKMS 3.3.0:

      # echo build_environment=/opt/rh/gcc-toolset-14/enable > /etc/dkms/framework.conf.d/uek.conf
      

      After this, the modules can be built like any other DKMS module.

  3. Satisfy third-party package dependencies:

    The NVIDIA driver rpm packages depend on other external packages. Those packages are only available on third-party repositories, such as EPEL. Any such third-party repositories must be added to the package manager repository database before installing the NVIDIA driver rpm packages, or missing dependencies will prevent the installation from proceeding.

    • Oracle Linux 9

      # dnf config-manager --set-enabled ol9_codeready_builder
      # dnf install oracle-epel-release-el9
      
    • Oracle Linux 8

      # dnf config-manager --set-enabled ol8_codeready_builder
      # dnf install oracle-epel-release-el8
      
  4. Choose an installation method: Local Repository Installation or Network Repository Installation.

Local Repository Installation#

  1. Download the NVIDIA driver:

    $ wget https://developer.download.nvidia.com/compute/nvidia-driver/$version/local_installers/nvidia-driver-local-repo-$distro.$version.$arch.rpm
    

    where $version is the NVIDIA driver version

  2. Install local repository on file system:

    # rpm --install nvidia-driver-local-repo-$distro.$version*.$arch.rpm
    

Network Repository Installation#

  1. Enable the network repository. For x86_64:

    # dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/$distro/$arch/cuda-$distro.repo
    

    For aarch64:

    # dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/$distro/sbsa/cuda-$distro.repo
    
  2. Clean DNF repository cache:

    # dnf clean expire-cache
    

DNF module enablement#

This is required for distributions where content is not distributed as a flat repository but as a repository containing DNF module streams.

These instructions apply to both local and network installations.

Open Kernel Modules

# dnf module enable nvidia-driver:open-dkms
  • Example DKMS streams: 580-open or open-dkms

Proprietary Kernel Modules

# dnf module enable nvidia-driver:latest-dkms
  • Example DKMS streams: 580-dkms or latest-dkms

  • Example precompiled streams: 580 or latest

Driver Installation#

These instructions apply to both local and network installations.

Open Kernel Modules

# dnf install nvidia-open

Proprietary Kernel Modules

# dnf install cuda-drivers

Compute-only (Headless) and Desktop-only (no Compute) Installation#

It’s possible to install the driver without all the desktop components (GL, EGL, Vulkan, X drivers, and so on) to limit the footprint and dependencies on the system. With the same logic it’s possible to install a desktop system without any compute component.

Note

The components excluded at installation time can always be added at a later stage. This will pull in all the additional dependencies required.

Compute-only System#

Open Kernel Modules

# dnf install nvidia-driver-cuda kmod-nvidia-open-dkms

Proprietary Kernel Modules

# dnf install nvidia-driver-cuda kmod-nvidia-latest-dkms

Desktop-only System#

Open Kernel Modules

# dnf install nvidia-driver kmod-nvidia-open-dkms

Proprietary Kernel Modules

# dnf install nvidia-driver kmod-nvidia-latest-dkms

Reboot the System#

# reboot

Perform the Post-installation Actions.

Package Upgrades#

When a new version is available, a normal package update command specific for the distribution should suffice in upgrading the driver. The various differences in distributions would take care of obsolency and package switching when performing upgrades to a different branch.

When upgrading the driver to the same stream:

# dnf update

When upgrading the driver to a different stream:

# dnf module reset nvidia-driver
# dnf module enable nvidia-driver:<stream>
# dnf update --allowerasing

Or when switching from proprietary kernel modules to open kernel modules:

# dnf module reset nvidia-driver
# dnf module enable nvidia-driver:<stream>
# dnf install nvidia-open --allowerasing