This document summarizes the end‑to‑end, known‑good process to:
- Enable GPU passthrough on Proxmox VE
- Create a Debian 13 (trixie) VM
- Attach an RTX 5090 via PCI passthrough
- Run the VM headless (Display: none)
- Access the VM via serial console and SSH
The steps are ordered and opinionated to avoid the common traps.
Edit /etc/default/grub on the Proxmox host:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
(Use amd_iommu=on iommu=pt on AMD CPUs.)
Apply and reboot:
update-grub
rebootVerify:
dmesg | grep -e IOMMU -e DMARConfirm device IDs:
lspci -nn | grep -i nvidiaExample (yours):
- GPU:
10de:2b85 - Audio:
10de:22e8
Create VFIO binding:
echo "options vfio-pci ids=10de:2b85,10de:22e8 disable_vga=1" > /etc/modprobe.d/vfio.confBlacklist nouveau:
echo -e "blacklist nouveau\noptions nouveau modeset=0" > /etc/modprobe.d/blacklist-nouveau.confEnsure VFIO modules load:
printf "vfio\nvfio_pci\nvfio_iommu_type1\n" > /etc/modules-load.d/vfio.confRebuild initramfs and reboot:
update-initramfs -u -k all
rebootVerify after reboot:
lspci -nnk | grep -A3 -i nvidiaExpected:
Kernel driver in use: vfio-pci
General
- Any VM ID / Name
OS
- Debian 13 (trixie) ISO
- Guest OS: Linux
System (CRITICAL)
- BIOS: OVMF (UEFI)
- Add EFI Disk: ✔ (Pre‑enroll keys ❌)
- Machine: q35
- SCSI Controller: VirtIO SCSI single
- QEMU Agent: ✔
Disks / CPU / Memory / Network
- Defaults are fine
- Network model: VirtIO
Create the VM but do not rely on GPU yet.
During installation, you need some console.
Recommended:
- Display: Standard VGA (or SPICE)
Install Debian normally.
Inside Debian, install essentials:
apt install openssh-server qemu-guest-agentEnable guest agent:
systemctl enable --now qemu-guest-agentConfirm you can SSH into the VM.
- VM → Hardware → Display → None
(noVNC will no longer work — this is expected)
-
VM → Hardware → Add → Serial Port
- Port:
serial0
- Port:
-
VM → Options → Console → set to Serial0
Inside Debian (one‑time):
systemctl enable serial-getty@ttyS0.service
systemctl start serial-getty@ttyS0.serviceNow the Proxmox Console button works even with Display: none.
Add GPU:
- Hardware → Add → PCI Device
- Device:
0000:e1:00.0 - ✔ PCI‑Express
- ❌ Primary GPU
- ❌ ROM‑Bar
Add audio:
- Device:
0000:e1:00.1 - ✔ PCI‑Express
Do NOT enable “Primary GPU” (this avoids x-vga crashes).
Inside Debian:
lspci | grep -i nvidiaYou should now see:
NVIDIA Corporation GB202 [GeForce RTX 5090]
Enable non‑free repositories:
deb http://deb.debian.org/debian trixie main contrib non-free non-free-firmware
deb http://deb.debian.org/debian-security trixie-security main contrib non-free non-free-firmware
deb http://deb.debian.org/debian trixie-updates main contrib non-free non-free-firmware
Install headers + driver:
apt update
apt install linux-headers-$(uname -r)
apt install nvidia-driver firmware-misc-nonfreeReboot the VM.
Verify:
nvidia-smi- ❌ noVNC / VGA
- ✅ Serial console (Proxmox Web UI)
- ✅ SSH (
ssh user@vm_ip) - ✅ Full RTX 5090 acceleration inside Debian
- Never install NVIDIA drivers on the Proxmox host
- q35 + OVMF is mandatory
- Do NOT use Primary GPU / x‑vga
- Display: none + Serial Port is the correct headless setup
- RTX 5090 works cleanly with Debian 13 + modern Proxmox
This configuration is stable, repeatable, and avoids all known RTX 50‑series passthrough pitfalls.