Skip to Content

Compilation du driver propriétaire nVidia avec les sources fournies par Debian.

On peut tout d’abord se demander s’il est judicieux d’utiliser un driver propriétaire sur un système qui se veut entièrement libre (voir le contrat social de Debian ). La réponse dépend bien évidemment de vous, ce driver permettant essentiellement l’accélération graphique, l’utilisation de la sortie télé et la configuration de deux écrans.

Nous allons donc compiler et installer les drivers propriétaires nVidia fournis par Debian.

Nous détaillerons deux méthodes selon que :

  •  le noyau n’a jamais été recompilé (noyau par défaut) ;
  •  le noyau a été recompilé localement (noyau local).

    NOTES sur les commandes shell :


    l'indicateur "#" signifie que le commande est à exécuter sous root

    l'indicateur "$" signifie que le commande est à exécuter sous
    l'utilisateur normal

    Noyau par défaut

    Si vous utilisez le noyau par défaut, vous avez le choix entre :

  •  mettre à jour le noyau ;
  •  ne pas mettre à jour le noyau.

    Notez que la mise à jour du noyau est une bonne idée mais dépend de votre connexion internet. Si vous choisissez de pas mettre à jour le noyau passer directement à l’étape "Installation des sources".

    Mise à jour du noyau

    La mis à jour du noyau dépend essentiellement de votre architecture, vous devez donc vous renseigner sur celle-ci.

    TODO : [1]

    Nous admettrons que l’architecture est un pentium IV ou compatible 32bits (i686).

    Nous allons dans un premier temps rechercher l’image puis l’installer :

    Une fois l’installation effectuée, redémarrer afin d’utiliser votre nouveau noyau et ainsi vérifier que votre système le supporte.

    Installation des sources du driver

    Cette phase est relativement simple :

    Si vous ne trouvez pas de paquet candidat, mettez à jour vos sources apt en ajoutant éventuellement une source non officielle .

    Configuration des entêtes

    Si vous utilisez le noyau par défaut de la distribution, il faut d’abord se renseigner sur sa version :

    Exemple :


    $ uname -r
    2.6.12-1-686

    Dans l’exemple, la version du noyau est 2.6.12-1-686.

    Nous allons maintenant installer les entêtes du noyau utilisé.

    Note : les noms des entêtes et des sources du noyau ont changé depuis la version 2.6.12. Donc si vous cherchez :

  •  les entêtes pour les versions antérieures à 2.6.12, le nom sera du type kernel-headers-`uname -r` ;
  •  les entêtes pour les versions égales ou postérieures, le nom sera du type linux-headers-`uname -r`.

    Pour la suite, il faudra tenir compte de la version de votre noyau, lors de la configuration des variables d’environnements.

    Merci à TNorth pour avoir souligné le problème.

    Pour les sources, la règle est la même en substituant -source- à -headers-.

    Exemple :


    $ aptitude search linux-headers `uname -r`
    linux-headers-2.6.12-1-686 - Architecture-specific header files for Linux kernel 2.6.12 on PPro/Celeron/PII/PIII/P4 machines
    linux-headers-2.6.12-1-686-smp - Architecture-specific header files for Linux kernel 2.6.12 on PPro/Celeron/PII/PIII/P4 SMP machines

    Installer ensuite le paquet qui correspond à votre version de noyau :

    Noyau local

    Si vous avez recompilez vous-même votre noyau, vous devez simplement vérifiez que le lien symbolique /usr/src/linux pointe bien vers les sources que vous avez utisez.

    TODO : [2]

    Variables d’environnement

    À partir de cette étape, vous devez effectuer les commandes suivantes dans le même terminal.

    Vous devez déclarer deux variables d’environnement :

    Suivant votre noyau, il faut aussi déclarer les entêtes :

  •  soit du noyau par défaut de version antérieure à 2.6.12 :
  •  soit du noyau par défaut de version postérieure ou égale à 2.6.12 :
  •  soit du noyau local :

    Compilation du driver

    Nous allons maintenant décompresser et compiler le driver :

  •  décompression des sources :
  •  compilation des sources :

    Normalement, vous devriez avoir un paquet debian dans le répertoire /usr/src/modules.

    Installation du driver

    Une étape simple, il faut installer le driver et vérifier les dépendances :

    Vérifions maintenant que tout va bien :

    Si depmod ne génère pas d’erreur, alors passer à l’étape suivante, sinon,
    vous n’avez peut-être pas redémarrer votre ordinateur après avoir mis à jour l’image du noyau, si c’est le cas, enlever le paquet (# dpkg -r nvidia-kernel-`uname -r`*deb) redémarrer et reprennez à l’étape "Variables d’environnement".

    TODO : [3]

    Installation du driver GLX

    Vérifier d’abord que le serveur graphique est bien installer :

    Ensuite, l’étape est assez simple :

    Chargement automatique du driver

    Pour que votre driver fonctionne, il faut qu’il soit charger en tant que module dans le noyau. Pour le faire de manière automatique, créez le fichier /etc/modprobe.d/nvidia et ajoutez :

    Ensuite, mettez à jour les modules :

    Il ne vous reste plus qu’à déclarer au système l’utilisateur quel utilisateur a le droit d’utiliser l’accélaration graphique (ici bibi) :

    Règles supplémentaires pour les noyaux 2.6.14

    Pour les noyaux 2.6.14 (et 2.6.13), les entrées /dev/nvidia* et /dev/nvidiactl disparaissent lors d’un reboot. Une solution (temporaire) est d’ajouter une règle udev (si vous l’utilisez évidemment).
    Tout d’abord, il faut créer un fichier /etc/udev/nvidia.rules contenant :


    # vim /etc/udev/nvidia.rules

    Ensuite, il faut créer un lien symbolique ainsi :


    # cd /etc/udev/rules.d/
    # ln -s ../nvidia.rules 000_nvidia.rules

    Le 000_ assure que cette règle sera lue avant les autres.

    NOTE : l’auteur décline toute responsabilité quant à l’utilisation de cette règle (Disons que chez bibi, elle marche).

    Voili, vous devez relancez votre machine avant de passer à la suite.

    NOTE : vous devrez recompiler votre driver si vous changez de noyau.

    Utiliser le driver

    Il faut maintenant déclarer au serveur X d’utiliser le nouveau driver :

    et choisissez "nvidia" lorsqu’il vous demande de sélectionner le driver.

    Pour les modules :

  •  Sélectionnez les modules du serveur X.Org chargés par défaut : ne modifiez pas la liste, sauf pour trois modules importants qui doivent être chargés ou pas selon les cas (ils concernent tous l’accélération 3D) :

    Driver nvidia:         dri:non        GLX:oui        GLcore:non

    Mettre une section "Files" de référence dans la configuration ?

    Répondez Oui.


    Mettre une section "DRI" de référence dans la configuration ? :

    répondez Non.

    NOTE : si vous êtes suffisament à l’aise avec la manipulation de fichier de configuration, vous pouvez faire ces changements directement dans le fichier de configuration du serveur X :

  •  X.Org : /etc/X11/xorg.conf ;
  •  XFree86 : /etc/X11/XF86Config-4.

    N’oubliez pas de faire une sauvegarde de l’ancien avant ;o).

    Relancer le serveur X

    Quitter votre session, et une fois à l’écran de démarrage : utilisez la combinaison de touche : "Ctrl-Alt + Ret.Arr"

    Si tout va bien, le serveur devrait se relancer sans problème, vous pouvez alors tester l’accélération graphique ainsi :

    tester d’abord sa présence :

    Si vous avez la ligne :


    $ glxinfo | grep direct
    direct rendering: Yes

    Vous pouvez lancer glxgears pour tester l’affichage.

    Pour finir, quelques liens vers des méthodes plus propres :

  •  sur le Wiki Debian  ;
  •  sur le site Andesi .

    SOURCES : cet article est la traduction de saneous
    avec des apports de Formation GNU/Linux et de ce poste pour la rustine udev du noyau 2.6.14.

    NOTE : configuration utilisée dans cet article :

    OS :

  •  Noyau : 2.6.12-686 (recompilé) ;
  •  Distribution : Debian Testing ;
  •  Serveur X : X.Org 6.8.2 ;
  •  Driver nVidia : nvidia 1.0-7174.

    Matériel

  •  Processeur : P4 ;
  •  Carte vidéo : nVidia GForce4 TI 4200.
  • Commentaires

    PB Install driver Nvidia

    Bonjour a Tous

    Sa y est apres mure reflexion je suis passe a linux
    apres avoir essayée differente distrib RedHat Mandrake Knoppix mon choix c portée sur Debian
    pour l installation minimun (bin oui si pour faire du windows autant restée dessus)
    donc tous sa pour dire que je suis une grosse bille
    dans ce genre
    apres avoir rame pour comprendre qu il fallait un serveur de windows pour avoir une interface graphique j ais installé GNome et la L Horreur 2 resolutions proposée 640*480/800*600
    supposant un PB de driver je cherche de la doc et finit par tombe sur votre article le style est clair et en méme temps fournie en info je me lance je change mon noyeau sa marche impec (2.6.8-2-k7-smp)

  •  1 QUESTION smp ????
  •  2 QUESTION aptitude install nvidia-kernel-source nvidia-kernel-common
    ne marche pas chez moi existe dans la BDD Mais introuvable
    je les telecharge mais impossible d arriver a lui faire
    comprendre ou il sont impossible de les copier dans usr/src etc...etc...
    6heures en tout pour pas grand chose si qqun a une Idee PLEASE HELP ME
  • > Compilation du driver propriétaire nVidia avec les sources fou

    merci pour ta remarque, j’ai mis à jour l’article en conséquence.

    hatori.

    > Compilation du driver propriétaire nVidia avec les sources fou

    Salut,

    avec un peu de retard, je me vois obliger de te contredire. La version des sources fournies par Debian change donc le problème que tu soulèves était peut-être vrai à un certain moment mais ne l’es plus actuellement. Pour preuve, j’utilise le driver 1.0-7174 compilé comme décrit dans l’article et l’option twinview marche parfaitement.

    hatori.

    > Compilation du driver propriétaire nVidia avec les sources fou

    Attention, kernel-headers-x.y.z-w se nomme désormais linux-headers dans les repo debian.

    Il faut donc remplacer
    export KSRC=/usr/src/kernel-headers-`uname -r`
    par
    export KSRC=/usr/src/linux-headers-`uname -r`

    > Compilation du driver propriétaire nVidia avec les sources fou

    Merci pour cet article il m’a permis de voir deux ou trois points que je ne connaissais pas.
    En revanche je n’arrive toujours pas à avoir l’accélération graphique sur ma machine.

    depmod -a ne me renvoi rien

    Le module nvidia est bien installé (lsmod le trouve)

    J’ai aussi installé sans problème visible les paquets nvidia-glx et nvidia-glx-dev.

    Mais dès que je fait un glxinfo ou glxgears j’ai une erreur de segmentation (segfault).

    Si j’active le module glx dans le fichier de conf xorg (xorg.conf) startx renvoi une erreur impossible de charger glx

    Je n’arrive pas à comprendre pourquoi ni comment régler se problème.

    > Compilation du driver propriétaire nVidia avec les sources fou

    La version du pilote de Nvidia fournie pas Debian ne permet pas le twinview, c’est pourquoi j’ai essayé de trouver un moyen facile d’utiliser la derniere version de Nvidia.

    Il existe encore une autre version avec module assistant ou tu n’a pas besoin de generer de paquet, mais qui ne t’installe que la version "ancienne" des pilotes Nvidia (celle des sources de Debian en fait).

    Le paquet nvidia-settings est aussi tres intéressant, il permet notament l’overclocking tres facilement en rajoutant une ligne dans le fichier de conf de Xfree, ce qui debloque le menu du pilote.

    Chaque methode a ses avantages et inconvénients, mais on est tous d’accord pour dire que la Debian est une distrib tout bonnement géniale !

    Vive Debian :-)

    > Compilation du driver propriétaire nVidia avec les sources fou

    Salut,

    effectivement, c’est une autre solution mais l’idée était de ne pas passer par l’installateur de nVidia et donc de passer par les sources fournies par Debian.
    Cela dit, j’ai découvert une solution encore différente et bien plus propre que celle présentée ici. Elle passe par l’outil que tu utilises partiellement, module-assistant (m-a) tout se passe ici :
    http://www.andesi.org/index.php ?node=83.

    > Compilation du driver propriétaire nVidia avec les sources fou

    Bonjour,
    voici une solution alternative :

    * apt-get install kernel-image-2.6-686 (ou kernel-image-2.6-k7) ceci afin d’avoir le dernier noyau => facultatif :-)

    * reboot du PC en choisissant le dernier noyau dans le menu de grub

    * apt-get install module-assistant

    * m-a -i prepare

    * telechargement du dernier pilote linux NVIDIA-Linux-x86-1.0-7676-pkg1.run chez Nvidia

    * /etc/init.d/gdm stop => pour passer en mode console (il faut etre root)

    * sh ./NVIDIA-Linux-x86-1.0-7676-pkg1.run en tant que root

    A ce stade le pilote est installé, il suffit maintenant de modifier le fichier de conf :

    * vi /etc/X11/XF86Config-4

    Commenter (ajouter un # devant la ligne) les lignes suivantes de la section modules :
    dri et glcore,

    par contre laissez glx, et
    remplacer nv par nvidia, et voila :-)

    * /etc/init.d/gdm start => redemarrage du display manager (en tant que root)

    > Compilation du driver propriétaire nVidia avec les sources fou

    Salut Tony,

    j’ai suivi tes recommandations et je suis d’accord avec toi, l’utilisation de admin alourdi les choses mais je voulais montrer qu’il est possible (et souvent préférable) de ne pas tout faire en mode superuser. Dans l’idée l’article sur l’ajout d’un admin vient se situer avant cet article.
    voili, voilou,

    Arnaud.

    > Compilation du driver propriétaire nVidia avec les sources fou

    Re-bonjour,

    Je n’ai pas testé non plus, mais j’ai 3 remarques sur la forme :

  •  L’utilisation de l’utilisateur admin, ma parait superflu et alourdi la compréhension. Il vaudrait mieux de pas utiliser cet utilisateur et faire en root.
  •  L’utilisateur normal est plus souvent identifié par un "$" et non pas un ">"
  •  Il faudrait mettre un espace entre le "$" ou le "#" et la commande.
    Merci pour cet article très intéressant.