GPU Passthrough
NVidia
Source Autre source Encore une autre
Sur le serveur ProxMox l'on peut installé DKMS pour ne pas perdre le module du pilote lorsque le kernel est mise à jour :
# apt update && apt upgrade # apt install dkms
Se rendre sur ce site et choisir un pilote compatible avec le patch pour supprimé la limite de sessions, télécharger l'ensemble sur le serveur et les containeurs :
Si nécessaire on install git :
# apt install git
Puis on récupère les fichiers :
# mkdir /opt/nvidia-driver # cd /opt/nvidia-driver/ # wget https://international.download.nvidia.com/XFree86/Linux-x86_64/470.74/NVIDIA-Linux-x86_64-470.74.run # git clone https://github.com/keylase/nvidia-patch
Ensuite on commence par configurer ProxMox :
ProxMox
- On installe les prérequis si nécessaire :
proxmox:~# apt install pve-headers
- On installe le pilote :
proxmox:~# bash /opt/nvidia-driver/NVIDIA-Linux-x86_64-470.74.run
Si nécessaire on demande à l'installateur de remplacer le pilote "nouveau" au démarrage :
On le décharge :
proxmox:~# rmmod nouveau
On relance l'installation :
proxmox:~# bash /opt/nvidia-driver/NVIDIA-Linux-x86_64-470.74.run
- On accepte d'enregistrer le module dans DKMS pour éviter de devoir le réinstaller lors de la mise à jour du kernel :
- On applique le patch pour supprimer la limite de sessions :
proxmox:~# bash /opt/nvidia-driver/nvidia-patch/patch.sh
On peut également appliquer le patch pour autoriser "NvFBC" :
proxmox:~# bash /opt/nvidia-driver/nvidia-patch/patch-fbc.sh
- On force le chargement de modules au démarrage :
proxmox:~# vi /etc/modules-load.d/modules.conf
... # Nvidia modules nvidia nvidia_uvm
proxmox:~# update-initramfs -u -k all
- On force la création de fichiers qui en utilisation normale ne sont créés qu'a la demande :
proxmox:~# vi /etc/udev/rules.d/70-nvidia.rules
KERNEL=="nvidia", RUN+="/bin/bash -c '/usr/bin/nvidia-smi -L && /bin/chmod 666 /dev/nvidia*'" KERNEL=="nvidia_uvm", RUN+="/bin/bash -c '/usr/bin/nvidia-modprobe -c0 -u && /bin/chmod 0666 /dev/nvidia-uvm*'"
- On redémarre le serveur, on peut ensuite vérifier l'installation avec la commande "nvidia-smi"
proxmox:~# nvidia-smi
- Ensuite il faut noter le numéro du "cgroup" à autoriser pour le conteneur :
proxmox:~# ls -l /dev/nvidia*
crw-rw-rw- 1 root root 195, 0 Oct 23 15:59 /dev/nvidia0 crw-rw-rw- 1 root root 195, 255 Oct 23 15:59 /dev/nvidiactl crw-rw-rw- 1 root root 510, 0 Oct 23 15:59 /dev/nvidia-uvm crw-rw-rw- 1 root root 510, 1 Oct 23 15:59 /dev/nvidia-uvm-tools
On édite la configuration du conteneur LXC, ici pour exemple le conteneur "101" :
proxmox:~# vi /etc/pve/lxc/101.conf
# Allow cgroup access lxc.cgroup.devices.allow: c 195:* rwm lxc.cgroup.devices.allow: c 510:* rwm # Pass through device files lxc.mount.entry: /dev/nvidia0 dev/nvidia0 none bind,optional,create=file lxc.mount.entry: /dev/nvidiactl dev/nvidiactl none bind,optional,create=file lxc.mount.entry: /dev/nvidia-uvm dev/nvidia-uvm none bind,optional,create=file lxc.mount.entry: /dev/nvidia-modeset dev/nvidia-modeset none bind,optional,create=file lxc.mount.entry: /dev/nvidia-uvm-tools dev/nvidia-uvm-tools none bind,optional,create=file
Conteneur LXC
- Après avoir démarré ou redémarré le conteneur, on install le pilote :
LXC:~# bash /opt/nvidia/NVIDIA-Linux-x86_64-470.74.run --no-kernel-module
- On installe le patch pour supprimer la limite de sessions :
LXC:~# bash /opt/nvidia/nvidia-patch/patch.sh
Optionnelement on peut activer "NvFBC"
LXC:~# bash /opt/nvidia/nvidia-patch/patch-fbc.sh
Et pour finir on vérifie l'installation avec la commande "nvidia-smi" :
LXC:~# nvidia-smi

