Guide nVidia pour Linux Gentoo

Sven Vermeulen  Auteur
Joshua Saddler  Auteur
M Curtis Napier  Correcteur
Chris Gianelloni  Correcteur
Camille Huot  Traducteur
Bertrand Coppa  Traducteur
Sophie Leroy  Traducteur
Sébastien Baudru  Traducteur

Dernière mise à jour le 5 août 2009

1.  Introduction

Les pilotes nVidia présents dans l'arbre sont fournis par nVidia et sont compilés en fonction de votre noyau Linux. Ils contiennent un binaire qui s'occupe de la communication avec la carte. Ces pilotes sont constitués de deux parties : un module noyau et un pilote X11, qui sont tous deux contenus dans un unique paquet. En raison de la façon qu'a nVidia de construire ses pilotes, vous aurez quelques choix à faire avant d'installer ceux-ci.

Le paquet nvidia-drivers contient les pilotes fournis par nVidia, quelle que soit votre carte graphique. En effet, il utilise une eclass afin de détecter votre modèle de carte et ainsi de pouvoir télécharger la bonne version du pilote.

2.  Compatibilité

Version du pilote

Le paquet nvidia-drivers supporte toute la gamme des cartes nVidia. Plusieurs versions de pilote peuvent être disponibles, selon votre modèle de carte.

Les cartes récentes, telles que les séries GeForce 9, 8, 7 et 6 doivent utiliser les derniers pilotes.

Les cartes plus anciennes, comme les séries GeForce FX 5, devront utiliser les pilotes 173.x tels que nvidia-drivers-173.14.15. Pour ces cartes, vous devrez masquer >=x11-drivers/nvidia-drivers-174.00 dans votre fichier /etc/portage/package.mask afin d'éviter l'installation des nouvelles versions des pilotes, incompatibles avec votre carte.

Les cartes anciennes, comme les séries 3 ou 4, nécessiteront les versions 96.x des pilotes. Pour ces cartes, vous devrez ajouter >=x11-drivers/nvidia-drivers-97.00 dans votre fichier /etc/portage/package.mask.

Pour les plus anciennes cartes basées sur les NV2X (comme les TNT, TNT2, GeForce et GeForce 2), vous aurez besoin des versions 71.x des pilotes (telle que nvidia-drivers-71.86.01). Pour ces cartes, masquez >=x11-drivers/nvidia-drivers-87.00 dans le fichier /etc/portage/package.mask.

Vérifiez le fichier LISEZ-MOI sur la page appropriée pour x86 ou x86-64 pour savoir quel pilote utiliser avec votre carte.

3.  Configuration de votre carte

Configuration du noyau

Les pilotes nVidia dont on vient de parler sont installés et exécutés en fonction de votre noyau courant. Puisque le pilote consiste en un module, votre noyau doit, logiquement, supporter le chargement de modules. Si vous utilisez genkernel all pour la configuration de votre noyau, les paramètres appropriés ont déjà été choisis pour vous. Autrement, vérifiez vous-même votre configuration pour vous assurer que les options appropriées sont sélectionnées :

Exemple de code 3.1 : Activation du chargement des modules du noyau

Loadable module support --->
  [*] Enable loadable module support

Vous devez aussi activer l'option Memory Type Range Register :

Exemple de code 3.2 : Activer MTRR

Processor and Features --->
  [*] MTRR (Memory Type Range Register) support

Si vous disposez d'une carte graphique AGP, vous pouvez aussi, optionnellement, activer le support d'agpgart dans le noyau, soit en dur, soit en module. Si vous n'utilisez pas le agppart du noyau, les pilotes utiliseront leur propre implémentation, appelée NvAGP. Sur certains systèmes, cette implémentation est plus performante que le agppart du noyau, et sur d'autres systèmes, elle l'est moins. Pour obtenir la performance maximale, vous devrez évaluer l'une ou l'autre de ces option sur vote propre système. Si vous n'êtes pas sûr, utiliser la version agppart du noyau :

