无法再从 Intel 切换到 NVIDIA GPU

Raf*_*ael 39 nvidia graphics drivers nvidia-prime

[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)
Run Code Online (Sandbox Code Playgroud)

/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
Run Code Online (Sandbox Code Playgroud)

关于 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]
Run Code Online (Sandbox Code Playgroud)

奇怪的是 - 这实际上是第一次起作用!?然后我切换回 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
Run Code Online (Sandbox Code Playgroud)

重复算法两次 - 没有再次工作:/

现在它似乎工作:

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
Run Code Online (Sandbox Code Playgroud)

之后我可以切换到 NVIDIA - 但没有提供扩展的“NVIDIA X 服务器设置” - 现在重新启动,看看会发生什么。后续:重启后切换回Intel,无法正常切换到NVIDIA。对我来说,Louis 的方法似乎让操作系统相信它使用了 NVIDIA,而实际上并非如此。

Lou*_*sen 18

当您收到以下错误时:

Error: alternatives are not set up properly
Run Code Online (Sandbox Code Playgroud)

您可以尝试自己设置备选方案。

当我切换英特尔时,我看到:

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
Run Code Online (Sandbox Code Playgroud)

当我切换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
Run Code Online (Sandbox Code Playgroud)

所以你可以试试这个切换英特尔:

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
Run Code Online (Sandbox Code Playgroud)

显然你应该用你自己的版本替换 331 。

现在你可以尝试一些事情来触发切换:

  • 注销并重新登录

    像往常一样重新启动 X 服务器

  • 重新启动整个 PC

    出于与上述相同的目的

  • 执行 sudo prime-select nvidia

    由于您现在为英特尔设置了替代方案,我希望这也将修复任何其他设置,以便一切恢复原样(显然您仍然应该重新启动 X 服务器)

我希望我已经正确地解释了错误。

此外,您可以使用prime-select query检查当前选择了哪张卡,并修复该卡的替代品(例如 NVIDIA),因为您可能以某种方式为另一张卡(例如 Intel)设置了替代品,但该工具仍然认为您' 正在使用另一张卡(例如 NVIDIA),因此给出一个错误,表明替代品设置不正确。


kcp*_*cpr 5

我想我至少找到了一种解决方法

这都是关于update-alternatives.
我注意到两者

sudo update-alternatives --config i386-linux-gnu_gl_conf
Run Code Online (Sandbox Code Playgroud)

sudo update-alternatives --config x86_64-linux-gnu_gl_conf
Run Code Online (Sandbox Code Playgroud)

返回包含/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
Run Code Online (Sandbox Code Playgroud)

sudo update-alternatives --remove i386-linux-gnu_gl_conf /usr/lib/i386-linux-gnu/mesa/ld.so.conf
Run Code Online (Sandbox Code Playgroud)

那应该就够了。
如果没有,将 'i386' 和 'x86_64' 设置为相同的选项

sudo update-alternatives --config x86_64-linux-gnu_gl_conf
Run Code Online (Sandbox Code Playgroud)

sudo update-alternatives --config x86_64-linux-gnu_gl_conf
Run Code Online (Sandbox Code Playgroud)

之后重启。

您始终可以通过以下方式将其恢复到原始状态

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  
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

希望它也适用于您。