Outils pour utilisateurs

Outils du site


debian:debian_nvidia

Installation des pilotes pour cartes video Nvidia sous Debian

Comme souvent avec les cartes graphiques sous Linux vous avez le choix entre l'utilisation de pilotes libres, dont les sources sont disponibles librement et gratuitement, ou des pilotes propriétaires dont le code est strictement fermé, sous le contrôle exclusif de l'entreprise qui les développe.
Malheureusement dans le cas des pilotes pour cartes vidéo Nvidia il n'existe aucune coopération entre le fabricant et les développeurs des pilotes libres, ceux-ci doivent travailler sur les bases de l'ingénierie inverse (“reverse engineering”) et les progrès sont relativement lents. Le “choix” se fera donc plutôt par nécessité en fonction du support de votre matériel.

Un signe $ précède les commandes qui ne nécessitent pas de droits administrateur ; un signe # précède celles qui nécessitent des droits administrateur (ces signes ne font PAS partie des commandes). Les lignes qui ne commencent pas par un signe $ ou # correspondent au résultat de la commande précédente.
Les touches utilisées sont indiquées entre crochets, exemple [ctrl] pour la touche “contrôle”

Pilotes libres "nv"

Le pilote libre le plus employé, et également le plus ancien, est “nv”, associé au paquet “xserver-xorg-video-nv”. Ce pilote ne supporte quasiment jamais l'accélération matérielle “3D”, ou alors à un niveau limité sur des cartes vidéo anciennes. Il permet en revanche d'utiliser son matériel pour de l'affichage “2D” classique, et constitue une solution de secours indispensable à connaître quand on utilise les pilotes non libres “nvidia”.

Le pilote “nv” qui bénéficiait d'un minimum d'attention de la part de Nvidia est maintenant totalement abandonné pour les cartes graphiques récentes. Vous pouvez vous reporter aux archives du wiki du pilote "nv" pour la liste du matériel compatible. Pour les cartes récentes il ne reste que le pilote générique “VESA”, le pilote propriétaire ou le pilote libre “nouveau” (voir plus bas)

Pour l'utiliser il suffit d'avoir dans son fichier /etc/X11/xorg.conf la section suivante :

Section "Device"
    Driver         "nv"
EndSection

Un redémarrage du serveur d'affichage, ou du système, s'impose pour que l'utilisation du pilote soit effective.
Pour plus d'information sur ce pilote, voyez la section “Liens” en fin de page.

Pilotes libres "nouveau"

