pour contourner ces erreurs :
AIGLX error: dlopen of /usr/lib/x86_64-linux-gnu/dri/i965_dri.so failed (/usr/lib/x86_64-linux-gnu/dri/i965_dri.so: undefined symbol: _glapi_tls_Dis patch)
AIGLX error: dlopen of /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so failed (/usr/lib/x86_64-linux-gnu/dri/swrast_dri.so: undefined symbol: _glapi_tls
root@ma-jolie-machine:~# ldd /usr/lib/xorg/modules/extensions/libglx.so
linux-vdso.so.1 => (0x00007fffeef94000)
libGL.so.1 => /usr/lib/nvidia-361/libGL.so.1 (0x00007f59712dd000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f59710d9000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5970d0f000)
libGLX.so.0 => /usr/lib/nvidia-361/libGLX.so.0 (0x00007f5970add000)
libGLdispatch.so.0 => /usr/lib/nvidia-361/libGLdispatch.so.0 (0x00007f59707f5000)
/lib64/ld-linux-x86-64.so.2 (0x00005592f4ea8000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f59704ba000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f59702a8000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f5970086000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f596fe81000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f596fc7b000)
root@ma-jolie-machine:/usr/lib# mv /usr/lib/nvidia-361/libGL.so.1 /usr/lib/nvidia-361/libGL.so.1 _ORI
root@ma-jolie-machine:/usr/lib# ln -sf /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 /usr/lib/nvidia-361/libGL.so.1
root@ma-jolie-machine:/usr/lib# ll /usr/lib/nvidia-361/libGL.so.1
lrwxrwxrwx 1 root root 41 sept. 7 16:33 /usr/lib/nvidia-361/libGL.so.1 -> /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
1) sudo apt-get update && sudo apt-get upgrade
2) sudo apt-get dist-upgrade
3) sudo apt-add-repository ppa:graphics-drivers/ppa (Skip this step if you are no t going to use Nvidia-364 or higher in future.)
4) sudo apt-get update && sudo apt-get dist-upgrade
5) sudo apt-get install bumblebee bumblebee-nvidia primus nvidia-settings nvidia-361 (You could use nvidia-364 if you have enabled Graphics Drivers PPA )
Once this is Installed, Below files need to be edited as shown.
1) sudo gedit /etc/modules
add
i915
bbswitch
2) sudo gedit /etc/modprobe.d/bumblebee.conf
Check for this
361
blacklist nvidia-361
blacklist nvidia-361-updates
blacklist nvidia-experimental-361
Workaround to make sure nvidia-uvm is removed as well
remove nvidia rmmod nvidia-uvm nvidia
Ensure that this section shown above exists. If not add it manually.
3) sudo gedit /etc/bumblebee/bumblebee.conf
replace
nvidia-current
with
nvidia-361 (Or whatever version of Driver is latest if using Graphics Drivers PPA)
Also Change
Driver = nvidia on Line Number 22
7) sudo gpasswd -a $USER bumblebee
8) sudo systemctl enable bumblebeed
9) Reboot
10) Install mesa utils if not already installed
sudo apt-get install mesa-utils
Check using
11) primusrun glxinfo | grep OpenGL
You shoud see a result like this.
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce 820M/PCIe/SSE2
OpenGL core profile version string: 4.5.0 NVIDIA 361.42
OpenGL core profile shading language version string: 4.50 NVIDIA
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.5.0 NVIDIA 361.42
OpenGL shading language version string: 4.50 NVIDIA
OpenGL context flags: (none)
OpenGL profile mask: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 361.42
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:
This means all is well and your bumblebee setup is working.
If you would like to see if bumblebee is actually working, try this
lsmod | grep bbswitch
You should see something similar to this
bbswitch 16384 0
The number in second column is Random and will vary.
also
if you run.
cat /proc/acpi/bbswitch
You should see something like this
0000:03:00.0 OFF
This means that your Nvidia Card is OFF by default. Once you run an application using primusrun or optirun commands, while the program you run is running you can see that the OFF change to ON Like below.
primusrun glxgears
this runs the glxgears program using your Nvidia Card via bumblebee.
Open another terminal and run.
cat /proc/acpi/bbswitch
You should see something like
0000:03:00.0 ON
Now Close the application which you launched via bumblebee earlier, in this Case glxgears.
again run
cat /proc/acpi/bbswitch
You should see something like this.
0000:03:00.0 OFF
If all is going like I have mentioned then you can be sure that bumblebee is configured correctly.
Now there are chances that your Nvidia graphics card remains turned ON after primus or optirun exits. This is a known bug and you need to manually unload the Nvidia Module.
Nvidia-Unload Bug
above is a Link to the bug, should you face it.
Now it you face the bug, don't feel bad, bugs are there in all software, I am sure the developers are working to fix the bug.
OK, What is the workaround for this? If you are on another distro, chances are that you might have to compile bumblebee from source and add the lines of code to fix the issue. In Arch the you need to edit the PKGBUILD and add the lines of code as per the bug report and compile bumblebee-git and it would work just fine.
The problem though is that it is not easy. Since you are using Ubuntu, We have another solution called as NVIDIA-PRIME. (No other distribution has this except OpenSuse which partially works and you have to unload the module manually some times even though it should work)
NVIDIA-PRIME.
Below are the Instructions.
Remove everything you installed in the previous steps using
sudo apt remove <packagename>
Reboot your laptop.
Login again and open up a terminal and run the commands.
sudo apt install nvidia-prime nvidia-361 (or nvidia-364 or higher in case you are using Graphics Drivers PPA)
Reboot your Laptop.
You should boot with your complete system using the Nvidia Graphics Card and your Graphics performance will be many times better than bumblebee in some games.
Now You don't want to be using Nvidia Card all the time, So, in the Dash search for Nvidia-Settings. Open Nvidia-Settings and browse to
PRIME PROFILES.
Click PRIME PROFILES. you see two Options, One is NVIDIA (Performance Mode) and is selected and Second is INTEL (Power Saving Mode).
Click on Power Saving Mode enter your password in the Authentication dialog box. The Log out and Log in.
Now you are running only on INTEL GPU. If you want to flip back to NVIDIA GPU you can use the same process again and select NVIDIA and logout and login again.
Only caveat is that you need to logout and login and manually switch Graphics. Once you switch you stay on that card till you manually switch again.
Other than that this is a great solution and my personal favorite and something I am using right now (because of that bug)
Please leave your feedback in the comments section.
Thanks for your time!