hostnamectl; # tested on
Static hostname: debian12
Chassis: vm
Virtualization: kvm
Operating System: Debian GNU/Linux 12 (bookworm) 
Kernel: Linux 6.1.0-37-amd64
Architecture: x86-64
Hardware Vendor: QEMU
Hardware Model: Standard PC _Q35 + ICH9, 2009_
Firmware Version: 1.16.3-debian-1.16.3-2

hostnamectl; # also tested in
Static hostname: debian13-desktop
Virtualization: kvm
Operating System: Debian GNU/Linux 13 (trixie) 
Kernel: Linux 6.12.38+deb13-amd64
Architecture: x86-64
Hardware Vendor: QEMU
Hardware Model: Standard PC _Q35 + ICH9, 2009_
Firmware Version: 1.16.3-debian-1.16.3-2

# gpu used it was pci-passed-through from host to vm like this
nvidia RTX 5060 Ti 16GByte

# in theory it's as easy as...
# but it's not
# workflow: try all available drivers until the user finds a driver that works for this specific model X-D
apt update && apt upgrade; # upgrade system to latest

# is wayland used?
echo $XDG_SESSION_TYPE
x11 <- no GNU Linux MATE does not use (yet) wayland (see what desktops support wayland)
# for example apt install gnome; # does support it

vim /etc/apt/sources.list; # modify and add contrib non-free non-free-firmware to this line
deb http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware

if user has GPU (older than 5060)

# check compatibility list (this is the "default" Debian approach)
# https://docs.nvidia.com/datacenter/tesla/tesla-release-notes-535-247-01/index.html#abstract
# https://docs.nvidia.com/ai-enterprise/release-4/4.6/support/support-matrix.html
# if user's GPU is on the list try
apt install nvidia-driver firmware-misc-nonfree; # this will install version 535.247.01-1~deb12u1
# alternatively: "open" flavor = additionally nvidia-open-kernel-dkms
apt install nvidia-open-kernel-dkms nvidia-driver firmware-misc-nonfree
# disable nouveau driver
echo 'blacklist nouveau' >> /etc/modprobe.d/blacklist.conf;
echo 'options nouveau modeset=0' >> /etc/modprobe.d/blacklist.conf;
# but it's not
dmesg
[ 23.111799] nvidia 0000:07:00.0: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=none
[ 23.111818] NVRM: The NVIDIA GPU 0000:07:00.0 (PCI ID: 10de:xxxx)
NVRM: installed in this system is not supported by the
NVRM: NVIDIA 535.247.01 driver release.
NVRM: Please see 'Appendix A - Supported NVIDIA GPU Products'
NVRM: in this release's README, available on the operating system
NVRM: specific graphics driver download page at www.nvidia.com.

# still no luck
dmesg
16.663785] NVRM: The NVIDIA GPU 0000:07:00.0 (PCI ID: 10de:xxxx)
NVRM: installed in this system requires use of the NVIDIA open kernel modules.
[ 16.663815] NVRM: GPU 0000:07:00.0: RmInitAdapter failed! (0x22:0x56:884)
[ 16.666582] NVRM: GPU 0000:07:00.0: rm_init_adapter failed, device minor number 0

apt install -y nvidia-open-kernel-dkms
The following packages have unmet dependencies:
nvidia-open-kernel-dkms : Depends: firmware-nvidia-gsp (= 535.247.01) but it is not installable or
firmware-nvidia-gsp-535.247.01 but it is not installable

# newer card not on the list?

# user got to download driver manually from nvidia
# try to find the right driver(s) via the suppor form https://www.nvidia.com/en-us/drivers/
# which at the time of writing is
# Driver Version: 570.172.08 https://www.nvidia.com/en-us/drivers/details/249194/ tested and worked :D

# NVIDIA-Linux-x86_64-570.169.run; # tested and worked
# NVIDIA-Linux-x86_64-575.51.02.run; # tested DID NOT WORK with 5060!

# directly download nvidia drivers
mkdir /home/user/software
cd /home/user/software
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/570.172.08/NVIDIA-Linux-x86_64-570.172.08.run

# install dependencies or it will complain like
# "check that pkg-config and libglvnd development libraries are installed"
apt install make gcc pkg-config libglvnd-dev linux-source linux-headers-$(uname -r)

# list all services
systemctl list-unit-files --type=service|less

# stop possible xrandr loop for kvm resize screen
systemctl stop rc-local.service;
systemctl stop rc.service;
systemctl stop rcS.service;

systemctl stop x11-common.service; systemctl stop lightdm.service; # stop mate x11 desktop

# user will see a blinking cursor _
# hit Ctrl+Alt+F1 to switch to console 1
# login as root

# alternatively: go single user mode ( to go back init 5)
init 2

