Xorg7 - installer drivers nvidia
Dans ce tutoriel nous allons aborder comment installer les drivers nvidia sous debian. Tout ce qui dit est valable pour d'autres distributions basées sur debian comme par exemple ubuntu. Toutefois pour cette dernière, on retiendra que la procédure d'installation est spécifique. On pourra se référer directement à la page dédiée :
http://doc.ubuntu-fr.org/nvidia
On va à présent aborder quatre manières différentes manières d'installer le driver nvidia sous debian.
A) On utilise le script dédié disponible sur le site officiel de nvidia. Elle est simple à mettre en oeuvre mais malheureusement à chaque mise à jour il faut recommencer ;
B) On utilise module-assistant. C'est à mon sens la plus propre. En outre elle évite d'avoir de soucis lors des mises à jour xorg. Il faudra toutefois reconstruire le module à chaque mise à jour de noyau ;
C) On utilise envy ;
D) On construit le module avec make-kpkg ;
Quelle que soit la méthode utilisée, il faudra reconfigurer le serveur graphique (ou serveur X, ici xorg) pour charger le driver nvidia. Cette procédure est explicitée dans la dernière étape de ce tutoriel. Il va sans dire que la plupart des commandes qui suivent nécessitent d'être en root.
A) Installation avec le script nvidia
Avantages de la méthode :
- ça marche presque à tout les coups
- on peut aisément récupérer les derniers drivers.
Inconvénients de la méthode :
- on est obligé de répéter le travail pour chaque machine
- le module n'étant pas installé par un paquet, l'installation se fait plus ou moins proprement. En particulier il est fréquent d'avoir une erreur sur libglx.so qui n'est pas fatale.
- il faut savoir configurer la version du compilateur, passer en mode texte pour préparer le module, savoir stopper le mode graphique.
Téléchargement du script
Allez sur
http://www.nvidia.fr/Download/index.aspx?lang=fr
Notes :
a) Si vous utilisez un noyau que vous avez compilé manuellement (par exemple un noyau téléchargé sur
www.kernel.org,), vérifiez que le lien symbolique /usr/src/linux pointe sur les sources de noyau correspondantes.
b) Si vous utilisez un noyau fournit par un paquet linux-image (ce qui est le cas en général), pensez à installer les linux-headers correspondants :
aptitude install linux-headers-$(uname -r)
Lancement du script
Commençons par rendre le script exécutable :
chmod +x NVIDIA-Linux-x86-1.0-8762-pkg1.run
Ensuite il faut couper son serveur X (remplaçer kdm par gdm ou xdm au besoin) :
/etc/init.d/kdm stop
Il faut ensuite vérifier que le compilateur par défaut pointe vers le celui utilisé par défaut. Ce n'est par défaut pas le cas (les linux-images sont compilées avec gcc-4.3 et par défaut on utilise un gcc-4.4).
export CC=gcc-4.3
On peut à présent lancer le script :
./NVIDIA-Linux-x86-1.0-8762-pkg1.run
Copie des bibliothèques (obsolète)
Note : cette étape n'est plus nécessaire aujourd'hui. À l'époque le script nvidia ne prenaient pas en compte ce changement d'arborescence. Avec un script nvidia récent on peut donc ignorer cette étape
Jusque là rien de très original, mais le problème c'est que les drivers sont dans /usr/X11R6/lib/modules et les libs dans /usr/X11R6/lib/. Il suffit juste de les recopier dans le bon répertoire (/usr/lib/xorg) :
cp /usr/X11R6/lib/libXvMCNVIDIA* /usr/lib/xorg
cp -R /usr/X11R6/lib/modules* /usr/lib/xorg
B) Installation avec module-assistant
Avantages de la méthode :
- on peut facilement réutiliser les drivers ainsi généré pour d'autres debian utilisant le même kernel.
- l'installation et la désinstallation se font proprement car on fait tout via le gestionnaire de paquet
Inconvénients de la méthode :
- parfois le driver proposé par module-assistant n'est pas très récent
- parfois il ne compile pas.
Installation de module assistant et de nvidia-kernel-common
On commence par installer module assistant et le récupérer le paquet nvidia :
aptitude install nvidia-kernel-common module-assistant
Correction des dépôts
Note : cette étape n'est plus nécessaire aujourd'hui. A priori ajouter simplement les dépôts lenny "contrib" et "non-free" suffit pour que tout se passe correctement. On peut donc ignorer cette étape, et y revenir uniquement si la commande échoue
À ce stade si on tente de construire le module, on se prendra très probablement un gros vent (sous lenny). Il dira quelque chose du genre "vérifiez qu'il ne manque pas des dépôts contrib ou free dans sources.list". En effet, pour faire marcher ce paquet sous lenny, il faut pouvoir récupérer certains paquets qui ne sont disponibles qu'en debian sid.
Afin de régler le problème on va donc au préalable patcher un peu /etc/apt/sources.list. Voici le contenu du fichier que j'utilise :
deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free
deb http://www.debian-multimedia.org lenny main contrib non-free
deb-src http://www.debian-multimedia.org lenny main contrib non-free
## Dépôts Sid
# priorités spécifiées dans /etc/apt/preferences
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
Ensuite on corrige /etc/apt/preferences pour dire qu'on ne prend les paquets sid que si on ne trouve pas son bonheur dans les paquets lenny (si ce fichier n'existe pas, le créer) :
Package: *
Pin: release o=Debian,a=testing
Pin-priority: 990
Package: *
Pin: release o=Debian,a=unstable
Pin-priority: 90
À présent récupérons et appliquons les mises à jour :
aptitude update
aptitude safe-upgrade
Construction du module
Maintenant on amorce l'installation du driver proprement dit :
module-assistant auto-install nvidia-kernel-source
C'est cette étape qu'il faudra refaire à chaque mise à jour kernel. En abrégé on peut aussi écrire :
m-a a-i nvidia-kernel-source
On peut d'ailleurs facilement récupérer le .deb généré dans /usr/src en vue de le réutiliser sur d'autres machines debian utilisant une carte nvidia et la même version de noyau. Il suffira simplement d'installer nvidia-common et d'installer le paquet généré avec la commande dpkg -i. Cette approche est également possible avec l'approche (voir D-2), rendez-vous au paragraphe correspondant pour voir comment faire.
Vérifications
Si tout va bien, la commande module-assistant doit se terminer correctement. On peut d'ores et déjà vérifier qu'il se charge correctement :
modprobe nvidia
lsmod | grep nvidia
Pour que le module soit chargé à chaque redémarrage, il faut ajouter la ligne nvidia dans /etc/modules, soit avec son éditeur texte favori, soit en tapant :
grep -q ^nvidia /etc/modules || echo nvidia >> /etc/modules
Attention : si les modules nvidiafb, ritatv et rivafb sont chargés, ceux-ci peuvent interférer et empêcher le chargement du module nvidia.
C) Installation automatique avec envy
Le processus d'installation peut être fait automatiquement, voir
cette astuce.
D) Installation par make-kpkg
Avantages : permet de faire comprendre à debian qu'on a les drivers nvidia installés, ce qui évite l'écrasement de certains fichiers à la mise à jour de xorg par exemple...
Inconvénients : jamais réussi a le faire fonctionner pour une mise a jour des drivers nvidia... : je suis obligé de passer par l'étape précédente : sh NVidia***.run pour une mise a jour .
Construction du module
Sous debian, on peut également utiliser make-kpkg. Cette commande permet de construire un paquet debian permettant de déployer un module comme un paquet normal. Cette approche est pertinente si l'on veut par la suite déployer le driver sur d'autres debian utilisant une même version de noyau.
Pour cela :
aptitude install nvidia-kernel-common nvidia-kernel-source
cd /usr/src/linux
make-kpkg modules_image
Cela crée un paquet nvidia-kernel-<VersionDuNoyau>.deb.
Installation du paquet
Pour l'installer :
dpkg -i nvidia-kernel-<VersionDuNoyau>.deb
aptitude install nvidia-glx
Remarque : Lors d'un changement de noyau, je vous conseille cette dernière méthode, très rapide, et en accord avec la compilation à la sauce debian.
Reconfiguration du serveur X
Correction du fichier de configuration /etc/X11/xorg.conf
On peut utiliser deux méthodes :
1) via nvidia-xconfig (approche recommandée)
aptitude install nvidia-xconfig
dpkg-reconfigure xserver-xorg
nvidia-xconfig
2) à la main :
A priori il suffit de changer dans ce fichier la ligne
Driver "nv"
par :
Driver "nvidia"
De nos jours, vu que le fichier /etc/X11/xorg.conf est optionnel ou généré de manière plus que partielle, cette approche devient de moins en moins possible.
Prise en compte des nouveaux drivers
On redémarre le serveur X, et normalement c'est bon ;-) :
service kdm restart
(Au besoin, remplacer kdm (kde) par gdm (gnome) ou xdm).
Remarque : cette commande revient à lancer :
/etc/init.d/kdm restart
Vérifications
Pour vérifier que tout est bon, on peut dans un terminal lancé par l'utilisateur qui a ouvert la session graphique quelques commandes de diagnotics contenues dans le paquet mesa-utils :
aptitude install mesa-utils
Ensuite
glxinfo | grep -i render
glxgears
La première commande doit notamment dire "direct rendering: Yes". De nos jours cette commande ne permet pas d'avoir la garantie complète que l'accélération matérielle est performante. La seconde commande permet d'afficher des roues d'engrenages. Une accélération matérielle correcte (comprendre une installation correcte du module) doit engendrer une animation de l'ordre de quelques milliers de FPS.
En cas de souçis
kdm plante au lancement de la machine (et uniquement au lancement)
Il peut arriver qu'au lancement de la machine, tout se charge correctement (le module nvidia, le serveur X) mais que kdm plante. On retrouve cette information dans /var/log/syslog (et tout semble bien se passer dans /var/log/Xorg.0.log).
Pour vérifier que vous avez bien ce problème, assurez vous après que la commande suivante (à lancer en root via le raccourci ctrl alt f1) lance avec succès kdm :
service kdm restart
Ce problème semble être spécifique à certains modèles de carte nvidia (par exemple j'ai le problème avec une GeForce 210m) où le driver semble mettre un temps conséquent à se charger. Dans ca cas, kdm se dit que le serveur X a planté et interrompt son chargement avant que tout se soit initialisé. Par défaut kdm attend 15s.
Pour remédier au problème il suffit de corriger /etc/kde4/kdm/kdmrc. À la ligne ServerTimeOut mettre 30s (voir plus si ça ne suffit pas).
...
# How long to wait for a local X-server to come up.
# Default is 15
ServeurTimeOut=30
...
Aux prochains redémarrages, le serveur X devrait se lancer correctement.
Le serveur X commence à se charger, puis brusquement tout se bloque
On est dans ce cas quand même un ctrl alt suppr ou un ctrl alt f1 ne répondent pas. Dans ce cas il y a fort à parier pour qu'une erreur kernel découlant du driver nvidia est gelé la machine. Il faudra alors soit repasser au driver nv (voir paragraphe suivant), utiliser une autre version de driver nvidia etc...
Ce genre de problème peut survenir pour des cartes très récentes ou lors de l'utilisation de drivers très récents et pas encore trop testés.
Comment utiliser le driver libre nv et non plus nvidia ?
On peut toujours utiliser les drivers nv en corrigeant /etc/X11/xorg.conf (remplacer nvidia par nv). Attention alors à bien avoir installé le paquet xserver-xorg-video-nv. Pour l'installer :
aptitude install xserver-xorg-video-nv
Le serveur X sera alors lancé avec des options par défaut et en particulier le driver nv. Autre manière de procéder (plus propre) on peut lancer la commande :
dpkg-reconfigure xserver-xorg
Si le serveur X est récent on peut aussi simplement supprimer /etc/X11/xorg.conf.
Quelque soit l'approche retenue, il faudra ensuite relancer le serveur X en relançant kdm/gdm ou xdm :
service kdm restart
Liens utiles
http://wiki.debian.org/...
http://debian-facile.org/forum/viewtopic.php?id=693
Lire la suite
Export display avec xdmcp »
Publié par
mamiemando -
Dernière mise à jour le 22 mai 2010 à 17:32 par mamiemando