Exemple de code 3.3 : Activer agpgart

Device Drivers --->
Graphics Support --->
-*- /dev/agpgart (AGP Support) --->

Note : Sur les AMD64, la configuration de l'AGPGART est contrôlée par le IOMMU.

Remarques concernant certaines architectures

Important : Pour les processeurs x86 et AMD64, il y a conflit entre le pilote interne du noyau et le pilote binaire fourni par nVidia. Si vous compilez votre noyau pour ces processeurs, il faut retirer complètement le support pour le pilote interne :

Exemple de code 3.4 : Retirer le pilote interne

Device Drivers --->
Graphics Support --->
<*> Support for frame buffer devices --->

Le pilote uvesafb est un framebuffer alternatif avancé. Notez que vous pouvez choisir de le compiler dans votre noyau ou en tant que module. L'exemple suivant le compile dans le noyau.

Exemple de code 3.5 : Activation du support de uvesafb

Device Drivers --->
Graphics Support --->
<*> Support for frame buffer devices --->
<*>   Userspace VESA VGA graphics support

Sinon vous pouvez essayer VESA :

Exemple de code 3.6 : Activer le support de VESA

Device Drivers --->
Graphics Support --->
<*> Support for frame buffer devices --->
[*]   VESA VGA graphics support

Pour plus d'informations, vous pouvez lire la documentation relative au framebuffer choisi dans /usr/src/linux/Documentation/.

Poursuivre la configuration du noyau

L'ebuild nvidia-drivers trouve automatiquement la version de votre noyau grâce au lien symbolique /usr/src/linux. Assurez-vous que ce lien pointe vers les bonnes sources et que votre noyau a été configuré correctement. Référez-vous à la section « Configurer le noyau » du Manuel Gentoo Linux pour obtenir des instructions détaillées sur la configuration de votre noyau.