Le pilote libre sur lequel le développement est le plus actif se nomme “nouveau” (un Français est à l'origine du projet), il a pour objectif d'apporter l'accélération matérielle “3D” aux cartes les plus récentes. Il est associé aux paquets “xserver-xorg-video-nouveau” et “libdrm-nouveau1”. Ce pilote est récent et en plein développement, son utilisation n'est pas toujours évidente, mais il est cependant suffisamment avancé pour être utilisé comme choix par défaut pour les cartes supportées par certaines distributions (Fedora en particulier, Ubuntu prochainement). Ne l'utilisez que si vous êtes à l'aise avec l'édition du fichier xorg.conf en console (sans “bureau” graphique), et que vous savez comment revenir à une autre solution.
Pour l'utiliser il suffit de modifier le fichier xorg.conf comme pour “nv”, mais en remplaçant cette fois par “nouveau”.
À terme ce pilote est destiné à permettre une prise en charge directement par le noyau des cartes graphiques supportées, ce qu'on appel “kernel-mode-setting” et qui est déjà disponible pour les cartes vidéo AMD (Ati) et Intel.
Pour plus d'info, voyez les Liens en fin de page.

Pilotes non libres ("nvidia")

Ces pilotes sont la propriété exclusive de Nvidia, leurs sources ne sont pas disponibles et non modifiables. Même pour les versions disponibles sur les dépôts Debian les développeurs ne peuvent agir que sur la procédure d'installation et effectuer des tests, ils n'ont aucun pouvoir sur les propriétés du pilote lui-même.
L'installation de ce pilote entraîne la mise place automatique d'un “flag” (fanion) “tainted” (teinté, ou “pollué”) par le noyau, indiquant qu'un module propriétaire est utilisé. La présence de ce “flag” risque de compromettre les possibilités de diagnostique en cas de problème relatif au noyau.
Vous pourrez recevoir de l'aide au sujet de l'installation du pilote par les utilisateurs de Debian, mais personne d'autre que Nvidia ne peut changer les propriétés du pilote, corriger les bugs ou failles de sécurité.

La "méthode Debian" avec "module-assistant"

Il s'agit de la méthode conseillée, elle nécessite d'avoir dans votre fichier “sources.list” les dépôts “non-free”, par exemple pour la distribution “testing” :

deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free

Pour plus d'information sur le fichier “sources.list” consultez la page "Gestions des paquets Debian".

À partir de Debian “Squeeze” l'arrivée du paquet “nvidia-kernel-dkms” permet de simplifier la procédure. Si vous installez ce paquet le module nvidia sera recompilé automatiquement pour tous les noyaux présents, même les noyaux compilés personnellement et en cas de mise à jour. Pour utiliser dkms vous n'avez pas besoin du paquet “nvidia-kernel-source” ni de “module-assistant”, on n'arrête pas le progrès chez Debian !

Vous aurez besoin d'installer les paquets suivant :

  • linux-headers-$(uname -r) : les en-têtes de développement qui correspondent au noyau utilisé. Inutile si vous disposez des sources configurées du noyau (noyau perso). Peut être installé automatiquement par “module-assistant”
  • module-assistant
  • build-essential : (peut être installé automatiquement par “module-assistant”)

En ce qui concerne les paquets du pilote lui-même, vous devez savoir quelle version supporte votre matériel. Régulièrement des cartes anciennes passent dans la catégorie “legacy” (obsolète, ou démodée), ces cartes ne sont alors plus supportées par les nouvelles versions du pilote Nvidia, elles restent bloquées à une version antérieure. Pour ça le plus simple est d'utiliser le sélecteur de pilote du site Nvidia.

Les versions relatives aux matériels anciens sont désignées avec le suffixe “-legacy” dans les dépôts Debian. Les instructions étant les mêmes je décrirais ici la procédure pour la dernière version du pilote.

Les paquets disponibles sont :

  • nvidia-glx : Indispensable.
  • nvidia-glx-ia32 : Paquet uniquement présent en architecture “amd64”. Assure la compatibilité avec les programmes 32bits.
  • nvidia-kernel-common : Indispensable
  • nvidia-kernel-source : Indipensable, sert à créer un module noyau, “module-assistant” peut l'installer automatiquement.
  • nvidia-vdpau-driver : Facultatif, accélération matérielle du décodage video. N'existe pas pour les pilotes “legacy”.
  • nvidia-vdpau-driver-ia32 : Le même version de compatibilité 32bits pour architecture “amd64” uniquement.
  • nvidia-settings : Le panneau de contrôle, facultatif mais pratique.
  • nvidia-xconfig : L'utilitaire de configuration du fichier xorg.conf, facultatif mais pratique.

Récemment de nombreux nouveaux paquets on fait leur apparition, un aperçu de ceux disponibles pour Debian Squeeze et supérieur :

  • nvidia-kernel-dkms : Indispensable, permet une recompilation automatique du module noyau lors des mises à jours ! Voyez la note plus haut, ce paquet rend obsolète la procédure par “module-assistant”.
  • libgl1-nvidia-alternatives : Dépendance de nvidia-glx, nécessaire.
  • libgl1-nvidia-alternatives-ia32
  • libgl1-nvidia-glx : Installé automatiquement avec nvidia-glx, nécessaire.
  • libgl1-nvidia-glx-ia32
  • libglx-nvidia-alternatives : Installé automatiquement avec nvidia-glx, nécessaire.

Les paquets ci-dessous sont liés aux fonctionnalités “CUDA”, “OpenCL” ou “Tesla” de certaines cartes récentes, permettant par exemple d'utiliser les processeurs graphiques (“gpu”) de plusieurs cartes pour traiter des calculs à la place du processeur. Ils sont totalement optionnels et probablement pas nécessaires si vous comprenez rien à ce que vous venez de lire.

  • libnvidia-compiler
  • libnvidia-compiler-ia32
  • libcuda1
  • libcuda1-ia32
  • nvidia-libopencl1
  • nvidia-libopencl1-ia32
  • nvidia-opencl-common
  • nvidia-opencl-icd
  • nvidia-opencl-icd-ia32
  • nvidia-smi

:!: Le paquet “nvidia-kernel-(vesion_et_architecture)” (exemple “nvidia-kernel-2.6-amd64”) est un module noyau pré-compilé. Il ne fonctionne qu'avec le noyau standard Debian et pose fréquemment des problèmes lors des mises à jour. Il ne faut PAS installer ce paquet si vous suivez la méthode “module-assistant” !

En version courte, cela donne :

# aptitude update
# aptitude install module-assistant build-essential linux-headers-$(uname -r) nvidia-kernel-common nvidia-kernel-source
# module-assistant a-i nvidia-kernel
# aptitude install nvidia-glx nvidia-xconfig
# nvidia-xconfig --no-logo
# reboot

Vous pouvez moduler la liste des paquets installés, par exemple en ajoutant les paquets de compatibilité 32bit (sur amd64).
La commande “module-assistant” (peut être abrégé en “m-a”) utilise l'option “a-i” pour “auto-install”. Cela revient à faire exécuter à “module-assistant” une série d'étapes (update, prepare, [get], build, install) qui aboutiront si tout va bien à la compilation, l'installation et le chargement du module noyau nvidia.
Un paquet “nvidia-kernel-$(uname -r).deb” sera créé dans /usr/src, utile en cas de réinstallation (utilisez “dpkg -i” pour le réinstaller). Pendant la phase “prepare” “module-assistant” doit normalement installer un environnement de compilation (dont les “headers” du noyau, “build-essential”…), mais ça ne pose pas de problème d'installer ces paquets manuellement auparavant.
nvidia-xconfig” sert à initialiser le fichier “xorg.conf”, si vous préférez ne pas laisser l'outil de configuration “nvidia-xconfig” modifier votre xorg.conf, vous pouvez omettre cette étape et effectuer les modifications nécessaires à la main. Cela consiste à modifier (ou créer) la section “Device” :

Section "Device"
    Driver         "nvidia"
EndSection

L'option “--no-logo” permet de ne pas avoir l'affichage du logo Nvidia au démarrage, c'est facultatif évidemment, si vous êtes un fan de la marque n'utilisez pas cette option. Si vous voulez utiliser cette option directement dans votre xorg.conf, ajoutez (créez la section “screen” si nécessaire) :

Section "Screen"
    Option         "NoLogo" "True"
EndSection

Le redémarrage ne devrait pas être strictement nécessaire, dans la plupart des cas vous pouvez passer en console (touches [ctrl][alt][F1]), stopper le serveur graphique avec, respectivement pour KDE et Gnome (l'un OU l'autre) :

# /etc/init.d/kdm restart
# /etc/init.d/gdm restart

Parfois cela échoue, et le redémarrage s'impose.

Un mot sur “module-assistant”, il peut s'utiliser avec une interface graphique type “ncurses” en console. Si vous préférez cette méthode il suffit de taper “module-assistant” ou “m-a” dans une console avec des droits root, et de suivre les étapes proposées par l'interface.

Étapes de préparation, indispensables lors de la première utilisation :

Choix du module à compiler ([espace] pour sélectionner) :

Lancer la compilation du module :

Installer le paquet “.deb” créé :

Si l'une de ces étapes échoue, vérifier votre environnement de compilation (sources (configurées) et/ou “headers” du noyau, liens symboliques correctes dans “/lib/modules/$(uname -r)”, etc…).

:!: Lors d'une mise à jour de version de noyau, ou des paquets “nvidia-*”, vous devrez recompiler un module. Dans la pratique il suffit de procéder à la mise à jour des paquets :

  • Le noyau si c'est lui qui est mis à jour, puis redémarrage sur ce nouveau noyau avant de recompiler et installer un module avec “module-assistant”.
  • Les paquets “nvidia-*” si c'est le pilote qui est mis à jour.

Dans les deux cas, effacez le paquet “nvidia-kernel-$(uname -r).deb” (à moins qu'il ne soit appelé à resservir) qui se trouve dans le répertoire /usr/src (avec “rm”, attention à ne pas se tromper de cible !), et utilisez “module-assistant” pour compiler un nouveau module et l'installer. Ne désinstallez pas le paquet du module précédent, vous le ferez une fois le nouveau module créé et installé par module-assistant, et de cette manière vous gardez une porte de sortie en cas de problème… Un redémarrage (du serveur graphique ou du système) plus tard et c'est fini.

Si vous voulez compiler un module pour un autre noyau que celui en cours d'utilisation, vous pouvez utiliser :

# module-assistant -k /usr/src/linux-headers-$(version) build nvidia

L'option “-k” permet d'indiquer un répertoire de sources ou d'en-tête (“headers”) comme cible (à adapter à votre cas, remplacez “$(version)” par la version souhaitée), le module sera compilé pour le noyau correspondant, et un paquet “.deb” sera créé prêt à être installé.

Installation avec le script".run" Nvidia

Cette méthode n'est pas recommandée, elle peut aboutir à des problèmes difficiles à diagnostiquer, en particulier si vous l'utilisez par alternance avec la “méthode Debian” (par le gestionnaire de paquets). En contrepartie cette méthode vous donnera accès aux pilotes les plus récents, voir les versions “beta” parfois indispensables pour du matériel très récent.

Télécharger l'installateur

La première étape consiste à récupérer l'installateur lui-même, sur le site de téléchargement de Nvidia ou directement sur leurs serveurs ftp (répertoire “Linux-x86” et “Linux-x86_64” en fonction de votre architecture).

Une fois l'installateur téléchargé, placez le dans un répertoire de votre choix (ici /home/tux/nvidia/ pour l'exemple) et assurez-vous qu'il soit exécutable :

$ chmod +x /home/tux/nvidia/NVIDIA-Linux-x86_$(version)-pkg2.run

Remplacez le chemin et la version “$(version)” par ce qui est adapté à votre cas.

Les dépendances

Pour effectuer l'installation vous aurez besoin d'un environnement de compilation, des sources configurées ou “headers” de votre noyau. Le plus simple pour s'assurer que tous les éléments sont réunis est d'exécuter :

# aptitude update
# aptitude install linux-headers-$(uname -r) build-essential

Si vous utilisez un noyau personnalisé, et que les liens “build” et “source” dans /lib/modules/$(uname -r) pointent vers les sources complètes et configurées, vous n'avez pas besoin des “headers”.
Sur architecture amd64, si vous souhaitez installer les librairies de compatibilité 32bit vous aurez besoin au minimum du paquet “ia32-libs”.

:!: Une note sur la version du paquet “gcc”. Le compilateur gcc doit théoriquement être de même version que celle ayant servie à la compilation du noyau, sinon un avertissement sera affiché par l'installateur Nvidia. EN pratique vous pouvez ignorer cet avertissement la plupart du temps, ou installer la bonne version de gcc (plusieurs versions peuvent cohabiter sans problème) et vérifier que le lien symbolique /usr/bin/gcc pointe bien vers celle-ci. Vous pouvez également le vérifier avec :

$ update-alternatives --display gcc

et si nécessaire modifier le lien avec :

# update-alternatives --config gcc

Installation

L'installation doit se faire en dehors d'une session graphique, c'est à dire que vous devez quitter le confort de votre environnement de bureau (Gnome, xfce, KDE etc…) et procéder à partir de maintenant en console. Pour basculer sur une console, et couper le serveur graphique en cours (:!: attention, fermez les applications en fonctionnement car les données non enregistrées seront perdus !) :

Touches (simultanément) [ctrl][alt][F1]

login: tux
Password: **********

# /etc/init.d/gdm stop

Après la combinaison de touches [ctrl][alt] et [F1-6] (touche de fonction au choix de “F1” à “F6”) vous vous retrouvez dans une console (lettres blanches sur fond noir) et vous ouvrez une session avec vos identifiant et mot de passe habituels. Vous terminez ensuite la session graphique active. Si vous utilisez “Gnome” vous utiliserez “/etc/init.d/gdm stop” , si vous utilisez “KDE” vous utiliserez /etc/init.d/kdm stop“. Pour les autres environnement de bureau, à vos manuels ! ;-)

