Léa-Linux & amis :   LinuxFR   GCU-Squad   Zarb.Org   GNU
Cartes video Nvidia

Les cartes NVidia Geforce et TNT

par Fred, complété par Serge et mis à jour par Slash

nVidia, depuis quelque temps déjà, nous met à disposition des pilotes de bonne qualité et surtout très faciles à installer.
Ce driver suppporte les TNT, TNT2, Geforce, Quadro


Ce document est une mise à jour, donc je garderai toute la partie de l'installation des anciens pilotes et des problèmes rencontrés avec eux…

Nous allons expliquer dans cette rubrique comment installer les pilotes (nouvelle/ancienne génération) de chez nVidia afin de disposer de l'accélération 3D des cartes TNT sous Linux.

Prérequis

  • Vous devez tout d'abord installer soit XFree86® ou Xorg.
  • Vous devez savoir maîtriser un éditeur de fichiers textes en console comme vi ou emacs.

Attention, il y a deux générations de pilotes donc il faut utiliser la méthode appropriée selon le pilote téléchargé !!!


Téléchargement des pilotes

Ensuite téléchargez les pilotes de chez nVidia. Ne pas oublier de télécharger le LISEZ-MOI (celui-ci est pour la dernière version de pilotes à la date de ce document !). Ne pas oublier de le lire. (Je plaisante, la lecture de ce document devrait suffire, mais on ne sait jamais).

Attention, les pilotes de chez nVidia sont mis à jour de temps en temps, veillez à les vérifier que votre carte supporte la dernière version, et le cas échéant téléchargez le bon pilote. Sachez que les cartes GeForce 2 par exemple ne supportent pas de pilote plus récent que le 7174.


Nouvelle génération de pilotes

Tout d'abord je vous renvoie sur ces fiches si vous installez la nouvelle génération de pilotes sur une Mandrake 10.1 Community ou Fedora Core 1 :

Après avoir téléchargé les derniers pilotes en date lors de la rédaction de ce document, un fichier du type… vérifiez que vous avez bien installé les sources de votre noyau. Nous allons procéder à l'installation de ces pilotes :

Tout d'abord si vous êtes en mode graphique et que vous voulez mettre à jour vos pilotes Nvidia, ce message apparaîtra :

ERROR: An NVIDIA noyau module 'nvidia' appears to already be loaded in your noyau. This may be because it is in use (for example, by the X server). Please be sure you have exited X before attempting to upgrade your driver. If you have exited X but still receive this message, then an error has occured that has confused the usage count of the noyau module; the simplest remedy is to reboot your computer.


