Installer les pilotes graphiques propriétaire NVIDIA avec un noyau 2.6.21 de chez Debian
Salut, utilisateur de Debian. Si tu utilises Lenny, que tu as une carte graphique NVIDIA et que tu utilises les pilotes propriétaires de chez NVIDIA, tu t'es ou tu es encore entrain de te taper la tête parce que les pilotes de chez NVIDIA ne veulent pas s'installer. En utilisateur avertit (d'ailleurs ça me fait penser à une blague : Pourquoi un clavier azerty est mieux qu'un clavier qwerty ? Réponse à la fin) tu as bien évidemment consulté les logs d'installation, comme te le disaient le message d'erreur (dans /var/log/nvidia-installer.log pour ceux que ne le savaient pas). Le message est même celui-la :
FATAL: modpost: GPL-incompatible module nvidia.ko uses GPL-only symbol 'paravirt_ops'
Derrière ce message barbare se cache un simple problème de compatibilité avec le noyau. En effet, celui qui a créé les paquets contenant les images du noyau en version 2.6.21 les a compilées en activant la paravirtualisation. De se fait, les pilotes de NVIDIA faisant de la ségrégation à propos de la paravirtualisation, ils refusent de s'accoupler avec le noyau pour donner naissance à un joli module.
Et là, j'en vois déjà certain qui se dise « Oh non ! On va encore recompiler le kernel ... ça suxx ! ». Et oui, on va recompiler le noyau pour palier à ce problème. Ne vous inquiétez surtout pas, ça va se passer sans douleur, sauf pour votre CPU.
On commence par récupérer les sources du noyau directement sur les dépots de Debian :
apt-get install linux-source-2.6.21
Ces sources ne sont pas les sources officielles (vanilla) disponibles sur www.kernel.org. Ces sources sont patchées à la sauce Debian. Une fois ces sources récupérées, on les décompresse et on crée le classique liens vers elles.
cd /usr/scr
tar xjf linux-source-2.6.21.tar.bz2
ln -s linux-source-2.6.21 linux
cd linux
Maintenant on récupère l'ancienne configuration du noyau. Pour ceux qui ont déjà recompilé leur noyau, il leur suffit d'adapter la suite. Pour les autres, i.e. nous, il suffira de faire ce qui suit :
cp /boot/config-`uname -r` .config
Cette opération faite, on va préparer la compilation du noyau avec l'ancienne configuration (en fait, on parle bien de la configuration actuelle du noyau, mais d'ici peu de temps, ce sera l'ancienne configuration, vous me suivez ?), changer cette option qui nous cause tant de problèmes, lancer la compilation, boire un café, installer le nouveau noyau fraîchement compilé et redémarrer (ça serait bête de ne pas profiter de notre nouveau noyau). Et oui, juste ça.
make oldconfig
make menuconfig
Un petit screenshot du framebuffer pour vous aider :

Note : cette option se trouve dans « Processor type and features ».
make-kpkg clean
make-kpkg --initrd --append-to-version=.`date +%y%m%d` kernel_image kernel_headers
C'est le moment de boire son café. La compilation va mettre un certain temps pour s'effectuer. Cela dépend de votre processeur, mais aussi du nombre de paramètres que vous avez activés lors de la configuration du noyau. Une fois finie, il ne reste plus qu'a l'installer et redémarrer.
Note : le --initrd est très important (sinon-ça-marche-pas). C'est indispensable pour générer toutes les actions nécessaires pour le RAM Disk d'initialisation lors de l'installation du paquet. Sans cette option, le système sera incapable de démarrer (le support IDE/SATA/SCSI est, par défaut, compilé sous forme de modules).
cd ..
dpkg -i linux-image-2.6.21.<cette partie dépend de vous>.deb
dkpg -i linux-headers-2.6.21.<cette partie dépend de vous>.deb
Maintenant vous pouvez redémarrer sur votre nouveau noyau fraîchement compilé et installer les pilotes graphiques comme vous le faites d'habitude.