Passons maintenant à l'installation proprement dite, il suffit d'exécuter le script d'installation Nvidia (on suppose ici qu'il se trouve dans /home/tux/nvidia) :

# sh /home/tux/nvidia/NVIDIA-Linux-x86_$(version)-pkg2.run

Il ne reste qu'à suivre les étapes en répondant aux questions comme indiqué sur les captures suivantes :

  • Accepter la licence, le pilote étant un logiciel propriétaire non libre vous devez accepter les termes du contrat de licence qui vous lie à la société Nvidia :


  • La compilation démarre directement sur les dernières versions, sur les versions plus anciennes un message peut indiquer que le module doit être compilé car aucun module pré-compilé n'est disponible au téléchargement, tout est normal :



  • Installer les librairies de compatibilité 32bit. Ce message ne concerne que l'architecture amd64, ces librairies sont nécessaires à quelques programmes non disponibles en architecture 64bits (les programmes qui dépendent de “ia32-libs”, comme GoogleEarth par exemple). Cette étape est optionnelle :


À partir de Debian “Squeeze” un remaniement de l'émulation 32bit (paquets ia32-*) peut faire échouer l'installation des librairies de compatibilité. En attendant une mise à jour de l'installateur Nvidia il est conseillé d'utiliser la “méthode Debian” avec le gestionnaire de paquets.

  • Exécuter “nvidia-xconfig” pour mettre à jour votre fichier /etc/X11/xorg.conf, c'est facultatif si vous préférez modifier ce fichier manuellement, mais conseillé (une sauvegarde de l'ancien fichier est effectuée automatiquement) :


  • C'est fini, tout c'est bien passé :


