NVIDIA DKMS Fails on Proxmox Kernel 7.0 — And How to Fix It

NVIDIA DKMS Fails on Proxmox Kernel 7.0 — And How to Fix It

If you run a Proxmox VE node with an NVIDIA GPU and recently ran apt full-upgrade, there's a good chance your system is now in a broken state. The new proxmox-kernel-7.0.0-3-pve was pushed as a default dependency a few days ago — and the NVIDIA DKMS module simply doesn't compile against it.

Here's what happened to me, and how I recovered cleanly.

The Setup

  • Proxmox VE 9.1 on Debian Trixie
  • GPU: NVIDIA GeForce GTX 1080 Ti (GP102, Pascal architecture)
  • Driver: nvidia 580.105.08 via DKMS
  • Previous kernel: 6.17.13-2-pve (working fine)

Pascal GPUs (GTX 900/1000 series) are locked to the 580.x driver branch — the newer 595.x series dropped support for Maxwell, Pascal, and Volta. No upgrade path there.

What Broke

After apt full-upgrade, the system pulled proxmox-kernel-7.0.0-3-pve and tried to build the NVIDIA module via DKMS. It failed with bad exit status: 2.

The make.log told the full story — multiple kernel API changes that 580.105.08 doesn't handle:

nvidia/nv-procfs.c: error: expected 'const struct proc_ops *'
  but argument is of type 'const nv_proc_ops_t *'
nvidia/nv-dma.c: error: control reaches end of non-void function
nvidia/nv-backlight.c: error: implicit declaration of function
  'get_backlight_device_by_name'; did you mean 'backlight_device_get_by_name'?
nv-linux.h: error: implicit declaration of function 'phys_to_dma'
nv-linux.h: error: implicit declaration of function 'dma_is_direct'

These aren't configuration issues. They're source-level incompatibilities — functions removed or renamed in kernel 7.0 that the NVIDIA driver doesn't yet patch for. The kernel 7.0 is very fresh and the NVIDIA open-source kernel module hasn't caught up yet.

The consequence: proxmox-kernel-7.0.0-3-pve-signed ended up in a half-configured state (hF in dpkg), and proxmox-default-kernel, proxmox-kernel-7.0, and even proxmox-ve were tangled in broken dependency chains.

The Recovery

The goal: get rid of the kernel 7.0 packages cleanly, restore proxmox-default-kernel to a version that points to 6.17, and make sure GRUB boots the right kernel.

Step 1 — Force-remove the broken kernel 7.0 packages

Normal apt remove won't work because of the broken dpkg state and dependency locks. Use:

dpkg --remove --force-remove-reinstreq --force-depends \
  proxmox-kernel-7.0.0-3-pve-signed \
  proxmox-kernel-7.0 \
  proxmox-default-kernel \
  proxmox-default-headers

Note: proxmox-ve will be protected by Proxmox's own apt hook — it won't let you remove it without explicit confirmation. That's a good safeguard.

Step 2 — Reinstall proxmox-default-kernel 2.0.2

Version 2.0.2 of proxmox-default-kernel depends on proxmox-kernel-6.17, not proxmox-kernel-7.0. Install it explicitly:

apt install proxmox-default-kernel=2.0.2 proxmox-default-headers=2.0.2

Step 3 — Pin to avoid re-upgrading to 2.1.0

Version 2.1.0 pulls kernel 7.0 back in. Pin both packages:

apt-mark hold proxmox-default-kernel proxmox-default-headers \
  proxmox-kernel-7.0 proxmox-kernel-7.0.0-3-pve-signed

Step 4 — Verify before rebooting

# GRUB should point to 6.17 as default
grep "menuentry\|linux.*vmlinuz" /boot/grub/grub.cfg | head -6

# initramfs must exist
ls -la /boot/initrd.img-6.17.13-6-pve

# DKMS should show installed on 6.17
dkms status
# expected: nvidia/580.105.08, 6.17.13-6-pve, x86_64: installed

If all three check out, you're good to reboot.

Current State of Kernel 7.0 + NVIDIA Support

According to the Proxmox forum thread tracking the kernel 7.0 rollout, at least one user reports that driver R535 v16.14 compiles under kernel 7.0, and speculates the same may be true for 580.159.03 — but this hasn't been confirmed yet for Pascal GPUs.

The 580.159.03 release (April 29, 2026) focuses on Wayland freeze fixes and DisplayPort MST stability — not kernel 7.0 compatibility patches. Until someone confirms it builds cleanly on 7.0.0-3-pve with a Pascal GPU, staying on 6.17 is the safe call.

When to Revisit

Watch for:

  1. A confirmed DKMS build of nvidia/580.x on 7.0.x-pve reported on the Proxmox forum
  2. NVIDIA changelog mentioning proc_ops, phys_to_dma, or kernel 7.x compatibility explicitly

When that lands, the migration is straightforward:

apt-mark unhold proxmox-default-kernel proxmox-default-headers
apt install proxmox-default-kernel  # will pull 2.1.0 → kernel 7.0
# watch the DKMS build output carefully before rebooting

Lessons Learned

  • Never run apt full-upgrade on a Proxmox node with NVIDIA DKMS without checking the kernel changelog first. A new default kernel version is a breaking change for GPU passthrough setups.
  • proxmox-default-kernel is versioned — you can pin an older minor version to stay on a specific kernel branch without holding the kernel package itself.
  • The Proxmox apt hook is your friend — it blocked the accidental removal of proxmox-ve and saved the node.
  • Always verify GRUB + initramfs + dkms status before rebooting after any kernel change.

Credits

  • Photo by Matheus Bertelli via Pexels
0
Did you enjoy this article? Give it a like.

Comments (0)

Leave a comment

Your comment will appear after review.

Your name and email are collected solely to identify your comment. Your email is never displayed publicly. Privacy policy.

Related articles