Leap 15.2: NVIDIA Bumblebee: Library Errors

Hey y’all. I’ve been using Linux for a few years, yet this is probably a noobish question.

I have been attempting to get bumblebee to work with NVIDIA’s proprietary drivers as described here. Bumblebee itself seems to be installed correctly

> optirun --status
Bumblebee status: Ready (3.2.1). X inactive. Discrete video card is off.

However, upon trying to run anything of note, various library errors occur

> optirun glxgears -info
glxgears: symbol lookup error: /usr/X11R6/lib64/libGL.so.1: undefined symbol: __GLXGL_CORE_FUNCTIONS

> optirun steam
Running Steam on opensuse-leap 15.2 64-bit
STEAM_RUNTIME is enabled automatically
Pins up-to-date!
Steam client's requirements are satisfied
/home/NAME/.local/share/Steam/ubuntu12_32/steam
[2021-01-01 18:38:34] Startup - updater built Dec 20 2020 23:07:02
Installing breakpad exception handler for appid(steam)/version(1608507519)
[VGL] ERROR: Could not load GLX/OpenGL functions
[VGL]    /usr/lib/libvglfaker.so: undefined symbol: glXGetProcAddressARB

During the setup of Bumblebee, I did need to modify a few library links in /usr/X11R6/lib and /usr/X11R6/lib64, as the ones provided by the wiki were not accurate. They are as follows:


NitroAN5:/usr/X11R6/lib # ll
total 104
lrwxrwxrwx 1 root root 27 Jan  1 15:25 libEGL_nvidia.so.0 -> /usr/lib/libEGL_nvidia.so.0
lrwxrwxrwx 1 root root 19 Jan  1 16:26 libGL.so -> /usr/lib/libGL.so.1
lrwxrwxrwx 1 root root 19 Jan  1 16:26 libGL.so.1 -> /usr/lib/libGL.so.1
lrwxrwxrwx 1 root root 19 Jan  1 16:27 libGL.so.1.0.0 -> /usr/lib/libGL.so.1
lrwxrwxrwx 1 root root 33 Jan  1 15:25 libGLESv1_CM.so -> /usr/lib/libGLESv1_CM_nvidia.so.1
lrwxrwxrwx 1 root root 33 Jan  1 15:25 libGLESv1_CM.so.1 -> /usr/lib/libGLESv1_CM_nvidia.so.1
lrwxrwxrwx 1 root root 33 Jan  1 15:25 libGLESv1_CM_nvidia.so.1 -> /usr/lib/libGLESv1_CM_nvidia.so.1
lrwxrwxrwx 1 root root 30 Jan  1 15:25 libGLESv2.so -> /usr/lib/libGLESv2_nvidia.so.2
lrwxrwxrwx 1 root root 30 Jan  1 15:25 libGLESv2.so.2 -> /usr/lib/libGLESv2_nvidia.so.2
lrwxrwxrwx 1 root root 30 Jan  1 15:25 libGLESv2_nvidia.so.2 -> /usr/lib/libGLESv2_nvidia.so.2
lrwxrwxrwx 1 root root 15 Jan  1 15:25 libGLX.so -> libGLX.so.0.0.0
lrwxrwxrwx 1 root root 15 Jan  1 15:25 libGLX.so.0 -> libGLX.so.0.0.0
lrwxrwxrwx 1 root root 27 Jan  1 15:25 libGLX.so.0.0.0 -> /usr/lib/libGLX_nvidia.so.0
lrwxrwxrwx 1 root root 27 Jan  1 15:25 libGLX_nvidia.so.0 -> /usr/lib/libGLX_nvidia.so.0
lrwxrwxrwx 1 root root 27 Jan  1 15:25 libnvidia-cfg.so.1 -> /usr/lib/libnvidia-cfg.so.1 (broken)
lrwxrwxrwx 1 root root 35 Jan  1 15:25 libnvidia-egl-wayland.so.1 -> /usr/lib/libnvidia-egl-wayland.so.1 (broken)
lrwxrwxrwx 1 root root 30 Jan  1 15:25 libnvidia-encode.so.1 -> /usr/lib/libnvidia-encode.so.1 (broken)
lrwxrwxrwx 1 root root 27 Jan  1 15:25 libnvidia-fbc.so.1 -> /usr/lib/libnvidia-fbc.so.1 (broken)
lrwxrwxrwx 1 root root 27 Jan  1 15:25 libnvidia-ifr.so.1 -> /usr/lib/libnvidia-ifr.so.1
lrwxrwxrwx 1 root root 26 Jan  1 16:28 libnvidia-ml.so -> /usr/lib/libnvidia-ml.so.1
lrwxrwxrwx 1 root root 26 Jan  1 15:25 libnvidia-ml.so.1 -> /usr/lib/libnvidia-ml.so.1
lrwxrwxrwx 1 root root 30 Jan  1 15:25 libnvidia-opencl.so.1 -> /usr/lib/libnvidia-opencl.so.1
lrwxrwxrwx 1 root root 38 Jan  1 15:25 libnvidia-ptxjitcompiler.so.1 -> /usr/lib/libnvidia-ptxjitcompiler.so.1
lrwxrwxrwx 1 root root 32 Jan  1 16:40 libnvidia-tls.so.460.27.04 -> /usr/lib/libnvidia-tls.so.440.82
lrwxrwxrwx 1 root root 27 Jan  1 15:25 libnvidia-wfb.so.1 -> /usr/lib/libnvidia-wfb.so.1  (broken)
lrwxrwxrwx 1 root root 27 Jan  1 15:25 libvdpau_nvidia.so -> /usr/lib/libvdpau_nvidia.so  (broken)