Une fois l'installation terminée il ne reste qu'à redémarrer le serveur graphique avec :

# /etc/init.d/gdm restart

Encore une fois, remplacez “gdm” par “kdm” si vous utilisez “KDE” au lieu de “Gnome”.
Par convention sur Debian le serveur graphique utilise la console virtuelle numéro 7, vous basculerez donc vers celle-ci avec les touches [ctrl][alt][F7] .

En cas de mise à jour

Lors d'une mise à jour de version de noyau, ou évidemment si vous désirez mettre à jour le pilote Nvidia, vous devez reprendre la procédure en totalité. La première étape sera de désinstaller totalement la version antérieure avec :

# nvidia-installer --uninstall

Ensuite reprenez la procédure depuis le début.
Pour les possibilités de mise à jour automatique du pilote Nvidia, voyez ci-dessous le chapitre “Usages avancés”.

Usages avancés

L'installateur Nvidia, la seule partie qui soit sous licence libre, permet quelques raffinements aux utilisateurs avancés. Vous pouvez par exemple lancer l'installation en mode “expert”, cela vous donnera accès à de nombreux paramètres tels que les chemins d'installation des librairies, des modules, etc…

Un exemple de question en mode avancé, et le résumé des actions prévues par l'installateur :


Pour lancer le mode avancé, utilisez l'option “-e” à la fin de la ligne de commande :

# sh NVIDIA-Linux-x86_$(version)-pkg2.run -e

Vous pouvez également utiliser l'installateur pour compiler des modules pour d'autres noyaux que celui actuellement en usage, et sans désinstaller le pilote actuellement en usage. Pour cela utilisez :

# sh NVIDIA-Linux-x86_$(version)-pkg2.run -K --kernel-name=2.6.30-test64

L'option “-K” permet de ne pas désinstaller les modules déjà présents sur le système. Remplacez ce qui suit ”--kernel-name=“ par la version du noyau pour laquelle vous voulez créer un module. Cette astuce permet de démarrer sur différents noyaux sans devoir reprendre la procédure d'installation intégralement.
Attention, les modules doivent être de même version que l'installateur, donc en cas de mise à jour de l'installateur Nvidia il faudra reconstruire tous les modules.

Liens

debian/debian_nvidia.txt · Dernière modification: 2014/05/09 18:56 (modification externe)