explaingit

nvidia/open-gpu-kernel-modules

16,991CAudience · ops devopsComplexity · 5/5Setup · hard

TLDR

NVIDIA's open-source Linux kernel driver modules for their GPUs, letting advanced users, distribution packagers, and system integrators build the low-level GPU driver from source and inspect how it works.

Mindmap

mindmap
  root((NVIDIA open GPU))
    What it does
      Open-source kernel driver
      Build from source
      GPU hardware interface
    Architecture
      OS-agnostic binary component
      Kernel interface layer
      Matching GSP firmware
    Platforms
      Linux x86 64-bit
      Linux aarch64
      Turing GPU and newer
    Use cases
      Distro packaging
      Firmware extraction
      Driver inspection
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build NVIDIA kernel modules from source to package them for a custom or hardened Linux distribution.

USE CASE 2

Inspect how the NVIDIA driver communicates with the Linux kernel for security auditing or research.

USE CASE 3

Extract firmware blobs from the NVIDIA driver release so the open-source Nouveau driver can use them on Turing-class hardware.

USE CASE 4

Compile and install open-source kernel modules on an aarch64 server with an NVIDIA Ampere GPU.

Tech stack

CLinuxGCCClangMake

Getting it running

Difficulty · hard Time to first run · 1day+

Must be paired with the matching NVIDIA driver release (v595.71.05), requires root, kernel headers, and a Turing-or-later GPU.

License information is not mentioned in the repository description.

In plain English

This repository holds NVIDIA's open-source code for the Linux kernel modules that let an NVIDIA graphics card work on a Linux computer. The kernel module is the low-level piece living inside the operating system kernel that talks to the GPU hardware, what every program ultimately depends on to reach the card. Until this project, that piece of NVIDIA's driver was closed source. The README is mostly build and packaging instructions. You compile the modules with a single make modules command and install them with make modules_install as root. The modules built here must be paired with matching GSP firmware and user-space driver components from the same NVIDIA driver release (the README pins version 595.71.05), the rest of the driver can be installed from NVIDIA's .run file with a flag that skips its built-in kernel modules. Both x86_64 and aarch64 CPU architectures are supported. Any reasonably modern GCC or Clang works, and Linux kernel 4.15 or newer is supported. Each NVIDIA kernel module is split into an OS-agnostic component, shipped as a pre-built binary because it is large and slow to compile, and a kernel interface layer that has to be rebuilt for the specific kernel you are running. The repo also includes scripts for extracting firmware so the community Nouveau driver can use it. Compatible hardware is anything from the Turing generation of GPUs onward. Use this code if you are a Linux distribution packager, system integrator, or advanced user who wants to build NVIDIA's modules from source rather than using the prebuilt installer, or if you want to inspect or contribute to how the driver speaks to the kernel. The full README is longer than what was provided.

Copy-paste prompts

Prompt 1
Walk me through compiling and installing NVIDIA's open-source kernel modules from source on Ubuntu 22.04 with an RTX 3090, including pairing with the matching user-space driver version.
Prompt 2
I am packaging NVIDIA open-source kernel modules for a custom Linux distribution. What build flags and kernel compatibility requirements do I need to know?
Prompt 3
How do I use the NVIDIA open-gpu-kernel-modules repo to extract firmware for the Nouveau driver and enable it on a Turing GPU?
Prompt 4
I have an aarch64 server with an NVIDIA A100. Walk me through building and installing the open-source kernel modules and verifying they load correctly.
Open on GitHub → Explain another repo

← nvidia on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.