NVIDIA-PRIME:不能切换到英特尔

每当我从我的gpu(gtx 1060)切换到我的igpu(Intel 530)时,我都无法启动。 加载屏幕卡住以下消息:

[失败]无法启动NVIDIA Persistence Daemon。 有关详细信息,请参阅’systemctl status nvidia-persistenced.service’。

但是,当我切换回Nvidia gpu并切换到我的igpu而不暂时重启工作时,我可以启动。 我正在使用Kubuntu 16.10而只使用我的内置笔记本电脑显示器。 这是我切换到我的igpu时的输出:

sudo prime-select intel Info: the current GL alternatives in use are: ['nvidia-378', 'nvidia-378'] Info: the current EGL alternatives in use are: ['nvidia-378', 'nvidia-378'] Info: selecting nvidia-378-prime for the intel profile update-alternatives: using /usr/lib/nvidia-378-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-378-prime/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf (x86_64-linux-gnu_egl_conf) in manual mode update-alternatives: using /usr/lib/nvidia-378-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 update-alternatives: using /usr/lib/nvidia-378-prime/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_EGL.conf (i386-linux-gnu_egl_conf) in manual mode sudo prime-select nvidia Info: the current GL alternatives in use are: ['nvidia-378-prime', 'nvidia-378-prime'] Info: the current EGL alternatives in use are: ['nvidia-378-prime', 'nvidia-378-prime'] Info: selecting nvidia-378 for the nvidia profile update-alternatives: using /usr/lib/nvidia-378/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-378/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf (x86_64-linux-gnu_egl_conf) in manual mode update-alternatives: using /usr/lib/nvidia-378/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in manual mode update-alternatives: using /usr/lib/nvidia-378/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_EGL.conf (i386-linux-gnu_egl_conf) in manual mode 

lspci -k |的结果 grep -EA2’VGA | 3D’

 00:02.0 VGA compatible controller: Intel Corporation HD Graphics 530 (rev 06) DeviceName: Onboard IGD Subsystem: CLEVO/KAPOK Computer HD Graphics 530 -- 01:00.0 VGA compatible controller: NVIDIA Corporation GP106M [GeForce GTX 1060] (rev a1) Subsystem: CLEVO/KAPOK Computer Device 6a03 Kernel driver in use: nvidia 

我试着自己解决这个问题超过一个星期,并且不知道该怎么做。 我试过的一切都失败了。

请你帮助我好吗?

更新5.2.2017:

我今天再次测试它并意识到切换到intel gpu根本无法使用375和378.注销冻结屏幕。 那为什么一次有效? 如果我在删除旧驱动程序后再次安装所有驱动程序,然后使用prime-select intel(不重启!),则prime-select不会更新主要配置文件 – >它选择一个旧的非nvidia配置文件(mesa配置文件)而不是nvidia),它的工作原理。 但是一旦我切换到nvidia配置文件或重新启动,主要配置文件就会更新,它不再起作用。 所以我觉得英特尔GPU的EGl替代品有问题吗? 任何不便敬请谅解。

更新12.2.2017:

昨天,我修改了nvidia-prime软件并修复了bug。 我很快就会发布(可能是下周)我修改过的版本并粘贴一个链接,但我仍然遇到一个问题:当我执行sudo prime-select intel后关闭我的PC时:

ksmserver崩溃(我正在使用Kubuntu,可能不是Ubuntu的问题)

– > PC无法完全关闭,并恢复了英特尔GPU的旧(错误)更新替代方案

– >我无法启动。

但是,如果我在恢复模式下关机后运行sudo prime-select intel ,一切正常,我可以使用Intel GPU。

更新17.2.2017:

我发布了我的解决方法,我仍然试图在官方存储库中修复Bug。 但是,这可能是更新替代品中的一个Bug,所以接下来我必须在那里发布一个错误报告。

在此期间,享受我的解决方法! 我希望它对你也有用。 如果有任何问题请发表评论。

更新于26.2.2017

正如@whizzzkid指出的那样,在应用我的补丁之后,nvidia显卡仍然保持活动状态。 但是,今天我能够解决这个问题。 我可能会更新我的答案,包括下周的第二个补丁。 以下是我运行的一些测试:

Nvidia:43-45W

英特尔(nvidia on):29-31W

英特尔(nvidia关闭):15-17W

这是我的bug修复/解决方法:

如果你想使用bumblebee而不是nvidia-prime, 请看下面@whizzzkid提供的答案。

使用KDE Plasma Version.7.5和KDE Frameworks Version 5.26.0使用Kubuntu 16.10 64位进行测试。 以下步骤适合我。 我希望他们也会为你工作,但我不能保证,如果他们不这样做,我们也不承担任何责任。 但是如果你发表评论,我很乐意帮助你。

就我而言,问题在于update-alternative / usr / lib / nvidia-XYZ-prime /根本不起作用。 它应该将调用重定向到intel-mesa驱动程序,但由于某种原因它没有。 所以它可能毕竟是更新替代品中的一个错误? 我还没有找到报告更新替代品的错误的地方。 如果你能帮助我,请评论。

