无法再从 Intel GPU 切换到 NVIDIA GPU

无法再从 Intel GPU 切换到 NVIDIA GPU

[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-xxxnvidia-settingsnvidia-prime软件包(我目前使用的是 340.24 版本xorg-edgers)。

现在,在安装过程中您应该会看到有关文件update-alternatives的相关信息*gnu_gl_conf

相关内容