我有一台华硕 UL30JT。它采用了 Nvidia Optimus 技术,但我对此并不感兴趣。目前我很少在连接电源的情况下使用这台笔记本电脑。我希望能够播放高分辨率视频、玩游戏和进行一些 OpenCL 编码。
在 BIOS 中我将其切换为仅 NVIDIA(非 Windows 7)。以前,使用 nvidia 驱动程序,这可以正常工作。
升级后一切都崩溃了。我已将 nomodeset 和 blacklist.nouveau=1 添加为内核选项。nvidia 驱动程序安装没有错误。但是找不到/使用它们。
jockey-text -l
kmod:nvidia_310_updates - nvidia_310_updates (Proprietary, Enabled, Not in use)
kmod:nvidia_304_updates - NVIDIA binary Xorg driver, kernel module and VDPAU library (Proprietary, Disabled, Not in use)
kmod:nvidia_313_updates - NVIDIA binary Xorg driver, kernel module and VDPAU library (Proprietary, Disabled, Not in use)
kmod:nvidia_310 - NVIDIA binary Xorg driver, kernel module and VDPAU library (Proprietary, Disabled, Not in use)
kmod:nvidia_304 - NVIDIA binary Xorg driver, kernel module and VDPAU library (Proprietary, Disabled, Not in use)
尝试手动加载模块也会失败。
sudo modprobe nvidia
FATAL: Module nvidia not found.
Xorg.0.log 显示以下内容:
[ 12.028] Loading extension GLX
[ 12.028] (II) LoadModule: "nvidia"
[ 12.037] (WW) Warning, couldn't open module nvidia
[ 12.037] (II) UnloadModule: "nvidia"
[ 12.037] (II) Unloading nvidia
[ 12.037] (EE) Failed to load module "nvidia" (module does not exist, 0)
[ 12.037] (==) Matched nvidia as autoconfigured driver 0
[ 12.037] (==) Matched nouveau as autoconfigured driver 1
[ 12.037] (==) Matched vesa as autoconfigured driver 2
[ 12.037] (==) Matched modesetting as autoconfigured driver 3
[ 12.038] (==) Matched fbdev as autoconfigured driver 4
[ 12.038] (==) Assigned the driver to the xf86ConfigLayout
[ 12.038] (II) LoadModule: "nvidia"
[ 12.038] (WW) Warning, couldn't open module nvidia
[ 12.038] (II) UnloadModule: "nvidia"
[ 12.038] (II) Unloading nvidia
[ 12.038] (EE) Failed to load module "nvidia" (module does not exist, 0)
[ 12.038] (II) LoadModule: "nouveau"
[ 12.039] (WW) Warning, couldn't open module nouveau
我已经安装了正确内核的内核头文件。我验证了内核选项在 grub 配置中。我已清除所有 nvidia 软件包并尝试重新安装(多次...)
目前我很茫然。我检查了以下问题: Nvidia 驱动程序安装错误 但那里对我没什么作用。
答案1
好的,我发现了。
我做了完整的apt-get purge nvidia*
等apt-get dist-upgrade
操作。但修复这个问题的方法实际上是将替代方案设置正确。我想这从一开始就有效。所以方法如下:
$ sudo update-alternatives --config x86_64-linux-gnu_gl_conf
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/nvidia-310/ld.so.conf 9702 auto mode
1 /usr/lib/nvidia-310/ld.so.conf 9702 manual mode
* 2 /usr/lib/x86_64-linux-gnu/mesa/ld.so.conf 500 manual mode
如您所见,对于我来说,此设置是错误的。所以我改用了0
,结果发现 PATH 中有很多 nvidia- 实用程序。
如果您使用的不是 64 位,那么请使用 i386 而不是 x86_64。
答案2
安装最新的 nvidia 驱动程序
sudo apt-get install nvidia-313-updates
/etc/X11/xorg.conf
通过执行生成
sudo nvidia-xconfig
然后执行
sudo software-properties-gtk
它将向你显示一个像这样的窗口
从列表中选择最新的驱动程序,然后执行
sudo reboot
答案3
对于那些在 Google 黑暗中拍摄时最终进入此线程的人来说,这是因为已加载 nvidia 驱动程序,但 X 中的所有图形都通过 CPU 而不是 GPU。
症状
- nvidia 驱动程序已正确加载 (
lsmod | grep nvidia
) - 在 X 下,
nvidia-settings
报告称访问我的 GTX 680 GPU 没有问题
但
- 任何图形密集型程序都会驱动CPU 负载异常高,而不是预期的负载GPU。例如,游戏即使在动画主菜单下也会卡顿
glxgears
(从mesa-utils
软件包中)会使 CPU 负载高达 10%,unigine
负载测试会显示 FPS 约为 2 并在第一个场景上锁定。
误导因素是它nvidia-settings
没有报告任何访问 GPU 的问题。我按照大多数线程的建议做了(清除并重新安装 nvidia 驱动程序),但没有任何效果。在绝望中,我终于检查了一下Xorg.0.log
:/var/log
原来 X 正在加载它自己的libglx.so
模块,而不是 nvidia 的模块。现在我问了正确的问题,我得到了正确的答案(Xorg 加载错误的 libglx.so)。
解决方案
最初Files
我的部分/etc/X11/xorg.conf
是空的:
Section "Files"
EndSection
我找到了 nvidia 保存其自身模块的位置libglx.so
(更准确地说,我找到了它保存符号链接的位置)。解决方案是告诉 X 首先在 nvidia 的路径中查找模块,然后在 Xorg 的路径中查找,因此该Files
部分现在如下所示:
Section "Files"
ModulePath "/usr/lib/nvidia"
ModulePath "/usr/lib/xorg/modules"
EndSection
我使用的是 Debian,但由于 Ubuntu 基于 Debian,因此类似的方法应该适用于 Ubuntu 系统。
答案4
我也遇到了更新后找不到 nvidia 模块的问题。只是黑屏 - 根本没有图形。我尝试了不同的命令,所以也许我错过了一些重要的操作,但我提供了该序列,它很有帮助:
启动 Ubuntu 恢复,root shell
mount -o remount,rw /
mountall
<log in as user>
sudo apt-get remove nvidia-340 nvidia-340-updates
然后重启电脑。我已经安装了 nvidia-331 &Co。