# hit Ctrl+Alt+F1
# login as root  # start driver setup
./NVIDIA-Linux-x86_64-570.172.08.run

# should look like this
# MIT/GPL should work for Debian12 and Debian13


dmesg; # chosing proprietary will make Debian 13 complain
[ 32.220283] NVRM: The NVIDIA GPU 0000:08:00.0 (PCI ID: 10de:2d04)
NVRM: installed in this system requires use of the NVIDIA open kernel modules.

# but if MIT/GPL does not work for Debian 12 then go "NVIDIA Proprietary"





# if it outputs on the wrong monitor only (the virt-manager virtio device)
# then go single-user-mode (init 2) and reinstall via ./NVIDIA.run and chose "No" here




# reboot
reboot

# and if there is monitor output on the GPU :D

# put on favorite song and don't stop dancing until music stops! :D



# run this tool to check on the GPU
apt install nvtop
nvtop
 
# or alternatively
watch nvidia-smi



run some 3D Benchmarks 😀

and games…

super tux kart HIGHLY recommended “play soccer with cars” multiplayer (up to 4x players on 1x PC :D) game of course runs with 60 FPS straight with GPU barely having to lift a core (15 to 25% load)…

WARNING! the pros playing online are PROS!

[+] SuperTuxKart runs at 60FPS joypad support working (USB-forward-it) straight no problem

wget https://powerboard4.basemark.com/distribution/sacredpath-1.0.2/amd64_ubuntu20_amd64_launcher_sacredpath_free_1.0.2.tar.gz
tar fxvz amd64_ubuntu20_amd64_launcher_sacredpath_free_1.0.2.tar.gz

# as non-root default user run it like
./gpuscore
# MAKE SURE TO SELECT NVIDIA GPU (not llvmpipe!)
wget https://powerboard4.basemark.com/distribution/breakinglimit-1.0.1/amd64_ubuntu20_amd64_launcher_breakinglimit_free_1.0.1.tar.gz
# ULTRA is VERY GPU demanding X-D
[+] SvenCoop works with 200FPS on wayland (desktops support wayland) (15% GPU usage)
# but it has only like 15 to 30FPS for x11 (the GPU is barely lifting a CORE)

# UNTESTED!: cuda driver only setup
wget https://developer.download.nvidia.com/compute/cuda/12.9.1/local_installers/cuda-repo-debian12-12-9-local_12.9.1-575.57.08-1_amd64.deb
sudo dpkg -i cuda-repo-debian12-12-9-local_12.9.1-575.57.08-1_amd64.deb
sudo cp /var/cuda-repo-debian12-12-9-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-9

/usr/local/cuda-12.9/bin/nvcc --version; # check what version of cuda is installed
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Tue_May_27_02:21:03_PDT_2025
Cuda compilation tools, release 12.9, V12.9.86
Build cuda_12.9.r12.9/compiler.36037853_0

gaming on GNU Linux: how does proton relate to vulkan?

Proton is a compatibility layer developed by Valve that allows running Windows games on GNU Linux. It uses Wine and additional libraries to provide a translation layer between Windows and Linux, enabling many Windows games to run on Linux.

https://vulkan.org/ https://vulkan.gpuinfo.org/listdevices.php, on the other hand, is a low-level, cross-platform graphics API (Application Programming Interface) developed by the Khronos Group. It provides a more efficient and flexible way for developers to create graphics and compute applications.

Proton uses Vulkan under the hood to provide a compatible and performant graphics API for running Windows games on Linux. Specifically, Proton uses the Vulkan API to translate DirectX 11 and 12 calls”

steam?

yes but steam seems to be build for 32Bit so there is some strange stuff that needs to be installed even on amd64 system

su - root
dpkg --add-architecture i386
apt update && apt install steam-installer
apt install mesa-vulkan-drivers libglx-mesa0:i386 mesa-vulkan-drivers:i386 libgl1-mesa-dri:i386
apt install steam; # when that is done
# Ctrl+D log off root, become non-root default user
steam; # start steam, it will actually start downloading itself 400MBytes

misc:

how to uninstall nvidia driver?

this is a good question X-D

  • try to disable the xorg config:
    • mv /etc/X11/xorg.conf /etc/X11/xorg.conf.disabled
  • then reboot and instead of PCIe NVIDIA GPU, onboard GPU should be used
vim /etc/X11/xorg.conf.disabled

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 570.169

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Unknown"
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BusID          "PCI:7:0:0"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection


liked this article?

  • only together we can create a truly free world
  • plz support dwaves to keep it up & running!
  • (yes the info on the internet is (mostly) free but beer is still not free (still have to work on that))
  • really really hate advertisement
  • contribute: whenever a solution was found, blog about it for others to find!
  • talk about, recommend & link to this blog and articles
  • thanks to all who contribute!
admin