NitroAN5:/usr/X11R6/lib64 # ll
total 104
lrwxrwxrwx 1 root root 29 Jan  1 15:24 libEGL_nvidia.so.0 -> /usr/lib64/libEGL_nvidia.so.0
lrwxrwxrwx 1 root root 21 Jan  1 16:22 libGL.so -> /usr/lib64/libGL.so.1
lrwxrwxrwx 1 root root 21 Jan  1 16:22 libGL.so.1 -> /usr/lib64/libGL.so.1
lrwxrwxrwx 1 root root 21 Jan  1 16:22 libGL.so.1.0.0 -> /usr/lib64/libGL.so.1
lrwxrwxrwx 1 root root 35 Jan  1 15:24 libGLESv1_CM.so -> /usr/lib64/libGLESv1_CM_nvidia.so.1
lrwxrwxrwx 1 root root 35 Jan  1 15:24 libGLESv1_CM.so.1 -> /usr/lib64/libGLESv1_CM_nvidia.so.1
lrwxrwxrwx 1 root root 35 Jan  1 15:24 libGLESv1_CM_nvidia.so.1 -> /usr/lib64/libGLESv1_CM_nvidia.so.1
lrwxrwxrwx 1 root root 32 Jan  1 15:24 libGLESv2.so -> /usr/lib64/libGLESv2_nvidia.so.2
lrwxrwxrwx 1 root root 32 Jan  1 15:24 libGLESv2.so.2 -> /usr/lib64/libGLESv2_nvidia.so.2
lrwxrwxrwx 1 root root 32 Jan  1 15:24 libGLESv2_nvidia.so.2 -> /usr/lib64/libGLESv2_nvidia.so.2
lrwxrwxrwx 1 root root 15 Jan  1 15:24 libGLX.so -> libGLX.so.0.0.0
lrwxrwxrwx 1 root root 15 Jan  1 15:24 libGLX.so.0 -> libGLX.so.0.0.0
lrwxrwxrwx 1 root root 29 Jan  1 15:24 libGLX.so.0.0.0 -> /usr/lib64/libGLX_nvidia.so.0
lrwxrwxrwx 1 root root 29 Jan  1 15:24 libGLX_nvidia.so.0 -> /usr/lib64/libGLX_nvidia.so.0
lrwxrwxrwx 1 root root 29 Jan  1 15:24 libnvidia-cfg.so.1 -> /usr/lib64/libnvidia-cfg.so.1
lrwxrwxrwx 1 root root 37 Jan  1 15:24 libnvidia-egl-wayland.so.1 -> /usr/lib64/libnvidia-egl-wayland.so.1
lrwxrwxrwx 1 root root 32 Jan  1 15:24 libnvidia-encode.so.1 -> /usr/lib64/libnvidia-encode.so.1   (broken)
lrwxrwxrwx 1 root root 29 Jan  1 15:24 libnvidia-fbc.so.1 -> /usr/lib64/libnvidia-fbc.so.1
lrwxrwxrwx 1 root root 29 Jan  1 15:24 libnvidia-ifr.so.1 -> /usr/lib64/libnvidia-ifr.so.1
lrwxrwxrwx 1 root root 26 Jan  1 15:24 libnvidia-ml.so -> /usr/lib64/libnvidia-ml.so
lrwxrwxrwx 1 root root 28 Jan  1 15:24 libnvidia-ml.so.1 -> /usr/lib64/libnvidia-ml.so.1
lrwxrwxrwx 1 root root 32 Jan  1 15:24 libnvidia-opencl.so.1 -> /usr/lib64/libnvidia-opencl.so.1
lrwxrwxrwx 1 root root 40 Jan  1 15:24 libnvidia-ptxjitcompiler.so.1 -> /usr/lib64/libnvidia-ptxjitcompiler.so.1
lrwxrwxrwx 1 root root 34 Jan  1 16:40 libnvidia-tls.so.460.27.04 -> /usr/lib64/libnvidia-tls.so.440.82
lrwxrwxrwx 1 root root 29 Jan  1 15:24 libnvidia-wfb.so.1 -> /usr/lib64/libnvidia-wfb.so.1   (broken)
lrwxrwxrwx 1 root root 29 Jan  1 15:24 libvdpau_nvidia.so -> /usr/lib64/libvdpau_nvidia.so   (broken)


