我有一台 Optimus 笔记本电脑,所以既有英特尔显卡,也有 NVIDIA 显卡。多年来,它一直使用 Bumblebee 运行良好(运行 12.04)。是的,我知道现在有更好的选择,但它运行良好。
问题是,出于各种原因,我需要 CUDA 6 工具包,这意味着需要外部安装。不出所料,它压垮了我的 GLX 库。
目前,nvidia 硬件运行良好,但 Intel 硬件(即:0 上的 xserver)无法成功加载 GLX。我大胆猜测,这可能与包含以下内容的 intel xorg 初始化日志有关:
[ 77.269] (II) LoadModule: "glx"
[ 77.269] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[ 77.277] (II) Module glx: vendor="NVIDIA Corporation"
[ 77.277] compiled for 4.0.2, module version = 1.0.0
[ 77.277] Module class: X.Org Server Extension
#...
[ 77.469] (EE) Failed to initialize GLX extension (Compatible NVIDIA X driver not found)
dpkg -S
同意/usr/lib/xorg/modules/extensions/libglx.so
“属于” xserver-xorg-core
,所以我有理由相信强制重新安装该软件包会使 libglx.so 恢复为“正确”版本。唯一的问题是这会破坏 nvidia 方面。
英特尔不使用xorg.conf
,Nvidia 通过 bumblebee 使用。
有什么方法可以让这两个驱动程序和平共处吗?
答案1
您可以尝试/usr/lib/xorg/modules/extensions/libglx.so
从xserver-xorg-核心。我在类似情况下就是这么做的。方法如下:
首先确认它确实已经被 nvidia 安装替换:
debsums xserver-xorg-core | grep libglx.so
如果显示
FAILED
,则表示它实际上已被替换,您可以尝试恢复原件。要恢复原始版本,首先找到已安装软件包的 .deb 文件名:
apt-cache show xserver-xorg-core | grep Filename: | head -1
它应该显示如下内容:
Filename: pool/main/x/xorg-server/xserver-xorg-core_1.7.6-2ubuntu7.12_i386.deb ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
找到可以下载该文件的位置,然后下载。(通常,在 Google 上搜索文件名(
^^^^^^
下面标有)就足够了。)将其保存在 上/tmp
。从包中提取所需的文件:
cd /tmp dpkg --fsys-tarfile xserver-xorg-core_1.7.6-2ubuntu7.12_i386.deb | tar xvf - ./usr/lib/xorg/modules/extensions/libglx.so
重命名您要替换的文件(以防您以后需要它):
mv /usr/lib/xorg/modules/extensions/libglx.so /usr/lib/xorg/modules/extensions/libglx.so.orig-20140914
将原始文件复制到正确的位置:
mv ./usr/lib/xorg/modules/extensions/libglx.so /usr/lib/xorg/modules/extensions/libglx.so
重新启动你的X(从我的图形会话中注销并重新登录就足够了)。
运行
glxgears
(或您喜欢的 GLX 程序)以确认现在一切正常。
以上内容已经在我的旧版 Ubuntu 10.04 桌面(对我来说没有 Unity)上进行了测试并可以运行,如果您按照指示的步骤找出 .deb 包名称(与我的不同),那么它应该也可以在您的 12.04 安装上运行。