Le logiciel jockey, plus connu sous son label "Pilotes de périphériques" dans le menu Gnome, se charge de vérifier la disponibilité de pilotes pour divers matériels de l'ordinateur, et va les chercher et les installer presque automatiquement, offrant un grand confort à l'utilisateur.

Pour autant, principalement dans le cas des pilotes graphiques, il peut être utile d'aller installer "à la main" les derniers pilotes disponibles sur le site du constructeur de la carte, les pilotes en versions bêta notamment. Voici donc une présentation pas-à-pas de l'installation du pilote NVIDIA 185.19 Beta sur une Ubuntu 9.04.

Ce billet traite uniquement de l'installation sur une Ubuntu 9.04 de la dernière version des drivers NVIDIA bêta. Si votre système fonctionne correctement, il n'est pas recommandé d'installer les drivers en versions bêta. De plus, si vous n'êtes pas à l'aise avec la ligne de commande, et si vous retrouvez sans interface graphique au cours de la procédure est un problème insoluble, réfléchissez bien avant de vous lancer dans la transition vers une version bêta des drivers propriétaires de votre carte graphique NVIDIA.

Même s'il s'agit ici de faire cette installation sur une Ubuntu 9.04, la procédure sur la version 8.10 de cette distribution, ainsi que sur tout OS basé sur Debian est sensiblement similaire, et ne devrait pas demander de grosses adaptations pour être efficace.

C'est parti !

Nvidia-8800-GTS-GTX.jpg


Prendre des précautions

La première chose à faire avant de toucher au serveur graphique est de réaliser une copie de sauvegarde du fichier de configuration xorg.conf. Cette sauvegarde permettra de revenir en arrière en cas de gros pépins sur la route, mais également d'avoir un fichier de référence pour les utilisateurs qui doivent faire des modifications plus subtiles dans le fichier de configuration, en cas de "dual-screen" par exemple.

sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.old

Ensuite on reconfigure X pour retourner à la configuration de base, sans les pilotes NVIDIA installés par jockey :

sudo dpkg-reconfigure -phigh xserver-xorg

Quitter la session puis ouvrir une nouvelle session peut être utile à cette étape, mais ça n'est pas indispensable. Notez que lors de l'ouverture de la nouvelle session, vous utiliserez les drivers par défaut VESA, et que compiz-fusion ne sera pas actif avec ces drivers. Pas de panique donc.

Si l'ouverture d'une nouvelle session ne fonctionne pas (personnellement j'ai eu droit à un écran noir...), il suffit de remettre le xorg.conf.old en place via une console (CTRL+ALT+F1-F2-...-F6 pour ouvrir une console), de réouvrir une session, de relancer la commande sudo dpkg-reconfigure -phigh xserver-xorg et de ne pas quitter la session avant de poursuivre la procédure.


S'assurer de pouvoir compiler le module du pilote

Pour compiler, il faut disposer des paquets build-essential et des headers du kernel utilisé :

sudo apt-get install build-essential linux-headers-`uname -r`

N'oubliez pas cette étape, sous peine de ne pas pouvoir compiler le module pour votre kernel.


Supprimer les drivers propriétaires installés par jockey

Avec une carte NVIDIA sous Ubuntu, il est fort probable que les drivers propriétaires soient installés lors de la première session X lancée sur la machine. C'est jockey qui s'en charge, avec ce petit message "Nouveaux drivers propriétaires disponibles" qui vous propose d'activer les drivers.

Il faut absolument les désinstaller totalement avant d'aller plus loin, pour éviter les risques de conflits par la suite entre les versions de drivers, conflits qui empêcheront à coup sûr le serveur X de démarrer. Pour faire le ménage :

sudo apt-get --purge remove $(dpkg -l | grep nvidia | awk '{print $2}')
sudo apt-get --purge remove $(dpkg -l | grep xorg | grep nv | awk '{print $2}')

La deuxième ligne de commande enlève les drivers xorg-nv, qui peuvent poser problème sur certaine configuration lors de l'installation des drivers manuellement.


Récupérer les drivers

Il faut maintenant télécharger les drivers pour votre matériel. Il s'agit ici de ne pas se tromper de paquets.

Si votre kernel est de version 2.6.28[1], voici les paquets à télécharger :

  • Pour les systèmes 32 bits :
wget ftp://download.nvidia.com/XFree86/Linux-x86/185.19/NVIDIA-Linux-x86-185.19-pkg1.run -O NVIDIA-Linux-185.pkg.run
  • Pour les systèmes 64 bits :
wget ftp://download.nvidia.com/XFree86/Linux-x86_64/185.19/NVIDIA-Linux-x86_64-185.19-pkg2.run -O NVIDIA-Linux-185.pkg.run

Si vous utilisez un noyau 2.6.29 compilé par vos soin, je pense que vous saurez trouver le bon paquet. ;-)