One thing I will point out is that I needed to link libnvidia-tls.so to an older version of itself, since I could not find a (compatible) package that had the newer version. That isn’t the library cited, so I’m not certain if that’s the issue (I hope).

In any case,** is there something wrong with the libraries in question, or is there something else that I’m missing?**
If there’s anything else needed to answer this question, please let me know. Thank you very much in advance.

Hi and welcome to the Forum :slight_smile:
There are a few threads about this issue with libvglfaker

  1. https://forums.opensuse.org/showthread.php/537906-Cuda-Nvidia-bumblebee-codecs-quot-safe-quot-way
  2. https://forums.opensuse.org/showthread.php/548118-nVidia-Cuda-Bumblebee-Codecs-quot-Recipe-quot-not-working-on-openSUSE-15-2
  3. https://forums.opensuse.org/showthread.php/548214-compiling-shared-library-with-already-built-library-(libvglfaker-so)

Just FYI for the OP, we do not have a long term solution yet. Right now, you should downgrade the VirtualGL and VirtualGL-32bit from LEAP 15.1 repository. Copy and backup the 15.1 version of libvglfaker.so, re-upgrade to LEAP 15.2 repsitory and upgrade both VGL versions and replace the libvglfaker.so with respective versions from LEAP 15.1

I hope to let you know a more appropriate long term solution as soon as possible but it may take a while.

This is independent of the issues with VGL and libvglfaker.so, your library has been configured wrong for your bumblebee.

Get rid of these links in /usr/X11R6/lib and /usr/X11R6/lib64 since they are not applicable for LEAP. Who ever wrote SDB:NVIDIA Bumblebee - openSUSE Wiki wrote it for SLE since /usr/X11… is not something that LEAP uses architecturely and instead reconfigure your /etc/bumblebee/bumblebee.conf as follows:

Change the following lines under [driver-nvidia]:


LibraryPath=/usr/lib64/:/usr/lib/
XorgModulePath=/usr/lib64/nvidia/xorg/,/usr/lib64/xorg/modules
XorgConfFile=/etc/bumblebee/xorg.conf.nvidia

I recommend you trying to follow relevant parts in https://forums.opensuse.org/showthread.php/537906-Cuda-Nvidia-bumblebee-codecs-quot-safe-quot-way

Thank you both for your expedient responses, and I apologise that mine isn’t quite as such.

I ended up restoring a snapshot back to a clean install of OpenSUSE, and then reinstalling the drivers using the NVIDIA-CUDA guide. Then, I followed SJLPHI’s instructions to get Steam working. The games were able to run upon applying the work arounds as described both here and here.

There was only one game that didn’t work, but that was due to an outdated GLibC version. I can wait until the repos update before faffing about with that.

Everything seems to be working, so I can close this thread. Again, thank you both so much.

https://bugzilla.opensuse.org/show_bug.cgi?id=1163301

I can workaround it via downloading glibc eg. from Tumbleweed and put “LD_PRELOAD=/home/games/lib64/libm.so.6 %command%”