我在笔记本上使用 Ubuntu 12.04(华硕 K53SV、i7-2670QM、英特尔 HD 3000、GeForce 540M)。为了节省能源,我安装了“bumblebee”,这是 Linux 上 Nvidia Optimus 技术的解决方案。
到目前为止,一切都很好。
从那时起,我的电池的寿命就增加了很多。
但是:如果我尝试打开 Wine 等 32 位应用程序,并且该应用程序使用 OpenGL,则无法运行。当我在“wine”命令前输入“optirun”时,它只能在我的 540M 上运行。但是,对于简单的 OpenGL 应用程序,我不需要专用 GPU 的功能。
我使用了官方的 bumblebee 安装指南,因此我安装了像“virtualgl-libs:i386,libgl1-mesa-glx:i386,libc6:i386”这样的软件包。
那么,我该怎么做才能让我的 32 位应用程序上的 OpenGL 加速再次运行?
非常感谢您的帮助! - PhenomZ
顺便说一句:我的系统应该是最新的。我总是安装最新的更新。(我也在使用 Xorg-Edgers PPA)
phenom@notebook:~/Downloads/Test$ wine test.exe
err:module:load_builtin_dll failed to load .so lib for builtin L"OPENGL32.dll": libGL.so.1: Kann die Shared-Object-Datei nicht öffnen: Datei oder Verzeichnis nicht gefunden
err:module:import_dll Loading library OPENGL32.dll (which is needed by L"Z:\\home\\phenom\\Downloads\\Test\\test.exe") failed (error c000007a).
err:module:LdrInitializeThunk Main exe initialization for L"Z:\\home\\phenom\\Downloads\\Test\\test.exe" failed, status c0000135
答案1
我来解释一下发生了什么。在 3.0-2~...ppa1 之前的 Bumblebee 版本中,安装bumblebee
包也会安装包本身bumblebee-nvidia
,而包本身又会安装nvidia-current
。
该nvidia-current
软件包在 64 位系统上安装 64 位和 32 位库。这些 OpenGL 库与 Mesa OpenGL 库(软件包)冲突libgl1-mesa-glx
。(阅读:在主 X 服务器不使用 nvidia 驱动程序的系统(如 Optimus 笔记本电脑)上破坏 OpenGL 功能)
该bumblebee-nvidia
软件包尝试通过将默认 OpenGL 库设置为已安装架构的 Mesa 库来修复此问题。最初,仅libgl1-mesa-glx:amd64
安装。因此,除非libgl1-mesa-glx:i386
之前已安装,否则 OpenGL 在 32 位架构上会损坏。
解决办法是先安装新的安装将自动按照正确的顺序引入驱动程序。libgl1-mesa-glx:i386
,然后安装Bumblebee。virtualgl-libs:i386
可以随时安装,并且在以后的版本中也会像bumblebee-nvidia一样安装。
如果您已经安装了 Bumblebee,只需安装libgl1-mesa-glx:i386
并重新安装即可bumblebee-nvidia
。