Premièrement, installez eselect (si ce n'est déjà fait). Si vous utilisez gentoo-sources-2.6.18-r4, la liste de vos noyaux pourrait ressembler à ce qui suit :

Exemple de code 3.7 : Vérifier le lien symbolique /usr/src/linux

# eselect kernel list
Available kernel symlink targets:
  [1]   linux-2.6.18-gentoo-r4 *
  [2]   linux-2.6.20-gentoo-r7
  [3]   linux-2.6.20-gentoo-r8
(Vérifiez que le bon noyau soit marqué d'un astérisque.)

Dans l'exemple ci-dessus, remarquez que le noyau linux-2.6.18-gentoo-r4 est marqué d'un astérisque (*), ce qui montre que le lien symbolique pointe dessus.

Si le lien ne pointe pas vers les sources appropriées, vous devez le mettre à jour en indiquant le numéro du noyau désiré, comme dans l'exemple ci-dessous.

Exemple de code 3.8 : Créer ou mettre à jour le lien symbolique /usr/src/linux

(Sélectionner le bon noyau.)
# eselect kernel set 1

Installer les pilotes appropriés

Il est maintenant temps d'installer les pilotes.

Exemple de code 3.9 : Installation des modules nVidia

# emerge nvidia-drivers

Note : Les pilotes peuvent être installés avec le paramètre USE gtk, ce qui installera media-video/nvidia-settings, un outil graphique pratique pour surveiller et configurer certains aspects de votre carte nVidia.

Important : Chaque fois que vous compilez un nouveau noyau ou que vous recompilez votre noyau courant, vous devez exécuter emerge nvidia-drivers pour réinstaller les modules nVidia. Une méthode plus simple pour reconstruire les modules installés par des ebuilds (tels que nvidia-drivers) est d'utiliser sys-kernel/module-rebuild. Une fois installé, lancez simplement module-rebuild populate pour construire une base de données contenant les paquets à reconstruire. Ensuite, après avoir recompil" votre noyau, lancez juste module-rebuild rebuild pour reconstruire les pilotes adaptés à votre nouveau noyau.

Lorsque l'installation est finie, lancez modprobe nvidia pour charger le module du noyau en mémoire. S'il s'agit d'une mise à jour, vous devez auparavant supprimer le module précédent.

Exemple de code 3.10 : Chargement du module du noyau

# lsmod | grep nvidia && rmmod nvidia
# modprobe nvidia

Pour éviter d'avoir à charger le module à chaque démarrage, vous souhaiterez sans doute automatiser ce processus. Pour ce faire, éditez le fichier /etc/modules.autoload.d/kernel-2.6 et ajoutez-y nvidia. N'oubliez pas d'exécuter update-modules par la suite :

Important : Si vous avez compilé agpgart en module, vous devrez l'ajouter à /etc/modules.autoload.d/kernel-2.6.

Exemple de code 3.11 : Lancer update-modules

# update-modules

Configuration du serveur X

Une fois que les pilotes sont installés, vous devez configurer votre serveur X pour qu'il utilise le pilote nvidia au lieu du pilote nv par défaut.

Ouvrez /etc/X11/xorg.conf avec votre éditeur favori (nano ou vim par exemple) et allez à la section Device. Dans cette section, modifiez la ligne Driver :

Exemple de code 3.12 : Remplacement de nv par nvidia dans la configuration du serveur X

Section "Device"
  Identifier "nVidia Inc. GeForce2"
  Driver     "nvidia"
  VideoRam   65536
EndSection

Ensuite, allez à la section Module et assurez-vous que le module glx se charge tandis que le module dri ne se charge pas :

Exemple de code 3.13 : Mise à jour de la section Module

Section "Module"
  (...)
  # Load  "dri"
  Load  "glx"
  (...)
EndSection

Puis, dans la section Screen, vérifiez que la directive DefaultDepth indique 16 ou 24, ou qu'il n'y a pas de sous-section Display avec des directives Depth qui valent autre chose que 16 ou 24. Si vous spécifiez d'autres profondeurs de couleurs que 16 ou 24, les extensions nVidia GLX ne fonctionneront pas.

Exemple de code 3.14 : Mettre la section Screen à jour

Section "Screen"
  (...)
  DefaultDepth 16
  Subsection "Display"
  (...)
EndSection

Lancez eselect afin que le serveur X utilise les bibliothèques GLX de nVidia :

Exemple de code 3.15 : Lancement de eselect

# eselect opengl set nvidia

Ajouter des utilisateurs dans le groupe video

Afin que vos utilisateurs puissent accéder aux fichiers de périphérique nVidia, il faut les ajouter au groupe video :

Exemple de code 3.16 : Ajout d'un utilisateur au groupe video

# gpasswd -a nom_utilisateur video

Cela n'est pas forcément obligatoire si vous n'utilisez pas udev mais cela ne vous fera pas de mal. De plus, votre système sera préparé pour l'avenir.

Test de la carte

Pour tester votre carte nVidia, démarrez X et lancez glxinfo du paquet mesa-progs. Cela devrait vous répondre que le rendu direct est activé :

Exemple de code 3.17 : Vérification de l'état du rendu direct

$ glxinfo | grep direct
direct rendering: Yes

Pour obtenir votre taux de FPS (images par seconde), lancez glxgears.

Activer le support nVidia

Certains paquets comme mplayer ou xine-lib ont une option USE locale appelée xvmc qui active le support XvMCNVIDIA, utile notamment pour visionner des films en haute résolution. Vous pouvez définir cette option dans la variable USE de votre fichier /etc/make.conf ou bien l'ajouter pour les paquets media-video/mplayer et/ou media-libs/xine-lib dans le fichier /etc/portage/package.use.

Certaines applications utilisent également le paramètre USE nvidia, que vous pouvez donc également ajouter à votre /etc/make.conf.

Ensuite, exécutez emerge -uD --newuse world pour recompiler les applications qui utilisent cette option.

Utiliser les outils de configuration nVidia

NVidia vous fournit également un outil de configuration qui vous permet de modifier les réglages graphiques sans redémarrer le serveur X. Cet outil est disponible dans Portage sous le nom de media-video/nvidia-settings. Comme mentionné précédemment, il sera automatiquement installé si vous aviez activé le paramètre USE gtk dans /etc/make.conf ou dans /etc/portage/package.use avant d'installer les pilotes.

4.  Problèmes

Faire fonctionner la carte en 2D sur des machines avec 4 Go de mémoire ou plus

Si vous avez des problèmes avec l'accélération 2D, il est probable que l'origine soit un problème d'écriture avec MTRR. Veuillez vérifier le contenu du fichier /proc/mtrr :

Exemple de code 4.1 : Vérifier si l'option « write-combining » est activée

# cat /proc/mtrr

Chaque ligne doit contenir soit « write-back », soit « write-combining ». Si une ligne avec « uncachable » apparaît, vous devez modifier une option de votre BIOS pour résoudre le problème.

Redémarrez votre machine et cherchez l'option MTRR, en général, dans un menu « CPU Settings ». Changez cette option de « continuous » en « discrete » et redémarrez Linux. Vous ne devriez plus voir « uncachable » dans /proc/mtrr et l'accélération 2D devrait mieux fonctionner.

Lorsque j'essaie de charger le module noyau, je reçois un « no such device »

Cela arrive en général lorsque vous n'avez pas de carte graphique qui corresponde. Assurez-vous de bien avoir une carte graphique nVidia (vous pouvez vérifier avec lspci).

Si vous êtes sûr d'avoir une carte graphique nVidia, vérifiez que la directive Assign IRQ to VGA est bien activée dans votre BIOS.

5.  Configuration experte

Documentation

Le paquet logiciel du pilote nVidia contient une documentation exhaustive. Elle est installée dans le répertoire /usr/share/doc et peut être consultée avec la commande suivante :

Exemple de code 5.1 : Consulter la documentation de nVidia

$ less /usr/share/doc/nvidia-drivers-*/README.gz

Paramètres du module du noyau

Le module du noyau nvidia accepte un éventail de paramètres (options) qui permettent d'ajuster le comportement du pilote. La plupart sont mentionnés dans la documentation. Pour ajouter ou modifier ces paramètres, éditez le fichier /etc/modprobe.d/nvidia.conf. Souvenez-vous d'exécuter update-modules après ces modifications et gardez à l'esprit que vous devrez recharger le module nvidia avant que ces modifications ne soient prises en compte.

Exemple de code 5.2 : Ajuster la configuration nvidia

(Éditez /etc/modprobe.d/nvidia.conf avec votre éditeur de texte favori.)
# nano -w /etc/modprobe.d/nvidia.conf
(Mettez à jour les fichiers des modules.)
# update-modules
Déchargez le module nvidia...)
# modprobe -r nvidia
(... et rechargez-le.)
# modprobe nvidia

Configuration avancée de X

La couche logicielle GLX offre aussi une pléthore d'options de configuration. Celles-ci contrôlent la sortie TV, l'utilisation simultanée de deux écrans, la détection de la fréquence des moniteurs, etc. Ces options sont elles aussi couvertes dans la documentation.

Si vous voulez utiliser certaines de ces options, vous devez les indiquer dans la section Device appropriée de votre fichier de configuration de X (habituellement /etc/X11/xorg.conf). Par exemple, supposons que vous souhaitez désactiver le logo de démarrage :

Exemple de code 5.3 : Configuration avancée de nVidia dans X

Section "Device"
  Identifier "nVidia Inc. GeForce2"
  Driver     "nvidia"
  Option     "NoLogo" "true"
  VideoRam   65536
EndSection