Donc placez vous en root et revenez en mode texte (c'est à dire sans le serveur graphique), effectuez les commandes suivantes :
$: su -
, entrez votre mot de passe et tapez
# init 3

Il faudra vous logger en root après être revenu en console.
Ensuite placez-vous dans le répertoire où se trouve l'archive
# cd /dossier/de/larchive

Et lancez l'installation :
# sh NVIDIA-Linux-x86-1.0-7167-pkg1.run
.
Et voila vous n'avez plus qu'à suivre les indications.

Si vous ne possèdez pas de connexion internet répondez non lors de la demande de téléchargement des pilotes précompilés. De plus s'il refuse de compiler les pilotes en vous expliquant que votre version du logiciel gcc n'est pas la même que la version utilisée pour compiler votre noyau, essayez de forcer la compilation des pilotes !!! Il y a de fortes chances que ça passe sans aucun problème.

Attention et redite, les pilotes de chez nVidia sont mis à jour de temps en temps, veillez à vérifier que votre carte supporte la dernière version, et le cas échéant téléchargez le bon pilote.

Ancienne génération de pilotes

Si vous possédez la version 0.9.6, référez-vous à ce truc et astuce pour augmenter les performances de ces pilotes.
Voici un autre truc et astuce pour compiler les anciens pilotes sur un noyau 2.4.9.

Coller une rustine sur votre noyau pour l'AGP

ATTENTION: cette rustine n’est à appliquer QUE si la version des pilotes nVidia que vous possédez est inférieure à la version 0.9.6. À partir de la version 0.9.6 N'APPLIQUEZ SURTOUT PAS CETTE RUSTINE, passez au chapitre suivant!

Il est necessaire pour certaines cartes méres de patcher votre noyau pour la prise en compte de l'AGP et utiliser le driver de nvidia. De plus, même si pour certaine carte mére il n'est pas nécessaire de patcher le noyau pour pouvoir utiliser les pilotes nvidia, je vous le conseille fortement pour profiter pleinement des accélérations 3D.
Je suppose que vous avez un noyau 2.2.16 (dernier en date), d'ailleur je ne peux que vous le conseiller pour prendre en compte correctement l'AGP et les driver nvidia. Si vous ne l'avez pas, récupérez les sources du noyau sur ww.noyau.org.
Récupérez le patch ici (récupérez la version pour les noyaux 2.2.16 ou 2.3.x si vous avez un noyau 2.3.x).

Pour coller la rustine sur votre noyau, faire alors:

cd /usr/src/linux
cat /chemin_ou_se_trouve_le_patch/agpgart-2.2.16-patch | patch -p1

Une fois votre noyau modifié, reconfigurez le (make config ou make menuconfig ou make xconfig) , vérifiez dans la rubrique code maturity que vous avez activé le development code/pilotes , puis dans la rubrique "character device" passez en module(M) le support agp, si une liste de chipset apparait, selectionnez tous les chipset (VIA, Intel, etc...) pour avoir le support de n'importe quel chipset (et du votre donc).
Bon le probléme c'est qu'il vas falloir maitenant recompiler et installer le nouveau noyau ainsi que les modules (voir la rubrique noyau pour plus d'aide).
Une fois le noyau compilé et que vous avez demarré sur ce nouveau noyau (indispensable car le patch modifie les zones mémoires pour prendre en compte l'agp), on vas créer le device pour l'agp:

mknod /dev/agpgart c 10 175

chargez le module agpgart en mémoire (modprobe agpgart). Il se charge sans problème normalement.
Si c'est bon, ajoutez dans un script de démarrage la chargement de ce module, par exemple vous ajoutez dans /etc/rc.d/rc.local la ligne:

/sbin/modprobe agpgart

Voilà, l'agp est pris en compte par votre noyau.

Installation du pilote

Je vais expliquer la démarche en supposant que vous installez les pilotes 0.9.4 :
Vous devez avoir téléchargé :

NVIDIA_GLX-0.9-4.tar.gz
NVIDIA_noyau-0.9-4.tar.gz

décompressez les :

# tar xzf NVIDIA_noyau-0.9-4.tar.gz
# tar xzf NVIDIA_GLX-0.9-4.tar.gz
Installation du module nvidia pour le noyau

Placez-vous dans le répertoire : NVIDIA_noyau-0.9-4. Compilez le module.

Note : pour mener à bien cette compilation, vous devez avoir installé les sources du noyau de Linux et les avoir configurées comme décrit plus haut.

Un simple make dans le répertoire NVidia_noyau-0.9-4 va modifier le fichier /etc/conf.modules pour que le modules soit chargé automatiquement. Créez dans /dev les noeuds de périphériques correspondant à votre carte et installer les dits modules dans le bon répertoire (ie: /lib/modules/<noyau-version>/video).
Toutefois, il est necessaire d'ajouter les options de chargement du module NVdriver pour éviter des plantages suivant le chipset de votre carte mère.
Déchargez de la mémoire le module NVdriver que le make a chargé automatiquement par :

rmmod NVdriver

Editez le fichier /etc/modules.conf (ou conf.modules suivant les distributions) et ajoutez en dessous de alias char-major-195 NVdriver la ligne suivante:
ATTENTION:
cette ligne est à appliquer QUE si la version des pilotes Nvidia que vous possédez est inférieure à la version 0.9.6. A partir de la v ersion 0.9.6 N'APPLIQUER PAS CES CHANGEMENTS!

options NVdriver NVreg_UseKernelAGP=1 NVreg_ReqAGPSBA=1 NVreg_ReqAGPFW=1

Remarque: si vous avez un chipset VIA Apollo Pro133A, validez dans votre BIOS la gestion 4x AGP et ajoutez dans la ligne décrite au-dessus NVreg_EnableVia4x=1''''''''''

Bon testez que le module se charge sans erreur par un

modprobe NVdriver
Installation du serveur X

L'installation du driver en elle-même est simple, mais il ne faut pas que le nouveau driver entre en conflit avec l'ancien. Pour cela il nous faut effacer ce qui pourrait entrer en conflit en prenant soin de le sauvegarder pour revenir au départ en cas de problème.

[root@becane home]# mkdir nv-bak ; cd nv-bak
[root@becane nv-bak]# mv /usr/X11R6/lib/libGL.* .
[root@becane nv-bak]# mv /usr/X11R6/lib/modules/extensions/libGLcore.a
[root@becane nv-bak]# mv /usr/X11R6/lib/modules/extensions/libglx.a

Pour être sûr d'avoir fait correctement le ménage faite un :

find /usr/X11R6/lib -name '*GL.*'
find /usr/X11R6/lib -name '*GLcore.*'
find /usr/X11R6/lib -name '*glx*'

Si l'un de ces find vous renvoie quelque chose, celui-ci va, n'en doutons pas, créer des problèmes, alors : déplacez le dit quelque chose vers nv-bak. Puis placez-vous dans NVIDIA_GLX-0.9-4 et installez le driver par :

[root@becane NVIDIA_GLX-0.9-4]# make

Utiliser la sortie TV-Out des cartes NVidia

Pour utiliser la sortie TV-out des cartes Nvidia je vous renvoie sur ces deux trucs et astuces qui sont liés :) :
Utiliser la sortie TV-Out des cartes NVidia
Utiliser la sortie TV-Out des cartes NVidia avec nvtv.

Configuration du Serveur X

Il ne vous reste plus qu'à éditer le fichier de configuration afin que le serveur graphique XFree86® ou Xorg, suivant votre configuration, prenne en compte les pilotes.

Sauvegarde du fichier de configuration

Pour plus de sécurité je vous conseil de sauvegarder votre ancien fichier de configuration grâce à la commande

# cp /etc/X11/XF86Config /etc/X11/XF86Config.sauv

ou alors

# cp /etc/X11/xorg.conf /etc/X11/cp /etc/X11/xorg.conf.sauv


Ainsi si vous rencontrez des problèmes vous n'avez plus qu'à effectuer la commande inverse par exemple :

# cp /etc/X11/xorg.conf.sauv /etc/X11/xorg.conf

et à redémarrer X .

Edition du fichier de configuration

Editez
# vi /etc/X11/XF86Config
ou
# vi /etc/X11/xorg.conf
( je vous conseille cet article pour l'utilisation de l'éditeur vi ) et modifiez les lignes suivantes :
Driver "nv"

remplacez la par (le symbole # sert à commenter une ligne pour la rendre inactive sans pour autant la supprimer pour permettre un retour en arrière facile) :

#Driver "nv"
Driver "nvidia"

et dans la section : modules cherchez la ligne :

#Load "glx"

Remplacez la par :

Load "glx"

Et remplacez cette ligne :

Load "GLcore"

par

#Load "GLcore"

chargement du module nvidia

De plus il faut charger le module nvidia, un simple

# modprobe nvidia
suffit pour votre session actuelle.

Mais pour un usage quotidien vous devez le charger à chaque démarrage d'où 3 solutions :

- Adaptez votre fichier de modules.conf, le mien ressemble à
alias char-major-195 nvidia

- Pour Slackware, rajoutez la ligne
modprobe nvidia
dans le fichier
/etc/rc.d/rc.local


- Pour Mandrake 10.1 Community ouvrez le fichier
/etc/modprobe.preload
, si la ligne est manquante rajouter nvidia et sauvegardez
modprobe.preload

Et puis lancez votre serveur X par startx ou init 5 pour relancer [kgx]dm. Et c'est tout.

Pour voir comment cela accélère, vous pouvez utiliser xracer (chez moi ça marche) ou l'économiseur xscreensaver (les economiseurs 3D) par exemple en tapant morph3d. Attention ils ne fonctionnent pas en tant qu'économiseurs d'écran (une - au moins - fonction OpenGL semble ne pas être encore implémentée !), par contre en tant que démo tout va bien. Mais des programmes plus lourds devraient pouvoir en profiter (genre Quake). Je n'ai eu aucun problème avec l'analyseur de spectre OpenGL de XMMS.


Chasse aux troubles (Trouble Shooting).

Rien ne fonctionne, je veux revenir à mon ancien driver

Normalement cela ne devrait pas arriver, mais bon, effacez dans /usr/lib tous les libGL.* et libGLcore.* et dans /usr/X11R6/lib/modules/extensions tous les libglx.* et recopiez les originaux depuis nv-bak, enlevez vos modifications dans /etc/X11/XF86Config. Redémarrez votre serveur X.

<programme> ne semble pas utiliser l'accélération 3D

NVidia nous prévient que certains programmes peuvent ne pas profiter de l'accélération 3D bien qu'étant basés sur MesaGL : ceux dont la librairie Mesa est liée statiquement avec l'exécutable (cela signifie que le programme inclut sa propre librairie OpenGL et n'utilise donc pas celle que vous venez d'installer). Dans ce cas, pas de problème, comme nous sommes dans le monde radieux de l'open source : recompilez depuis les sources et tout (ou presque) se passera bien.

libMesaGL.so not found

Un autre problème peut se poser : les programmes compilés pour MesaGL (et liés avec libMesaGL/libMesaGLU). Pour ceux-là la solution est simple, créez des liens :

# ln -s /usr/lib/libGL.so.xxx.xxx /usr/lib/libMesaGL.so
# ln -s /usr/X11R6/lib/libGLU.so.xxx.xxx /usr/X11R6/lib/libMesaGLU.so
# ldconfig

Note : C'est bien deux répertoires distincts : /usr/lib et /usr/X11R6/lib - NVidia installe ses pilotes dans /usr/lib alors que XFree86 installe ses bibliothèques dans /usr/X11R6/lib. Cela devrait régler certains problèmes.

Quand je lance X j'ai l'écran qui devient noir et la machine est plantée

Problème lié à la gestion de l''AGP. Pour cela, editez le fichier /etc/modules.conf et modifiez les options NVreg_UseKernelAGP=1 NVreg_ReqAGPSBA=1 NVreg_ReqAGPFW=1 en changeant les 1 par des '.

ATTENTION: cela n'est en fait valable que pour les pilotes versions 0.9.5 et inférieures!

Quand je passe de X à un terminal par CTRL ALT Fx : ça plante.

C'est un bug des pilotes, on ne peut rien faire pour vous. Attendez une nouvelle version des pilotes chez nvidia. Evitez de passer sur un autre terminal, préférez ouvrir un xterm.

Quake III démarre mais lorsque je joins une partie Quake se termine avec des erreurs GLX.

Essayez de mettre à jour les bibliothèques GLX en les récupérant sur http://utah-glx.sourceforge.net/ (je n'ai pas testé personnellement mais il parait que ça marche).

Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Frédéric Bonnaud le 01/05/2000.



@ Retour à la rubrique Matériel

Copyright

© 01/05/2000 Frédéric Bonnaud

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike icon
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique 3.0 :
http://creativecommons.org/licenses/by-sa/3.0/
Affichages
(Redirigé depuis Hardware-hard image-nvidia)

Serveur hébergé par ST-Hebergement et Lost-Oasis / IRC hébergé par FreeNode / NS secondaire hébergé par XName
Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons CC-BY-SA