Pilote NVidia 470.xx sous Debian 13 Trixie
Dans mon quotidien professionnel, je suis régulièrement confronté à du matériel un peu ancien, notamment dans un lycée privé de la région dont j'administre le parc de machines qui tourne à 100 % sous Linux.
Certaines de ces machines sont équipées d'une carte graphique NVidia GeForce GT 710. Avec ce genre de carte, on se retrouve confronté à un dilemme :
-
Accepter les performances modestes du pilote libre
nouveau. -
Sauter à travers des cerceaux en feu pour installer le pilote propriétaire
nvidia.
Je ne vais pas faire le choix à votre place. Je me contente simplement de décrire la procédure ─ pas tout à fait triviale certes ─ pour installer le pilote propriétaire. Elle est le fruit d'un après-midi pluvieux passé à expérimenter en mode tentative et échec.
Le pilote 470.xx n'est plus maintenu par NVidia
Le pilote propriétaire adapté à cette carte n'est plus officiellement maintenu par NVidia. Je vais utiliser la dernière version du pilote publiée par le fabricant en connaissance de cause et l'adapter pour qu'il fonctionne correctement sur un système Debian moderne.
Avant de mettre la main à la pâte
Je pars d'une installation standard de Debian 13 Trixie. J'ai juste remplacé GNOME par KDE dans l'installateur, mais pour le reste, j'utilise la configuration par défaut.
J'effectue la mise à jour initiale du système :
J'installe les outils de construction nécessaires :
Je bascule en mode console :
Blacklister le module nouveau
Le module libre nouveau utilisé par défaut entre en conflit avec le module
propriétaire nvidia. Avant toute chose, je vais donc empêcher le chargement
de ce module. Pour ce faire, je vais créer un fichier
/etc/modprobe.d/nouveau-blacklist.conf et l'éditer comme ceci
Je reconstruis le disque mémoire initial :
Je redémarre :
Résolution de la console
Vous constaterez au démarrage que la résolution de la console a changé, et ce n'est pas toujours très beau à voir. C'est même franchement moche. Ne vous inquiétez pas, on va gérer tout ça en temps et en heure.
Je vérifie que le module nouveau n'est pas chargé :
Télécharger le pilote
Je crée un répertoire pour récupérer le pilote :
Je me rends sur le site de NVidia et je recherche le pilote approprié pour ma carte :
Je récupère le fichier NVIDIA-Linux-x86_64-470.256.02.run et je le range dans
mon répertoire local nvidia.
# ls -lh NVIDIA-Linux-x86_64-470.256.02.run
-rw-r--r-- 1 root root 261M May 23 2024 NVIDIA-Linux-x86_64-470.256.02.run
Télécharger les patchs
Dans l'état actuel des choses, le pilote ne fonctionne pas sur un système Debian 13 pour toute une série de raisons que je ne détaillerai pas trop ici.
Je suis allé voir du côté de Slackware Linux, une distribution que j'ai utilisée pendant de longues années. J'ai trouvé mon bonheur sur le site SlackBuilds.org, un projet qui fournit tout ce qu'il faut pour construire des paquets tiers sur cette distribution. Plus exactement la page dédiée au pilote NVidia 470, qui arbore toute une série de patchs pour rectifier le tir et faire fonctionner ce pilote sur un système récent.
Sur cette page, je télécharge les quatre patchs suivants :
-
nvidia-470xx-fix-linux-6.12.patch -
nvidia-legacy470-follow_pfn.patch -
nvidia-legacy470-gcc14.patch -
nvidia-legacy470-iosys_map.patch
Je range ces patchs dans le même répertoire nvidia que le pilote :
# ls
nvidia-470xx-fix-linux-6.12.patch
nvidia-legacy470-follow_pfn.patch
nvidia-legacy470-gcc14.patch
nvidia-legacy470-iosys_map.patch
NVIDIA-Linux-x86_64-470.256.02.run
Appliquer les patchs
L'option --extract-only permet de décompresser l'archive sans lancer
l'installation :
# sh NVIDIA-Linux-x86_64-470.256.02.run --extract-only
Creating directory NVIDIA-Linux-x86_64-470.256.02
Verifying archive integrity... OK
Uncompressing NVIDIA Accelerated Graphics Driver for Linux-x86_64 470.256.02
Je me rends dans le sous-répertoire kernel du répertoire nouvellement créé et
j'applique les patchs l'un après l'autre, comme ceci :
cd NVIDIA-Linux-x86_64-470.256.02/kernel/
# patch -p1 < ../../nvidia-470xx-fix-linux-6.12.patch
patching file nvidia-drm/nvidia-drm-drv.c
# patch -p1 < ../../nvidia-legacy470-follow_pfn.patch
patching file conftest.sh
patching file nvidia/nvidia.Kbuild
patching file nvidia/os-mlock.c
# patch -p1 < ../../nvidia-legacy470-gcc14.patch
patching file conftest.sh
# patch -p1 < ../../nvidia-legacy470-iosys_map.patch
patching file conftest.sh
Hunk #1 succeeded at 4593 (offset 1 line).
Lancer l'installation
Je remonte d'un cran dans l'arborescence et je lance l'installateur, qui va me poser une série de questions :
Un peu plus haut, j'ai pris soin d'installer DKMS (Dynamic Kernel Module Support). Ce système gère automatiquement la mise à jour du pilote lors de la mise à jour du noyau Linux :
Je n'utilise pas les bibliothèques de compatibilité 32-bit, et je confirme tout simplement :
L'installateur se met à construire le pilote, ce qui peut durer quelques minutes :
L'utilitaire nvidia-xconfig se charge de générer un fichier
/etc/X11/xorg.conf qui utilise explicitement le pilote nvidia dans sa
configuration :
L'écran final de l'installateur s'affiche :
Configurer GRUB
Il me reste encore à peaufiner GRUB pour activer le kernel modesetting du
pilote. J'édite /etc/default/grub et j'ajoute le paramètre qui va bien. En
passant, j'en profite pour peaufiner la résolution de la console au démarrage
du système :
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`( . /etc/os-release && echo ${NAME} )`
GRUB_CMDLINE_LINUX_DEFAULT="quiet nvidia-drm.modeset=1 vga=791"
GRUB_CMDLINE_LINUX=""
Paramètre obsolète
Le paramètre vga=791 est normalement obsolète. En temps normal je devrais
plutôt utiliser quelque chose comme gfxpayload=1024x768x16. Allez savoir
pourquoi, mais la manière orthodoxe ne fonctionne pas avec ce pilote, alors
que la méthode obsolète fonctionne parfaitement. Mystère et boules de
gomme.
Je prends en compte la mise à jour du chargeur de démarrage et je redémarre :
Tester le pilote
Je me connecte en tant que root et je lance le système graphique à la
main :
Si tout se passe bien, je vois apparaître le gestionnaire de connexion SDDM :
Démarrez une session Plasma X11
Le pilote propriétaire nvidia fonctionnera uniquement dans une session
Plasma X11. Si vous lancez la session par défaut Plasma Wayland, vous
risquez de vous retrouver avec un bureau dur de la feuille voire carrément
gelé.
Je lance une session et je constate que tout se passe comme prévu :
Partant de là, je peux sereinement définir le démarrage de la session graphique par défaut :
Il ne me reste plus qu'à aller faire un footing pour me remettre les neurones
en place.
La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.











