Installation des drivers nVIDIA propriétaires: HOWTO

Page principale

Répondre à ce message
Auteur: Olivier Allard-Jacquin
Date:  
À: Guilde Mailing list
Sujet: Installation des drivers nVIDIA propriétaires: HOWTO
    Bonsoir,

    suite au mail de Frédéric, et comme les drivers "nv" libres ne marchent
pas correctement sur ma machine (Debian Testing en x86 / Intel QuadCore
/ nVIDIA 8600GTS), je me suis décidé à installer proprement les derniers
drivers propriétaires nVIDIA (100.14.19).


    Au jour d'aujourd'hui, les paquets "nvidia-glx" n'étant pas disponibles
pour Debian Testing, la seule solution est de passer par le
"NVIDIA-xxxx.run" que l'on trouve sur le site web de nVIDIA
(http://www.nvidia.com/).


    Mais celui-ci ne s'installe pas, du fait que le dernier kernel de
Debian Testing (2.6.22) n'a pas été compilé avec la même version de GCC
(4.1) que le GCC installé (4.2) (*).


    De plus, une phase de compilation du kernel est obligatoire, car il
faut désactiver l'option de virtualisation du kernel (elle est
incompatible avec les drivers nVIDIA).


    Enfin, sous Debian et si on veut faire les choses proprement, la
"méthode Debian" nécessite de créer un .deb pour ce nouveau kernel, sans
passer par les classiques "make bzimage / make modules" (**).


    Je vous livre en attachement la procédure que j'ai écrite. Elle se base
sur des informations glanées sur Internet (***), et sur mes propres tests.


    J'invite les lecteurs à lire ce HOWTO une première fois avant de taper
des commandes, car il y a quelques commentaires qui peuvent se révéler
importants.


    Pour ceux que le passage par la compilation rebute (Frédéric ? ;)), je
fournis sur http://olivieraj.free.fr/temp/debian/ les paquets que j'ai
compilé sur ma machine. Ils sont valables pour une machine :
 - Debian testing, mise à jour
 - Fonctionnant en mode x86, et NON PAS en mode AMD64
En cas d'utilisation de ces paquets, sautez la section "# Compilation du
kernel" de mon HOWTO.


Note optimiste : Pour l'instant, cela marche chez moi, et "glxgears"
confirme que les drivers accélérés fonctionnent.

Note réaliste : Je NE suis PAS un spécialiste de la compilation de
kernel sous Debian, ni de la génération de paquets. Si vous avez des
remarques à apporter à mon HOWTO, je suis preneur.

    Cordialement,


                    Olivier


(*): Bravo à Debian pour cette superbe cohérence !
(**): Au prime abord, c'est une méthode qui rebute. Mais au final, la
possibilité de supprimé à grand coup de "aptitude remove" le kernel que
l'on a compilé soit même est très pratique.
(***): C'est le gros problème avec Debian. Il y a des tonnes de liens et
de brides de documentation un peu partout sur Internet, mais la plupart
n'est plus à jours. Faire une synthèse cohérente est "propre" est un
gros boulot. Trop d'informations nuis à l'information.

-- 
~~~~~~~  _____/\_____  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Phoenix /   _ \/ _   \    Olivier Allard-Jacquin
       /   / \  / \   \   Web:  http://olivieraj.free.fr/
      /___/  /  \  \___\  Mail: olivieraj@???
~~~~ /////  ///\\\  \\\\\ ~~~~~~~~~~~~~~~~~~~~~~~ Linux Powered !!

    Installation des drivers nVIDIA propriétaires
        sur une Debian testing
    en utilisant le binaire nVIDIA (NVIDIA-xxxxxx.run)
        et NON PAS les packages officiels Debian
            2007/10/06


L'intérêt de cette méthode est que :
- au jour où j'écris ces lignes, les derniers drivers nVIDIA ("100.14.19") NE sont PAS disponibles dans "Debian testing"
- les drivers nVIDIA propriétaires sont incompatibles avec le kernel par défaut de "Debian testing", du fait de l'utilisation de l'option "Paravirtualization support (EXPERIMENTAL)" (aka "CONFIG_PARAVIRT")
- le dernier kernel ("2.6.22-2") est compilé avec une version de GCC moins récente que celle fournit par "Debian testing"


# Mise à jour de la distribution :
aptitude update
aptitude dist-upgrade


# Installation des packages de compiation :
aptitude install gcc make


# Installation des headers du kernel :
aptitude install linux-headers-2.6-686
Remarque:
- on utilise ici "linux-headers-2.6-686", mais cela peut ne pas être toujours le cas, notamment pour un kernel > 2.6, ou non-686 (amd64 par exemple)
- cette commande ne sert à rien, car le "NVIDIA-xxxxxx.run" ne pourra pas s'installer, du fait que la version gcc qui est installée (4.2) est différente de celle utilisé pour compiler le kernel (4.1). A cause de cela, il faudra donc compiler soit-même un kernel. C'est ce que nous voyons ci-dessous


