Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Per-GPU Driver Notes

This page collects device-specific driver notes for the three GPU vendors InterGenOS supports: AMD, NVIDIA, and Intel. It covers what ships by default, where the vendor-specific configuration lives, and the device quirks worth knowing before you commit to a setup.

The guiding principle here is the same one that runs through the rest of the system: a machine you understand, can modify, and can trust. Every load-bearing driver flag lives somewhere you can read it back, and the proprietary paths are opt-in rather than baked into the default install. A default that pulls in a large vendor driver stack expands the trusted surface of every install whether or not that hardware is present, so the open, vendor-neutral path is the default and the vendor stacks are something you choose to add.

For backend selection (which compute path inference uses) see Overview & Backend Selection. This page is about the kernel-level GPU driver itself.

AMD

AMD GPUs run on the open in-kernel amdgpu driver that ships with the kernel. There is no separate proprietary kernel module to install, sign, or rebuild for graphics and Vulkan, so AMD is the lowest-friction path on InterGenOS: the default image drives the display and accelerates Vulkan inference out of the box.

For the ROCm compute stack used by the opt-in AMD inference backend, see ROCm (AMD) and the ROCm-from-Source Build Pipeline. ROCm is a userspace toolkit layered on top of the same in-kernel amdgpu driver; enabling it does not replace the graphics driver.

NVIDIA

NVIDIA support is provided by the opt-in nvidia package in the extra tier, built around NVIDIA’s open kernel modules. The package is the most involved of the three because the modules are out-of-tree and must be built and signed against your running kernel. It is mirror-only: it never lands on an ISO without explicit action, and it carries a hardware floor (Turing-class / RTX 20xx / GTX 16xx or newer); pre-Turing hardware falls back to the in-kernel nouveau driver.

What the package ships by default

  • Kernel cmdline fragment at /etc/kernel/cmdline.d/40-nvidia.conf carrying nvidia-drm.modeset=1 nvidia-drm.fbdev=1. modeset=1 enables Kernel Mode Setting, which Wayland requires. fbdev=1 provides a kernel framebuffer device, required on Linux 6.11 and later (InterGenOS ships kernel 6.18.10). These flags affect boot, so they live on the kernel cmdline rather than in modprobe.d; the kernel post-install hook merges cmdline.d fragments into the signed UKI’s .cmdline section at UKI-rebuild time.
  • Nouveau blacklist at /etc/modprobe.d/nvidia-nouveau-blacklist.conf with both blacklist nouveau and options nouveau modeset=0. The two-line pattern is deliberate: the blacklist covers the modules-load and udev paths, and modeset=0 covers the early-KMS auto-detect path that would otherwise bring nouveau up to fight nvidia for the framebuffer.
  • Wayland environment defaults at /etc/environment.d/91-nvidia-wayland.conf setting GBM_BACKEND=nvidia-drm and __GLX_VENDOR_LIBRARY_NAME=nvidia, routing the compositor and GL/GLX applications to NVIDIA’s libraries.
  • prime-run wrapper for per-application PRIME offload on hybrid laptops.
  • VRAM save/restore services enabled by default to preserve VRAM contents across sleep transitions: nvidia-suspend.service, nvidia-resume.service, and nvidia-hibernate.service. (nvidia-persistenced.service ships disabled; compute users opt into it explicitly.)

Where these flags live, and why some sit on the kernel cmdline while others sit in modprobe.d, is split by mechanism: boot-time flags the kernel reads before modprobe runs go on the cmdline (auditable at cat /proc/cmdline); module-load policy and post-boot module options go in modprobe.d (auditable at lsmod and modinfo).

Module signing

The kernel ships CONFIG_MODULE_SIG_FORCE=y, so every loadable module must carry a signature from a key the kernel trusts. NVIDIA’s modules are not exempt. At install time the package signs each freshly built nvidia*.ko with the per-machine Machine Owner Key (MOK) that Forge generated during installation, using the kernel-native scripts/sign-file (PKCS#7); that MOK is enrolled at the firmware level on first boot through MokManager and chains through the kernel’s secondary trusted keyring under CONFIG_MODULE_SIG_FORCE=y.

If modprobe nvidia fails with “Required key not available” after install, the most common cause is that the MOK was never enrolled or enrollment was declined at the MokManager prompt. Quick check:

mokutil --sb-state          # is Secure Boot on?
mokutil --list-enrolled     # is the InterGenOS MOK enrolled?

Hybrid graphics (Optimus / MUX laptops)

Most NVIDIA laptops pair an Intel iGPU with an NVIDIA dGPU. The package supports the common BIOS configurations (hybrid, iGPU-only, dGPU-only). The shipped default routes the system-wide Wayland session to NVIDIA, which means the dGPU stays awake whenever the display is active. That is the right default for someone who installed the package specifically to use the dGPU, but it costs battery.

To run iGPU-default with NVIDIA on demand, remove the system-wide Wayland defaults and launch GPU-heavy apps through prime-run:

sudo rm /etc/environment.d/91-nvidia-wayland.conf
# log out and back in, then:
prime-run <application>

GNOME 49 exposes the same offload path in the GUI through “Launch using Discrete Graphics Card” on a .desktop entry’s right-click menu.

Device-specific notes

  • Ampere mobile (RTX 30xx laptops): some parts have GSP firmware bugs that prevent the open kernel modules from loading. The workaround is to disable GSP firmware load by adding options nvidia NVreg_EnableGpuFirmware=0 to a file under /etc/modprobe.d/ (any name modprobe reads, e.g. nvidia-extras.conf), then rebuilding the modules and rebooting. This costs a slightly larger driver memory footprint and disables some advanced features. Do not apply it to desktop Ampere or to Ada / Blackwell hardware, which need GSP.
  • Ada / Blackwell laptops: working GSP firmware in driver 580; no known issues with the default configuration.
  • Hybrid battery savings: options nvidia NVreg_DynamicPowerManagement=0x02 powers the dGPU down to D3 when idle, reducing idle draw on Optimus systems.
  • Runtime MUX switching: InterGenOS does not currently expose a UI for live BIOS-level GPU swap. Use your laptop vendor’s tool or the BIOS menu.

For the opt-in CUDA inference backend, see CUDA (NVIDIA). CUDA is a userspace runtime layered on top of these kernel modules.

Intel

Intel integrated GPUs run on the open in-kernel i915 driver that ships with the kernel, the same driver that drives the display on NVIDIA hybrid laptops in their default hybrid BIOS mode. As with AMD, there is no proprietary kernel module to install or sign for graphics and Vulkan, and the default image accelerates Vulkan inference on Intel iGPUs through the open driver.

At a glance

VendorKernel driverShips by defaultSigning requiredInference backend
AMDamdgpu (in-tree)YesNoVulkan (default), ROCm (opt-in)
NVIDIAopen kernel modules (out-of-tree, nvidia package)No (opt-in extra tier)Yes (MOK)Vulkan (default), CUDA (opt-in)
Inteli915 (in-tree)YesNoVulkan (default)

See also