我基本上修改了nvidia-prime以直接将update-alternatives更改为intel-mesa驱动程序而不是/ usr / lib / nvidia-XYZ-prime /。

重要:

在应用任何这些步骤之前,请确保知道如何在PC上访问恢复模式。 如果由于本指南而无法再启动,您仍可以使用本指南最后一节中的命令撤消恢复模式中的更改。 有关更多信息,请访问此网站以了解如何访问恢复模式 。

如果使用32位操作系统,则必须在步骤4和“ 如何撤消所有这些修改 ”一节中省略所有包含x86_64的命令。


步骤1:

使用@whizzzkid在下面的答案中提供的简单方法安装我的补丁:

 cd /usr/bin sudo mv prime-select prime-select.bkup sudo wget https://raw.githubusercontent.com/C11235/nvidia-prime-bugfix/master/prime-select sudo chmod 755 prime-select 

第2步:

应用我的第二个补丁来降低intel模式下的功耗:

检查您拥有的nvidia-driver版本。 例如,使用以下命令:

 $ cat /proc/driver/nvidia/version NVRM version: NVIDIA UNIX x86_64 Kernel Module 378.13 Tue Feb 7 20:10:06 PST 2017 GCC version: gcc version 6.2.0 20161005 (Ubuntu 6.2.0-5ubuntu12) 

在这种情况下,nvidia-XYZ是nvidia-378。 请参阅此Stackoverflow线程 。

创建一个包含以下内容的bash文件,例如poweroff.sh

 #!/bin/bash line=$( /proc/acpi/bbswitch' fi 

创建第二个bash文件,其中包含名为poweron.sh的以下内容,并用您的nvidia驱动程序版本号替换XYZ。

 #!/bin/bash modprobe nvidia-XYZ modprobe nvidia-XYZ-modeset modprobe nvidia-XYZ-drm modprobe nvidia-XYZ-uvm echo ON > /proc/acpi/bbswitch 

在Intel模式下,您必须在使用sudo登录后运行第一个脚本,在使用sudo注销之前运行第二个脚本(否则您的笔记本电脑可能会崩溃,就像我的情况一样)。 我只是用sudo bash FILENAME执行它们。

到目前为止,我无法在登录时和注销前自动以root身份自动启动这些脚本。 然而,正如@Fiximan指出的那样,它可能与暴发户有关。 如果我设法这样做,我可能会在将来某个时候再次更新此答案。


(可能)KDE等离子体特定错误:

还有一个我无法在KDE等离子中修复的错误:每当我在nvidia模式下启动PC后从Nvidia切换到Intel, ksmserver崩溃并且PC无法使用,我必须通过按下关闭它电源按钮约5-10秒。 这有时会导致更新替代品被更改为nvidia-prime而不是intel-mesa,这会在启动时导致黑屏

如果您碰巧受到ksmserver错误的影响,请参考bugs.kde.org上的官方错误报告 。

但是,即使使用nvidia-mode,也可以通过在关机前选择intel-mode来避免PC无法关闭的问题。 如果你这样做,一切都可以正常工作,你不必通过长按电源按钮关闭电脑,除非你在nvidia模式下应用本指南。

黑屏启动错误的简单解决方法是完全删除不可用的更新替代方案:

步骤1:

进入恢复模式后,可以再次访问PC,选择root命令shell并执行以下2个命令:

 mount -o remount,rw / prime-select nvidia 

第2步:

执行以下命令:

 sudo update-alternatives --remove i386-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf sudo update-alternatives --remove i386-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf sudo update-alternatives --remove x86_64-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf sudo update-alternatives --remove x86_64-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf 

如何撤消所有这些修改

只需执行以下命令:

 sudo rm /usr/bin/prime-select sudo mv /home/YOUR-USERNAME/prime-select.backup /usr/bin/prime-select sudo update-alternatives --install /etc/ld.so.conf.d/i386-linux-gnu_GL.conf i386-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf 8603 sudo update-alternatives --install /etc/ld.so.conf.d/i386-linux-gnu_EGL.conf i386-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf 8603 sudo update-alternatives --install /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf x86_64-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf 8603 sudo update-alternatives --install /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf x86_64-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf 8603 

@ C11235的补丁有效,现在我可以在nvidia和intel之间切换,但这并不能降低功耗。 : – /表示两者仍在运行。

顺便说一句,这是一种更简单的方法。

 cd /usr/bin sudo mv prime-select prime-select.bkup sudo wget https://raw.githubusercontent.com/C11235/nvidia-prime-bugfix/master/prime-select sudo chmod 755 prime-select 

切换到intel videocard后无法启动的解决方案:
添加内核启动参数:

 acpi_osi=! acpi_osi="Windows 2009" 

出现此问题的原因:内核中的错误#156341
解决方案来源: 链接