# Installation des sources du kernel :
aptitude install linux-source


# Installation des outils/librairies de compilation du kernel et de xorg :
aptitude install pkg-config modutils module-init-tools kernel-package build-essential bzip2 xserver-xorg-dev


# Vérification de la non-installation des package nvidia Debian :
dpkg -l |grep -i nvidia
aptitude remove --purge nvidia-glx nvidia-kernel-common
Remarques :
- ' ls -la /etc/init.d/nvidia-glx /etc/init.d/nvidia-kernel ' doit ne RIEN retourner. Si ces fichiers existent, les supprimer


# Compilation du kernel :
  cd /usr/src
  tar xjf linux-source-2.6.22.tar.bz2
  ln -s linux-source-2.6.22 linux
  cd linux
  make menuconfig
    - Sélectionner la section "Processor type and features"
    - Décocher "Paravirtualization support (EXPERIMENTAL)"
    - Sélectionner "Exit"
    - Sélectionner "Exit"
    - Sauver le ".config"
    - " grep -i CONFIG_PARAVIRT .config " doit renvoyer "# CONFIG_PARAVIRT is not set"


make-kpkg clean
export CONCURRENCY_LEVEL=4
Remarque : Je configure la variable "CONCURRENCY_LEVEL=4", afin de pourvoir bénéficier des capacités multicore de mon processeur (option "-j 4" de "make")

make-kpkg --rootcmd fakeroot --initrd --revision nv.100.14.19.001 -stem linux kernel_image kernel_headers
Remarque : Le numero de révision ("nv.100.14.19.001", pour "nVIDIA / 100.14.19 / compilation 001) ne doit contenir QUE des caractères alphanumériques, des caractères + et . (voir à ce sujet, "man make-kpkg" et le paramètre "--revision"). Le nom du kernel créé sera alors : "2.6.22-nv.100.14.19.001"

cd ..
dpkg -i linux-image-2.6.22_nv.100.14.19.001_i386.deb linux-headers-2.6.22_nv.100.14.19.001_i386.deb


# Vérification de la bonne installation du kernel :
  ls -la /boot | grep 2.6.22
(les fichiers suivants doivent être présents :
config-2.6.22
initrd.img-2.6.22
vmlinuz-2.6.22
System.map-2.6.22
)
  dpkg -l |grep 2.6.22
(on doit trouver :
ii  linux-headers-2.6.22                 nv.100.14.19.001                 Header files related to Linux kernel, specif
ii  linux-image-2.6.22                   nv.100.14.19.001                 Linux kernel binary image for version 2.6.22
)


# Utilisation des packets compilés par moi-même :
Si vous voulez vous économiser la phase de compilation, je mets à disposition sur http://olivieraj.free.fr/temp/debian/ les paquets "kernel" et "headers" générés par la compilation d'aujourd'hui. Ils sont valables pour une confguration x86 (et NON PAS pour de l'AMD64 bit) :
- http://olivieraj.free.fr/temp/debian/linux-headers-2.6.22_nv.100.14.19.001_i386.deb
- http://olivieraj.free.fr/temp/debian/linux-image-2.6.22_nv.100.14.19.001_i386.deb
- http://olivieraj.free.fr/temp/debian/MD5SUM
Après le téléchargement, il faudra passer par l'étape :
dpkg -i linux-image-2.6.22_nv.100.14.19.001_i386.deb linux-headers-2.6.22_nv.100.14.19.001_i386.deb

# Reboot
Reboot de la machine
Au démarrage, sélectionnez le kernel nouveau "2.6.22" et non pas le kernel officiel ("2.6.22-2-686" par exemple)


# Télechargement et installation des drivers nVIDIA:
Aller sur http://www.nvidia.com/Download/index.aspx?lang=en-us , et télécharger le driver adéquat ("NVIDIA-Linux-x86-100.14.19-pkg1.run" dans mon cas)


# Installation du driver NVIDIA propriétaire
Femer toutes les application
Passer en mode console (Ctrl+Alt+F1)
Se loguer en root
Arrêter X:
- Si on utilise KDE: /etc/init.d/kdm stop
- Si on utilise Gnome: /etc/init.d/gdm stop
Installer le driver nVIDIA propriétaire :
bash NVIDIA-Linux-x86-100.14.19-pkg1.run
Redémarrer X :
- Si on utilise KDE: /etc/init.d/kdm start
- Si on utilise Gnome: /etc/init.d/gdm start
Au démarrage, un gros logo "nVIDIA" doit apparaître