Et pour trouver les pilotes les plus à jour, la page des téléchargements sur le site de NVidia est parfaite.

Maintenant déplacez le paquet dans le répertoire /usr/src, et créez un lien vers celui, qui sera utile par la suite :

sudo install NVIDIA-Linux-185.pkg.run /usr/src
sudo ln -s /usr/src/NVIDIA-Linux-185.pkg.run /usr/src/nvidia-driver

L'installation des drivers

Il faut maintenant quitter la session graphique, ouvrir une console (accessible avec la combinaison CTRL+ALT+F1-F2-...-F6), puis arrêter GDM (ou KDM sous KUbuntu) via cette console avec la commande suivante :

sudo /etc/init.d/gdm stop

Cette dernière action peut demander quelques secondes avant de s'accomplir. Si pour une raison quelconque X ne s'arrête pas, il faut forcer un peu, mais c'est rarement nécessaire. Si besoin de forcer :

sudo killall Xorg

Maintenant que X est arrêter, il est temps d'installer les pilotes :

sudo sh /usr/src/nvidia-driver

Laissez le script compiler les drivers, puis s'offre à vous un choix :

  • Laisser le script reconfigurer le fichier xorg.conf dès maintenant.
  • Ou non, et dans ce cas le reconfigurer soi-même après avoir fait un reboot.

Personnellement j'ai choisi de reconfigurer immédiatement sans rencontrer de problème par la suite, mais ça n'est généralement pas recommandé.

Dans tout les cas, la prochaine étape est simple :

sudo reboot

:-)


Alors, ça marche !?

Retour sous X, ouvrez une session :

  • Si vous avez choisi de reconfigurer votre xorg.conf lors de l'installation des drivers, c'est terminé.
  • Sinon, il faut encore lancer la reconfiguration, puisque la session actuelle utilise les drivers VESA. Pour cela :
sudo nvidia-xconfig

Puis fermez et ouvrer une nouvelle session.

Et voilà, vous devriez utiliser vos nouveaux drivers graphiques. Il est possible que la transition ne se passe pas aussi simplement, et que de petits problèmes apparaissent lors de la première ouverture de session sous les nouveaux drivers.


Mettre à jour automatiquement les modules lors d'un changement de kernel

Lors d'une mise à jour du kernel, les modules compilés lors du l'installation du drivers ne seront plus utilisables par le nouveau kernel, il faudra les recompiler, ce qui peut-être pénible à la longue...

Il est heureusement possible d'automatiser la compilation en cas de mise à jour, et très simplement en plus ! Il faut tout d'abord créer et éditer un nouveau fichier intitulé update-nvidia :

gedit update-nvidia

Copiez dans ce nouveau fichier le script suivant :

#!/bin/bash
#

# Set this to the exact path of the nvidia driver you plan to use
# It is recommended to use a symlink here so that this script doesn't
# have to be modified when you change driver versions.
DRIVER=/usr/src/nvidia-driver


# Build new driver if it doesn't exist
if [ -e /lib/modules/$1/kernel/drivers/video/nvidia.ko ] ; then
    echo "NVIDIA driver already exists for this kernel." >&2
else
    echo "Building NVIDIA driver for kernel $1" >&2
    sh $DRIVER -K -k $1 -s -n 2>1 > /dev/null

    if [ -e /lib/modules/$1/kernel/drivers/video/nvidia.ko ] ; then
        echo "   SUCCESS: Driver installed for kernel $1" >&2
    else
        echo "   FAILURE: See /var/log/nvidia-installer.log" >&2
    fi
fi

exit 0

Celui-ci se charge de vérifier la présence ou l'absence des modules du drivers pour votre noyau, et de les compiler s'ils sont absents. Une fois le fichier enregistré, il suffit de lancer les deux commandes suivantes :

sudo mkdir -p /etc/kernel/postinst.d
sudo install update-nvidia /etc/kernel/postinst.d

Et c'est tout, lors du prochain boot après une mise à jour du kernel, les modules seront compilés lors du boot. :-)

790i_SLI_9800_GX2.jpg


Revenir aux drivers de jockey

Pour totalement supprimer l'installation de ces pilotes "à la main", une simple séquence de commande suffit :

sudo nvidia-uninstall
sudo dpkg-reconfigure -phigh xserver-xorg
sudo apt-get install xserver-xorg-video-all
sudo rm /usr/src/nvidia-driver /usr/src/NVIDIA-Linux-185.pkg.run /etc/kernel/postinst.d/update-nvidia

Après avoir lancé ces commandes, jockey proposera à nouveau d'installer les drivers propriétaires une fois que vous aurez relancé X.


Ce billet est une traduction libre des messages suivants sur ubuntuforums.org :

Notes

[1] Pour connaitre la version du kernel, utilisez la commande : "uname -r"

  • Dernière modification le : 14 septembre 2009 à 14:54