So nVidia 325.08 landed in Debian Experimental a few days ago. So you went and did 'apt-get -t experimental install ...', let the new stuff flow into your system, and finally reboot to seal the deal.
It's just that when you log in again into your fancy KDE on your Optimus laptop, you will find that your desktop looks dull because 3D acceleration is GONE. No GL from your Sandy Bridge/Ivy Bridge/Haswell. No GAMES. NO NADA. This is because the fine folks who package the GLX stuff (including Mesa and propietary drivers) did some changes that are screwing up some systems. Some background:
- Debian has the concept of "GLX providers", handled through the alternatives system (give it a try: update-alternatives --status glx). This way you can switch between propietary and free drivers (which is only of use for certain AMD and nVidia GPUs).
- These alternatives are driven by the glx-alternatives source package, which provides the "diversions" (symlinks) used by the system for Mesa, nVidia and AMD
- Recently nVidia released its propietary blob bundle for ARM systems. I'm not aware of any ARM thing using stock GeForce GPUs as of today, but whatever. This prompted Debian devs to update the glx-alternatives for this change (as Debian also has an ARM distribution). This latest update for now only landed at Experimental... where the propietary nVidia drivers also live.
- When you update your drivers from Experimental, you will get the updated GLX providers package too. Sadly on some systems this will zap the entries for Mesa, which means that your default GLX provider is now nVidia... which is a big WTF because you know, your main GPU is a Intel IGP, not the nVidia discrete GPU, therefore the nVidia libGL.so will refuse to load as it detects that the X server driver is Intel, not nVidia.
- The kernel module was also renamed to nvidia-current for no good reason (but more on that later).
Before you tear your hairs apart, here is how to fix this mamadrama:
- Look at glx-alternative-mesa: http://packages.debian.org/experimental/glx-alternative-mesa
It says that you need to install libgl1-mesa-glx... but that one already exists on your system! You will need to REINSTALL it: apt-get --reinstall install libgl1-mesa-glx. This will recreate the diversions/symlinks that were nuked during the upgrade of glx-alternatives.
- Set Mesa back as your GLX provider: update-alternatives --config glx, then pick "mesa-diverted".
- Logout, then login back. 3D acceleration on your IGP should be back by now.
Now try to primusrun your game... ohwait, this will FAIL at this stage with a "primus: fatal: Bumblebee daemon reported: error: Could not load GPU driver". Now here comes the kernel module bit: for no good reason at all, someone (most likely Debian devs?) decided to rename the module from "nvidia" to "nvidia-current". Bumblebee by default expects that the kernel module is named "nvidia", but since this is no more, it will try to load a non-existing module and fail. This has a easy fix - fire your texteditor of choice and edit /etc/bumblebee/bumblebee.conf:
## Section with nvidia driver specific options, only parsed if Driver=nvidia
# Module name to load, defaults to Driver if empty or unset
See that KernelDriver line? Set it to nvidia-current to match the actual module name, save and restart the Bumblebee daemon (service bumblebeed restart
). Then you're good to go... oh, there is a final hurdle:https://github.com/Bumblebee-Project/Bumblebee/issues/452
As you see there, the first run of optirun/primusrun will load the driver, but for some reason it will fail. Try it again, your game will now run... and noone will turn off the discrete GPU at exit! (you can do it manually, though you will experience the same "refail" stuff. We don't know yet if this is a bug is on nVidia drivers or in Bumblebee (maybe something changed and needs a fix or something).
But hey, you can now play your games again :) Remember: this is Experimental, you get to pick up the pieces once something breaks apart.
But you're wiser than the machine, right?