En raison d'une restriction implémentée dans le noyau depuis sa version 4.2, il est normalement impossible de pouvoir compiler tel que cela se faisait, les drivers propriétaires de nvidia, mais un hack existe, consistant à faire passer le module Nvidia pour un module sous licence GPL.
Tout d'abord il faut télécharger la version 352.41 des pilotes Linux sur le site de Nvidia.
Rendre exécutable et extraire le driver
chmod +x NVIDIA-Linux-x86_64-352.41.run
./NVIDIA-Linux-x86_64-352.41.run --extract-only
Puis se rendre dans le dossier extrait avec la commande
cd NVIDIA-Linux-x86_64-352.41
Créer le fichier de patch :
nano nvidia-4.2.patch
et coller et enregistrez :
diff --git a/kernel/nv-frontend.c b/kernel/nv-frontend.c index 65bbb1b..be39c8d 100644 --- a/kernel/nv-frontend.c +++ b/kernel/nv-frontend.c @@ -15,7 +15,7 @@ #include "nv-frontend.h" #if defined(MODULE_LICENSE) -MODULE_LICENSE("NVIDIA"); +MODULE_LICENSE("GPL\0NVIDIA"); #endif #if defined(MODULE_INFO) MODULE_INFO(supported, "external"); diff --git a/kernel/nv.c b/kernel/nv.c index abe81ed..05945b5 100644 --- a/kernel/nv.c +++ b/kernel/nv.c @@ -31,7 +31,7 @@ #if defined(NV_VMWARE) || (NV_BUILD_MODULE_INSTANCES != 0) #if defined(MODULE_LICENSE) -MODULE_LICENSE("NVIDIA"); +MODULE_LICENSE("GPL\0NVIDIA"); #endif #if defined(MODULE_INFO) MODULE_INFO(supported, "external");
Pour appliquer le patch, lancez la commande :
patch -Np1 -i nvidia-4.2.patch
Enfin, compiler le driver Nvidia nécessite gcc et g++ 4.8, pour les installer :
sudo apt-get install gcc-4.8 g++-4.8
Puis on configure l'OS pour que cette version soit utilisée par défaut.
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 1 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 1
Tuer X si celui-ci est démarré
sudo service lightdm stop
Et enfin, on peut lancer l'installateur Nvidia, qui devrait pouvoir compiler correctement le module avec DKMS, pour le noyau Linux 4.2 et ultérieurs.
sudo ./nvidia-installer