LinuxQuestions.org
Review your favorite Linux distribution.
Go Back   LinuxQuestions.org > Blogs > jheengut
User Name
Password

Notices


Rate this Entry

Nvidia 352.41 Playing Bad with GNU/Linux Slackware

Posted 11-15-2015 at 05:59 AM by jheengut
Updated 11-15-2015 at 06:04 AM by jheengut

A Gaming Laptop working well under a GNU/Linux distribution is not a dream anymore. Though some unwanted drivers like the intel management engine that go undetected is a blessing in disguise, most devices already have a driver in the Linux Kernel. Some of them have to be instructed to be loaded while others are proprietary needing some manually intervention and configuration in some rare cases.

I currently posses a MSI GP60 2 PE Leopard Gaming Laptop onto which Slackware was flawlessly installed under UEFI but not secureboot all but msi_laptop and msi_wmi had to manually feeded into modprobe configuration files for proper booting and so that wifi and the keyboard keys are recognized. The only caveat being the Gaming Laptop have two GPUs one integrated Intel Haswell Mobile graphics processors, the second a discrete Nvidia GeForce 840M graphics processors both forming a duo into the Optimus Technology.

This technology is not in the official repositories but I nonetheless used the script crazybee.sh to install the slack packages built by the script itself. It utilizes the latest nvidia proprietary drivers packages under the bumblebee file system structure so that it does not corrupt the xorg DRI drivers. This ensures proper package upgrades. The advantage of utilizing the Optimus Technology using Bumblebee is that the Power Hungry Nvidia GPU is shut down to maximise battery usage.

Unfortunately, I had the crazy idea to directly install the nvidia proprietary driver version 352.41 for testing cuda instead of bumblebee. After removing the driver when all tests were done, OpenGL was refusing to utilised. mplayer was giving the following error

Code:
mplayer
mplayer: error while loading shared libraries: libnvidia-glsi.so.352.41: cannot open shared object file: No such file or directory
The library dependencies of mplayer were

Code:
 ldd -d /usr/bin/mplayer  
        linux-vdso.so.1 (0x00007fff6a6a8000)
        libm.so.6 => /lib64/libm.so.6 (0x00007fe82a9d0000)
        libncurses.so.5 => /lib64/libncurses.so.5 (0x00007fe82a77a000)
        libpng14.so.14 => /usr/lib64/libpng14.so.14 

