Driver NVIDIA avec un kernel > 2.6.20Après avoir apssé l'àprès midi à essayer de compiler un module NVIDIA pour le kernel 2.6.21, j'ai pensé qu'il serait de bon gout d'expliquer la façon de procéder. ce n'est certainement pas la meilleure méthoden que je vais détailler ici, mais elle à le mérite de foctionner, et puis c'est la seule que j'ai trouvé. J'ai trouvé pas mal d'infos ici: http://www.everlong.org/blog/index.php/2007/05/13/307-le-module-binaire-nvidia-avec-les-noyaux-linux-recents NOTE: avec cette procédure, je n'arrive pas a faire fonctionner le driver xorg GLX Versions validesCette procédure est valide avec ces versions de softs. Elle fonctionne très certainement avec d'autres versions, mais ce n'est pas testé.
Supprimer l'erreur "GPL-incompatible..."
Si vous êtes arrivés ici, c'est surrement grace à ce merveilleux message d'erreur: Il faut télécharger les sources correspondantes aux kernel ici: www.kernel.org. Vous pouvez trouver votre version de kernel avec la commande uname -a. Puis, il faut recupérer le driver NVIDIA ici: /www.nvidia.com. Décompressez les sources du kernel dans /usr/src/, un repertoire linux-2.6.21.7 ou equivalent sera créé. Creez un lien symbolique dans /lib/modules/2.6.21-2-686 ou equivalent qui pointe sur les sources ainsi decompressées: ln -sf /usr/src/linux-2.6.21.7 build L'installateur nvidia trouvera ainsi les header necessaires à sa compilation. Nous allons maintenant guérir les sources du kernel afin de supprimer le message d'erreur. Il faut donc aller dans le répertoire /usr/src/linux-2.6.21.7/scripts/mod/ et effacer le fichier modpost. Il faut editer le fichier modpost.c, recherche les lignes:
if (!mod->gpl_compatible)
check_for_gpl_usage(exp->export, basename, exp->name);
et les commenter de la maniere suivante: // if (!mod->gpl_compatible) // check_for_gpl_usage(exp->export, basename, exp->name); Il faut maintenant recompiler le binaire modpost en allant dans le repertoire /usr/src/linux-2.6.21.7/ et en lançant la commande make. lorsque la ligne HOSTLD scripts/mod/modpost s'affiche, vous pouvvez interropre la compilation à l'aide d'un "CTRL+C" athlon64:/usr/src/linux-2.6.21.7# make CHK include/linux/version.h CHK include/linux/utsrelease.h HOSTLD scripts/mod/modpost CHK include/linux/compile.h make[1]: *** [fs/affs] Interruption make: *** [fs] Interruption Compiler le driver NVIDIACopier le driver NVIDIA dans /usr/src, et executez ./NVIDIA-Linux-x86-100.14.19-pkg1.run -x afin d'extraire les sources du driver. un répertoire NVIDIA-Linux-x86-100.14.19-pkg1 est ainsi créé. Allez dans le répertoire /usr/src/NVIDIA-Linux-x86-100.14.19-pkg1/usr/src/nv, lancer la commande make, effacez ensuite le fichier makefile de la maniere suivante: rm makefile, et relancez la commande make. Après quelques dizaines de secondes, la compilation devrait se terminer avec une belle erreur. Quoi qu'il en soit, il faut recompiler le module a la main. Il faut effacer le module compilé rm rm nvidia.ko, trouver le mappage en mémoire de la fonction paravirt_ops de la manière suivante: PARAVIRT_OPS=$(grep "D paravirt_ops" /boot/System.map-`uname -r` | colrm 9), et relinker le module de cette manière ld -m elf_i386 --defsym paravirt_ops=0x${PARAVIRT_OPS} -r -o nvidia.ko nvidia.o nvidia.mod.o Installer tout ce petit mondeTout d'abord installer et tester le module compilé: cp nvidia.ko /lib/modules/2.6.21-2-686/kernel/drivers/video/nvidia.ko, puis modprobe nvidia pour tester le bon fonctionnement. Il faut ensuite installer les libs NVIDIA qui sont fournies avec le kernel et qui n'on pas étés installés a cause de l'erreur de compilation. Tout se passe dans le répertoire /usr/src/NVIDIA-Linux-x86-100.14.19-pkg1/usr/, il faut effectuer quelques copies: cp -rav include /usr/, cp -rav share /usr/, cp -rav lib /usr/ et cp -rav X11R6 /usr/. finVoila, c'est fini, après avoir redemarré X, tout devrait fonctionner. |