Testé sur : Proxmox VE 8.4.19 – 2× GTX 1650 (Turing)
Cas d’usage : Workspace virtualisé et gaming léger
Pourquoi faire ça ?
Par défaut, une carte graphique sous Proxmox ne peut être assignée qu’à une seule VM à la fois via le passthrough PCIe classique. La technologie vGPU (Virtual GPU) de NVIDIA permet de découper un GPU physique en plusieurs GPU virtuels, chacun assignable à une VM distincte.
C’est idéal pour du workspace (bureaux virtuels sous Windows) ou du gaming léger où une VM entière par GPU serait du gaspillage.
⚠️ Note légale : Le vGPU unlock sur GPU grand public (GTX/RTX) repose sur un contournement de la licence NVIDIA GRID, initialement réservée aux GPUs professionnels (Quadro/A-series). À utiliser dans un contexte personnel/lab uniquement.
Compatibilité
| Série GPU | Architecture | Version driver max |
|---|---|---|
| GTX 9xx | Maxwell | 16.9 (535.230.02) |
| GTX 10xx | Pascal | 16.9 (535.230.02) |
| GTX 16xx / RTX 20xx | Turing | 17.5 (550.144.02) |
Les GTX 1650 utilisées dans ce guide sont de l’architecture Turing → driver 17.5.
Prérequis
- Proxmox VE avec un processeur compatible IOMMU (Intel VT-d ou AMD-Vi activé dans le BIOS) [Ne fonctionne pas sur Core i3]
- Un ou plusieurs GPUs NVIDIA compatibles (voir tableau ci-dessus)
- Accès root à l’hôte
1. Configuration de l’hôte
1.1 Activer l’IOMMU dans GRUB
Éditez /etc/default/grub et modifiez la ligne GRUB_CMDLINE_LINUX_DEFAULT :
Intel (Core iX / Xeon) :
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
AMD (Ryzen / Threadripper / EPYC) :
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
iommu=pt(pass-through mode) améliore les performances en évitant la translation IOMMU pour les devices qui n’en ont pas besoin.
Régénérez la configuration GRUB :
update-grub
1.2 Blacklister les pilotes NVIDIA et activer VFIO
Ces étapes sont nécessaires pour que le GPU soit disponible pour le découpage vGPU NVIDIA au lieu d’être chargé par le driver standard.
# Activer les modules VFIO au démarrage
echo -e "vfio\nvfio_iommu_type1\nvfio_pci\nvfio_virqfd" >> /etc/modules
# Blacklister le driver open-source nouveau
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
echo "options nouveau modeset=0" >> /etc/modprobe.d/blacklist.conf
# Régénérer l'initramfs
update-initramfs -u -k all
1.3 Redémarrer et vérifier
reboot
Après redémarrage, vérifiez que l’IOMMU est bien actif :
dmesg | grep -e DMAR -e IOMMU
Sur un système AMD, vous devriez voir quelque chose comme :
[ 0.892898] pci 0000:00:00.2: AMD-Vi: IOMMU performance counters supported
[ 0.895039] pci 0000:00:00.2: AMD-Vi: Found IOMMU cap 0x40
Si cette commande ne retourne rien, vérifiez que l’IOMMU / VT-d est bien activé dans le BIOS avant de continuer.
2. Installation des dépendances
2.1 Mettre à jour Proxmox et installer les paquets nécessaires
apt update && apt dist-upgrade -y
apt install -y git build-essential dkms pve-headers mdevctl
⚠️ Après l’installation du driver vGPU, évitez de relancer
apt dist-upgradesans vérifier la compatibilité du nouveau kernel avec le module DKMS, ça peut casser le driver.
2.2 Cloner le dépôt de patch vGPU
cd /root
git clone https://gitlab.com/polloloco/vgpu-proxmox.git
2.3 Compiler vgpu_unlock-rs
La librairie vgpu_unlock-rs est le cœur du patch, elle intercepte les appels du service NVIDIA pour débloquer les fonctionnalités vGPU sur les GPUs grand public.
cd /opt
git clone https://github.com/mbilker/vgpu_unlock-rs.git
# Installer Rust
curl https://sh.rustup.rs -sSf | sh -s -- -y --profile minimal
source $HOME/.cargo/env
# Compiler
cd /opt/vgpu_unlock-rs
cargo build --release
3. Configuration de vGPU Unlock
3.1 Créer les fichiers de configuration
mkdir /etc/vgpu_unlock
touch /etc/vgpu_unlock/profile_override.toml
3.2 Injecter la librairie dans les services NVIDIA
Créez les overrides systemd pour que libvgpu_unlock_rs.so soit chargée au démarrage des services NVIDIA :
mkdir /etc/systemd/system/nvidia-vgpud.service.d
mkdir /etc/systemd/system/nvidia-vgpu-mgr.service.d
cat > /etc/systemd/system/nvidia-vgpud.service.d/vgpu_unlock.conf << 'EOF'
[Service]
Environment=LD_PRELOAD=/opt/vgpu_unlock-rs/target/release/libvgpu_unlock_rs.so
EOF
cat > /etc/systemd/system/nvidia-vgpu-mgr.service.d/vgpu_unlock.conf << 'EOF'
[Service]
Environment=LD_PRELOAD=/opt/vgpu_unlock-rs/target/release/libvgpu_unlock_rs.so
EOF
4. Installation du driver NVIDIA GRID
4.1 Télécharger le bon driver
Les drivers GRID patchés sont disponibles ici : https://alist.homelabproject.cc/foxipan/vGPU/
⚠️ Ce lien externe peut mourir. Si c’est le cas, cherchez « vgpu-proxmox driver mirror » sur Internet.
Pour les GTX 1650 (Turing), on utilise la version 17.5 :
NVIDIA-Linux-x86_64-550.144.02-vgpu-kvm.run
4.2 Patcher le driver
chmod +x NVIDIA-Linux-x86_64-550.144.02-vgpu-kvm.run
cd /root
./NVIDIA-Linux-x86_64-550.144.02-vgpu-kvm.run --apply-patch ~/vgpu-proxmox/550.144.02.patch
Cette commande génère un fichier NVIDIA-Linux-x86_64-550.144.02-vgpu-kvm-custom.run.
4.3 Installer le driver patché
./NVIDIA-Linux-x86_64-550.144.02-vgpu-kvm-custom.run --dkms -m=kernel
L’option --dkms permet au module kernel d’être recompilé automatiquement lors des mises à jour du kernel (avec les réserves mentionnées plus haut).
4.4 Redémarrer
reboot
5. Vérification
Le driver est chargé ?
nvidia-smi
Cette commande doit lister vos GPUs NVIDIA. Si elle retourne une erreur, le driver n’est pas chargé correctement.
Le patch vGPU fonctionne ?
mdevctl types
Si le patch a fonctionné, cette commande retourne la liste des types de vGPU disponibles pour chaque GPU physique, par exemple :
0000:05:00.0
nvidia-256
Available instances: 24
Device API: vfio-pci
...
Si mdevctl types ne retourne rien, le patch n’a pas fonctionné. Vérifiez les logs systemd des services NVIDIA :
systemctl status nvidia-vgpud
systemctl status nvidia-vgpu-mgr
En collaboration avec HulkHogan6262

Laisser un commentaire