![无法再从 Intel GPU 切换到 NVIDIA GPU](https://linux22.com/image/852743/%E6%97%A0%E6%B3%95%E5%86%8D%E4%BB%8E%20Intel%20GPU%20%E5%88%87%E6%8D%A2%E5%88%B0%20NVIDIA%20GPU.png)
[Ubuntu 14.04 64位]
在 Intel / NVIDIA 显卡和不同的 NVIDIA 驱动程序之间切换后,我现在突然只能使用 Intel GPU。以前在两者之间切换完全没有问题 - 我不能确定是什么突然导致了这个问题。我想我做的最后一件事是切换到“X.Org X 服务器”驱动程序 - 然后就出问题了。这次切换是为了尝试解决设置辅助屏幕的问题。
每次我尝试切换到 NVIDIA 时,都会收到这个非常明显的错误消息,然后它就会切换回 Intel :/
我需要一些故障排除方面的帮助或尝试一些建议。
到目前为止,我(取消/重新)安装了各种软件包“nvidia-settings” / “nvidia-current” / “nvidia-current-updates” / “nvidia-331” / “nvidia-331-updates”。但无济于事。
> lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
01:00.0 VGA compatible controller: NVIDIA Corporation GK107GLM [Quadro K2000M] (rev a1)
/etc/apt/sources.list:可以在 pastebin.com 上找到
关于卡西姆的建议:
raffael@raffael-GT60~> sudo prime-select nvidia
[sudo] password for raffael:
Error: alternatives are not set up properly
Error: nvidia mode can't be enabled
raffael@raffael-GT60~> sudo prime-select intel
Error: alternatives are not set up properly
Error: intel mode can't be enabled
关于Qasim的第二个建议:
sudo apt-get purge nvidia*
[reboot]
sudo apt-get install nvidia-319-updates nvidia-settings-319-updates nvidia-prime
[reboot]
[tried to switch to NVIDIA]
奇怪的是 - 这第一次居然就成功了!?然后我切换回 Intel - 注销/打开 - 切换回 NVIDIA - 注销/打开 -> 系统崩溃 - 如上所述的错误。
关于Louis Matthijssen的建议:
raffael@raffael-GT60:~$ sudo update-alternatives --set /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf /usr/lib/nvidia-331-updates-prime/ld.so.conf
update-alternatives: error: alternative name (/etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf) must not contain '/' and spaces
raffael@raffael-GT60:~$ ls -la /usr/lib/nvidia-331-updates-prime
total 44
drwxr-xr-x 2 root root 4096 Mai 2 22:45 .
drwxr-xr-x 196 root root 32768 Mai 3 10:57 ..
-rw-r--r-- 1 root root 0 Apr 4 11:50 alt_ld.so.conf
-rw-r--r-- 1 root root 60 Apr 4 11:50 ld.so.conf
重复算法两次 - 没有再起作用 :/
现在它似乎起作用了:
raffael@raffael-GT60:~$ sudo update-alternatives --set x86_64-linux-gnu_gl_conf /usr/lib/nvidia-331-updates-prime/ld.so.conf
update-alternatives: using /usr/lib/nvidia-331-updates-prime/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf (x86_64-linux-gnu_gl_conf) in manual mode
raffael@raffael-GT60:~$ sudo update-alternatives --set i386-linux-gnu_gl_conf /usr/lib/nvidia-331-updates-prime/alt_ld.so.conf
update-alternatives: using /usr/lib/nvidia-331-updates-prime/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in manual mode
之后我可以切换到 NVIDIA - 但没有提供扩展的“NVIDIA X 服务器设置” - 现在将重新启动并查看会发生什么。跟进:重新启动后它切换回 Intel,无法像往常一样切换到 NVIDIA。在我看来,Louis,你的方法欺骗了操作系统,让它相信它使用 NVIDIA,而事实并非如此。
答案1
当您收到以下错误时:
Error: alternatives are not set up properly
您可以尝试自己设置替代方案。
当我切换时到我看到的英特尔:
update-alternatives: using /usr/lib/nvidia-331-prime/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf (x86_64-linux-gnu_gl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-331-prime/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in manual mode
当我切换时到NVIDIA 我看到的是:
update-alternatives: using /usr/lib/nvidia-331/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf (x86_64-linux-gnu_gl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-331/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in manual mode
所以你可以尝试这个来切换到英特尔:
sudo update-alternatives --set x86_64-linux-gnu_gl_conf /usr/lib/nvidia-331-prime/ld.so.conf
sudo update-alternatives --set i386-linux-gnu_gl_conf /usr/lib/nvidia-331-prime/alt_ld.so.conf
显然你应该用你自己的版本替换 331。
现在你可以尝试以下几种方法来触发开关:
注销并重新登录
像平常一样重新启动 X 服务器
重新启动整个电脑
出于与上述相同的目的
执行
sudo prime-select nvidia
由于您的替代方案现在已设置为英特尔,我希望这也能修复任何其他设置,以便一切都恢复正常(显然您仍然应该重新启动 X 服务器)
我希望我对这个错误的解释是正确的。
另外,您可以使用prime-select query
来检查当前选择了哪张卡,并修复该卡的替代方案(例如 NVIDIA),因为您可能已经以某种方式为另一张卡设置了替代方案(例如 Intel),但该工具仍然认为您正在使用另一张卡(例如 NVIDIA),因此给出错误,提示替代方案设置不正确。
答案2
我想我找到了至少可以解决。
一切都是关于update-alternatives
。
我注意到
sudo update-alternatives --config i386-linux-gnu_gl_conf
和
sudo update-alternatives --config x86_64-linux-gnu_gl_conf
返回包含 /usr/lib/i386-linux-gnu/mesa/ld.so.conf
或类似的列表。
每次重启后都会/usr/lib/i386-linux-gnu/mesa/ld.so.conf
被设置为选择,即使我之前已经手动更改过它。
我尝试改变列表的顺序,但最终的解决方案是通过
sudo update-alternatives --remove x86_64-linux-gnu_gl_conf /usr/lib/x86_64-linux-gnu/mesa/ld.so.conf
和
sudo update-alternatives --remove i386-linux-gnu_gl_conf /usr/lib/i386-linux-gnu/mesa/ld.so.conf
这应该足够了。
如果还不够,请将“i386”和“x86_64”设置为相同的选项,方法是
sudo update-alternatives --config x86_64-linux-gnu_gl_conf
和
sudo update-alternatives --config x86_64-linux-gnu_gl_conf
之后重新启动。
您可以随时通过以下方式将其恢复到原始状态
sudo update-alternatives --install /etc/ld.so.conf.d/i386-linux-gnu_GL.conf i386-linux-gnu_gl_conf /usr/lib/i386-linux-gnu/mesa/ld.so.conf 500
和
sudo update-alternatives --install /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf x86_64-linux-gnu_gl_conf /usr/lib/x86_64-linux-gnu/mesa/ld.so.conf 500
希望它也对您有用。
答案3
对我有用的方法,我仍在尝试查找他的帖子。我查看了太多帖子:
这是对我有用的方法:
我试过:
sudo update-alternatives --config x86_64-linux-gnu_gl_conf
sudo ldconfig -n
sudo update-initramfs -u
重启后,没有任何变化。所以我尝试:
sudo apt-get purge libvdpau-va-gl1 bumblebee* nvidia*
sudo apt-get install linux-headers-generic
sudo apt-get install nvidia-331 nvidia-settings nvidia-prime
重启。仍然没有任何变化,当我尝试切换到 nvidia 卡时,nvidia-settings 中仍然显示相同的空白错误消息。
我尝试手动切换,使用sudo prime-switch nvidia
,配置信息已更新。我再次尝试,nvidia-settings 要求我注销并重新登录...瞧!我成功了!
就我而言,在能够使用 nvidia-settings UI 进行切换之前,我必须先以超级用户身份手动切换,以便生成正确的配置!
幸好我试过了,否则我还得继续安装其他驱动程序!希望这对其他人有用!
答案4
我遇到过类似的问题,答案是我仍然bumblebee-nvidia
安装了。
请注意,您正在清除“所有 NVIDIA 内容” sudo apt-get purge nvidia*
,并且上面的包与该通配符不匹配。
因此,运行命令:
apt-get purge bumblebee-nvidia nvidia*
然后重新启动,然后安装相关的nvidia-xxx
、nvidia-settings
和nvidia-prime
软件包(我目前使用的是 340.24 版本xorg-edgers)。
现在,在安装过程中您应该会看到有关文件update-alternatives
的相关信息*gnu_gl_conf
。