(0x00007fe821945000)
        libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x00007fe82173c000)
        libnvidia-tls.so.352.41 => not found
        libnvidia-glcore.so.352.41 => not found
        libnvidia-glsi.so.352.41 => not found
        libaudiofile.so.1 => not found
        libXi.so.6 => /usr/lib64/libXi.so.6 (0x00007fe82152b000)
        libXcursor.so.1 => /usr/lib64/libXcursor.so.1 (0x00007fe821321000)
        libharfbuzz.so.0 => /usr/lib64/libharfbuzz.so.0 (0x00007fe82108f000)
        libicule.so.51 => /usr/lib64/libicule.so.51 (0x00007fe820e39000)
        libicuuc.so.51 => /usr/lib64/libicuuc.so.51 (0x00007fe820ac
Removing the specific library files would not solve the problem as the OS was not compiled to utilised a specific version. Some other file was forcing the programs to use this 352.41 driver library files.

Re-installation of all packages did not solve the problem. I also tried to cut down packages so that I have a minimal installation but this did not solve it either.

Using the -u option of ldd gave me the information I needed which in effect printed unused direct dependencies.

Using find to locate all nvidia unprocessed library drivers.

Code:
root@nikita:/var/log/packages# find /usr/ -iname "*352*"
/usr/lib64/libEGL.so.352.41
/usr/lib64/xorg/modules/extensions/libglx.so.352.41
root@nikita:/var/log/packages# ls -lh /usr/lib64/libEGL*  
-rwxr-xr-x 1 root root 1.2K Oct 22  2013 /usr/lib64/libEGL.la*
lrwxrwxrwx 1 root root   15 Nov 11 16:25 /usr/lib64/libEGL.so -> libEGL.so.1.0.0*
lrwxrwxrwx 1 root root   16 Nov 11 16:25 /usr/lib64/libEGL.so.1 -> libEGL.so.352.41*
-rwxr-xr-x 1 root root 115K Oct 22  2013 /usr/lib64/libEGL.so.1.0.0*
-rwxr-xr-x 1 root root 115K Oct 22  2013 /usr/lib64/libEGL.so.1.0.0-xorg*
-rwxr-xr-x 1 root root 914K Nov  9 19:28 /usr/lib64/libEGL.so.352.41*
root@nikita:/var/log/packages# ls -lh /usr/lib64/libGL*
-rwxr-xr-x 1 root root 1.3K Oct 22  2013 /usr/lib64/libGL.la*
-rwxr-xr-x 1 root root 1.3K Oct 22  2013 /usr/lib64/libGL.la-xorg*
lrwxrwxrwx 1 root root   14 Nov 11 16:25 /usr/lib64/libGL.so -> libGL.so.1.2.0*
lrwxrwxrwx 1 root root   15 Nov 11 16:25 /usr/lib64/libGL.so.1 -> libGL.so.352.41*
-rwxr-xr-x 1 root root 500K Oct 22  2013 /usr/lib64/libGL.so.1.2.0*
-rwxr-xr-x 1 root root 500K Oct 22  2013 /usr/lib64/libGL.so.1.2.0-xorg*
-rwxr-xr-x 1 root root 1.2M Nov  9 19:28 /usr/lib64/libGL.so.352.41*
-rw-r--r-- 1 root root 1.1M Mar 17  2013 /usr/lib64/libGLEW.a
lrwxrwxrwx 1 root root   16 Nov 11 16:24 /usr/lib64/libGLEW.so -> libGLEW.so.1.9.0
lrwxrwxrwx 1 root root   16 Nov 11 16:24 /usr/lib64/libGLEW.so.1.9 -> libGLEW.so.1.9.0
-rw-r--r-- 1 root root 516K Mar 17  2013 /usr/lib64/libGLEW.so.1.9.0
-rwxr-xr-x 1 root root 1.3K Feb 21  2013 /usr/lib64/libGLU.la*
lrwxrwxrwx 1 root root   15 Nov 11 16:24 /usr/lib64/libGLU.so -> libGLU.so.1.3.1*
lrwxrwxrwx 1 root root   15 Nov 11 16:24 /usr/lib64/libGLU.so.1 -> libGLU.so.1.3.1*
-rwxr-xr-x 1 root root 505K Feb 21  2013 /usr/lib64/libGLU.so.1.3.1*

root@nikita:/var/log/packages# ls -lh /usr/lib64/xorg/modules/extensions
total 840K
-rwxr-xr-x 1 root root  932 Dec 21  2014 libglx.la*
-rwxr-xr-x 1 root root  932 Dec 21  2014 libglx.la-xorg*
-rwxr-xr-x 1 root root 415K Dec 21  2014 libglx.so*
-rwxr-xr-x 1 root root 415K Dec 21  2014 libglx.so-xorg*
lrwxrwxrwx 1 root root   23 Nov  9 22:35 libglx.so.352.41 -> libglx.so.352.41-nvidia
I then removed the unwanted files and restore the system to a proper state.

Code:
root@nikita:/var/log/packages# rm  /usr/lib64/libEGL.so.352.41* /usr/lib64/libGL.so.352.41* /usr/lib64/xorg/modules/extensions/libglx.so.352.41
This is the state after cleanup.
Code:
root@nikita:/var/log/packages# ls -lh /usr/lib64/libEGL*
-rwxr-xr-x 1 root root 1.2K Oct 22  2013 /usr/lib64/libEGL.la*
lrwxrwxrwx 1 root root   15 Nov 12 10:29 /usr/lib64/libEGL.so -> libEGL.so.1.0.0*
lrwxrwxrwx 1 root root   15 Nov 12 10:29 /usr/lib64/libEGL.so.1 -> libEGL.so.1.0.0*
-rwxr-xr-x 1 root root 115K Oct 22  2013 /usr/lib64/libEGL.so.1.0.0*
-rwxr-xr-x 1 root root 115K Oct 22  2013 /usr/lib64/libEGL.so.1.0.0-xorg*

root@nikita:/var/log/packages# ls -lh /usr/lib64/libGL*
-rwxr-xr-x 1 root root 1.3K Oct 22  2013 /usr/lib64/libGL.la*
-rwxr-xr-x 1 root root 1.3K Oct 22  2013 /usr/lib64/libGL.la-xorg*
lrwxrwxrwx 1 root root   14 Nov 12 10:29 /usr/lib64/libGL.so -> libGL.so.1.2.0*
lrwxrwxrwx 1 root root   14 Nov 12 10:29 /usr/lib64/libGL.so.1 -> libGL.so.1.2.0*
-rwxr-xr-x 1 root root 500K Oct 22  2013 /usr/lib64/libGL.so.1.2.0*
-rwxr-xr-x 1 root root 500K Oct 22  2013 /usr/lib64/libGL.so.1.2.0-xorg*
-rw-r--r-- 1 root root 1.1M Mar 17  2013 /usr/lib64/libGLEW.a
lrwxrwxrwx 1 root root   16 Nov 11 16:24 /usr/lib64/libGLEW.so -> libGLEW.so.1.9.0
lrwxrwxrwx 1 root root   16 Nov 11 16:24 /usr/lib64/libGLEW.so.1.9 -> libGLEW.so.1.9.0
-rw-r--r-- 1 root root 516K Mar 17  2013 /usr/lib64/libGLEW.so.1.9.0
-rwxr-xr-x 1 root root 1.3K Feb 21  2013 /usr/lib64/libGLU.la*
lrwxrwxrwx 1 root root   15 Nov 11 16:24 /usr/lib64/libGLU.so -> libGLU.so.1.3.1*
lrwxrwxrwx 1 root root   15 Nov 11 16:24 /usr/lib64/libGLU.so.1 -> libGLU.so.1.3.1*
-rwxr-xr-x 1 root root 505K Feb 21  2013 /usr/lib64/libGLU.so.1.3.1*

root@nikita:/var/log/packages# ls -lh /usr/lib64/libGL*
-rwxr-xr-x 1 root root 1.3K Oct 22  2013 /usr/lib64/libGL.la*
-rwxr-xr-x 1 root root 1.3K Oct 22  2013 /usr/lib64/libGL.la-xorg*
lrwxrwxrwx 1 root root   14 Nov 11 16:25 /usr/lib64/libGL.so -> libGL.so.1.2.0*
lrwxrwxrwx 1 root root   19 Nov 12 09:32 /usr/lib64/libGL.so.1 -> libGL.so.1.2.0-xorg*
-rwxr-xr-x 1 root root 500K Oct 22  2013 /usr/lib64/libGL.so.1.2.0*
-rwxr-xr-x 1 root root 500K Oct 22  2013 /usr/lib64/libGL.so.1.2.0-xorg*
-rw-r--r-- 1 root root 1.1M Mar 17  2013 /usr/lib64/libGLEW.a
lrwxrwxrwx 1 root root   16 Nov 11 16:24 /usr/lib64/libGLEW.so -> libGLEW.so.1.9.0
lrwxrwxrwx 1 root root   16 Nov 11 16:24 /usr/lib64/libGLEW.so.1.9 -> libGLEW.so.1.9.0
-rw-r--r-- 1 root root 516K Mar 17  2013 /usr/lib64/libGLEW.so.1.9.0
-rwxr-xr-x 1 root root 1.3K Feb 21  2013 /usr/lib64/libGLU.la*
lrwxrwxrwx 1 root root   15 Nov 11 16:24 /usr/lib64/libGLU.so -> libGLU.so.1.3.1*
lrwxrwxrwx 1 root root   15 Nov 11 16:24 /usr/lib64/libGLU.so.1 -> libGLU.so.1.3.1*
-rwxr-xr-x 1 root root 505K Feb 21  2013 /usr/lib64/libGLU.so.1.3.1*

root@nikita:/var/log/packages# ls -lh /usr/lib64/xorg/modules/extensions
total 840K
-rwxr-xr-x 1 root root  932 Dec 21  2014 libglx.la*
-rwxr-xr-x 1 root root  932 Dec 21  2014 libglx.la-xorg*
-rwxr-xr-x 1 root root 415K Dec 21  2014 libglx.so*
-rwxr-xr-x 1 root root 415K Dec 21  2014 libglx.so-xorg*
Since the system was in a minimal state, the remaining packages were reinstalled. If slackpkg have all packages in cache this would do the job.

Code:
slackpkg install-new
Else use the fastest way of installation of packages. Take care that mesa is reinstalled so that it recreate the proper links.

PS: I have been able to understand why removepkg did not remove the necessary file since the files are registered as

Code:
grep libGL.so.352.41 /var/log/removed_packages/*
/var/log/removed_packages/nvidia-driver-352.41-x86_64-1_SBo:usr/lib64/libGL.so.352.41-nvidia
instead of
Code:
-rwxr-xr-x 1 root root 1.2M Nov  9 19:28 /usr/lib64/libGL.so.352.41*
nvidia-35241-playing-bad-with-gnulinux.html
Posted in Slackware, Linux, Unix
Views 2321 Comments 2
« Prev     Main     Next »
Total Comments 2

Comments

  1. Old Comment
    Are tou using atual slackware from -current repository?
    Posted 11-28-2015 at 01:59 PM by abstradelic abstradelic is offline
  2. Old Comment
    Quote:
    Originally Posted by abstradelic View Comment
    Are you using actual slackware from -current repository?
    My laptop is using 14.1 but it does not matter as even on -current, you will obtain similar results.

    I found many similar libs still lying in /usr/lib64.

    I will study those files later
    Posted 12-01-2015 at 04:23 AM by jheengut jheengut is offline
 

  



All times are GMT -5. The time now is 07:57 PM.

Main Menu
Advertisement
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration