Donc, j'ai construit mon élevage à modules. Je donne en argument trois valeurs : la version du noyau pour lequel je veux construire, la version des sources nvidia et la version des sources nvidia-legacy. Je lance mon script, et je finis avec le module NVidia et NVidia-legacy compilé pour les sous-architectures 686, 686-bigmem et k7 (ce sont les différents types de noyau utilisés sur l'ensemble des 80 machines).

J'ai dû récemment modifier mon script pour qu'il tienne compte du bug 419943 (j'aurais pu mentionné plusieurs bugs spécifiquement sur le paquet nvidia-kernel-source, comme 420585). J'en ai profité pour corriger le bug 409204, qui ne nécessitait pas un gros effort.

Je vous livre mon script qui permet de générer le tout. Pour le faire fonctionner, il faut copier les deux scripts prepare et cmdline-nvidia dans un répertoire où il peut être exécuté, installer les paquets nvidia-kernel-source, nvidia-kernel-legacy-source et tous les nvidia-kernel-headers adéquats (par exemple linux-headers-2.6.21-1-686 si on ne veut que du 686) puis invoquer d'abord prepare puis (après avoir mis dans le script les numéros convenables) cmdline-nvidia, puis cmdline-nvidia -legacy. Au bout d'un moment, /var/cache/apt/archives contient les paquets tout chauds.

Si le noyau doit être patché, il suffit de mettre dans /usr/src/nvidia-patches le patch en question. Je vous livre le mien en même temps.

La technique pour faire fonctionner le module même avec paravirt_ops m'a été inspirée par cet article. Il implique de reconstruire linux-kbuild en enlevant les deux lignes suivantes (autour de la ligne 1200) :

if (!mod->gpl_compatible)
check_for_gpl_usage(exp->export, basename, exp->name);

Tous mes paquets recompilés sont disponibles sur le miroir partiel que je gère. N'hésitez pas à recompiler si vous n'avez pas confiance !