一个可以尝试的Nvidia Prime方案
Tofloor
poster avatar
risez
deepin
2020-04-16 22:18
Author
本帖最后由 risez 于 2020-10-2 20:01 编辑

提示:最下面有更新

Hello,各位大佬,今天刚注册账号,新人发贴,请多多关照。
正如标题所示,这个贴的主题是关于双显卡切换方案的,你可能认为我是来问Deepin的prime方案什么时候回归。但我是来告诉你们,其实Deepin已经有prime方案了,不,是所有的主流GNU/Linux发行版!而且还是官方方案,只是这个方案很少人知道,导致2020年还有些人在用老掉牙的bumblebee。Intel+Nvidia双显卡切换方案的噩梦已经结束了一半了。既然这么多人还在被老教程误导,总得有个人出来指正,可惜在我发贴之前,没见到类似贴子,可能是他们也不知道这个方案,那就我来说吧。
别再骂So, nvidia F**k you了,你应该说,Nvidia牛逼!经过本人简单移植测试,在Deepin v20 Beta上Prime方案运行成功!废话不多说,如果你迫切想结束噩梦,那就开始吧!但是我的方法有风险,不考虑清楚就胡乱照做后果自负!
测试平台:Deepin v20 Beta
要求:
turing架构的GPU(真自动切换,即不用时会自动关闭N卡),非turing架构(假自动切换,你会发现独显一直跑着xorg,以此来实现“自动切换”,目前本人已知pascal,maxwell架构可以使用该方案,欢迎大家测试)
NVIDIA版本:>=435.17(beta源已符合要求)
Xorg-server版本:>=1.20.6-1(beta源低于这个版本:1.20.4)
如果你之前安装过其它方案比如bumblebee,请在做下列步骤前全部卸载掉。

安装好系统后,首先更新你的系统,然后安装nvidia驱动:
  1. sudo apt install nvidia-driver nvidia-smi nvidia-settings
Copy the Code
安装过程中如果提示你禁用nouveau,那么安装完成后重启。这个过程如此简单大佬们都懂。
由于Xorg-server版本不符合要求,接下来需要添加源,终端执行:
  1. sudo nano /etc/apt/sources.list.d/debian.list
Copy the Code
然后添加进如下内容:
  1. deb http://mirrors.ustc.edu.cn/debian/ unstable main contrib non-free
Copy the Code
保存并退出,为了防止依赖关系混乱,还需要再执行:
  1. sudo nano /etc/apt/apt.conf
Copy the Code
往里面加入如下内容:
  1. APT::Default-Release "apricot";         #这么一来,除非你自己指定使用unstable源安装软件,否则apt是不会用的
Copy the Code
保存并退出。

接下来刷新你的源列表:
  1. sudo apt update
Copy the Code
升级Xorg-server:
  1. sudo apt -t unstable install xserver-xorg xserver-xorg-core #这条命令似乎不管用了(2020.7.13更新)
Copy the Code
升级完成后,还没完。安装这个包,使用dpkg -i:
  1. sudo dpkg -i nvidia-prime.deb
Copy the Code
下载并解压这个包,解压得到.deb包再安装(不是改后缀名!我把.deb包用tar命令给压缩了):


然后注销,重新登录,打开nvidia-settings,如果你是像下图那样显示,证明Prime已经在运作,大功告成。你可能会遇到一个提示,说要用nvidia-xconfig创建文件,不用管它。
如果因为某种原因,没有像上图那样显示,那么你需要在/etc/X11/xorg.conf中显式指定(参见Arch wiki):
  1. sudo nano /etc/X11/xorg.conf
Copy the Code
添加如下内容:
  1. Section "Device"
  2.   Identifier "iGPU"
  3.   Driver "modesetting"
  4. EndSection

  5. Section "Screen"
  6.   Identifier "iGPU"
  7.   Device "iGPU"
  8. EndSection

  9. Section "Device"
  10.   Identifier "dGPU"
  11.   Driver "nvidia"
  12. EndSection
Copy the Code
注销重登,Prime应该会运作了。如果还不行,请在配置文件中添加BUSID参数,具体方法参考Arch wiki。


有些应用会自动调用你的独显运行,比如虚幻4,如果没有,这么做:
  1. prime-run command        #使用prime-run运行软件
Copy the Code
以Blender为例:
  1. prime-run blender
Copy the Code
截图:
若要获得最佳游戏体验,这么做:
  1. export GAMEMODERUNEXEC=prime-run && gamemoderun command           #别忘了安装gamemode且版本必须>=1.3,小于这个版本参考gamemode官方                                                                                                                    #wiki
Copy the Code
比如我的世界(Minecraft):
  1. #一个创建脚本的示例
  2. #!/bin/bash
  3. PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/lib/jvm/default/bin
  4. cd $HOME/Minecraft && export GAMEMODERUNEXEC=prime-run && gamemoderun java -jar $HOME/Minecraft/HMCL-3.2.149.jar
Copy the Code
如果你是用steam玩游戏的话,像古墓丽影9,它有可能识别不到你的显卡,你只需往启动参数设置粘贴如下内容,即可畅玩游戏:
  1. export GAMEMODERUNEXEC=prime-run && gamemoderun %command%
Copy the Code
实际上要想发挥极致性能还得安装一些软件包,这里就不说了,超出了主题范围。虽然Windows才是打游戏的最佳选择,但是我已经习惯在Linux上玩游戏了,我的是Linux单系统。而且能在Linux上打游戏可以获得统一的Linux桌面体验,不用切换来切换去了。

建议继续阅读这两个贴子:https://bbs.deepin.org/post/203224#
https://bbs.deepin.org/post/203227#

后记:
1.换源是一种非常危险的、破坏系统稳定的行为,所以我希望官方 https://bbs.deepin.org/user/48640 尽快将Deepin源的Xorg-server(习惯了Arch,我故意打错包名的,Debian包叫xserver-xorg)更新。
2.我是一名Arch Linux普通用户,之前我用过4年debian系发行版,不过现在Arch也用了快一年了,很多以前我在Debian上折腾过的操作都忘了,所以我只会一点简单的打包技术。
3.我最早知道Prime方案是在这里:
  1. https://wiki.archlinux.org/index.php/PRIME#PRIME_render_offload
Copy the Code
所以说,用Linux,英语不好,天天骂Nvidia,老黄两行泪。
我发现的关于Prime新方案讨论的贴子:
  1. https://bbs.deepin.org/post/191101#prime
Copy the Code
4.这个nvidia-prime包是我从Arch移植过来的,以前我就喜欢美化装逼,没心学技术,唉,只怪自己当初为何不好好静下心来学习,现在学艺不精,没法为社区做个大点的贡献,而且学习成绩一塌糊涂。
5.本人高三党,没有太多时间再搞这些技术了,昨天我看到v20 beta终于发布,激动得要死,搞得我作业都没做。现在没多少时间了,如果你在使用过程中遇到问题,比如屏幕撕裂,不要问我,自己动手,丰衣足食。感谢您的体谅与理解。
6.这个nvidia-prime移植包就由我来维护吧(搬运工),要是Arch那边更新了,我没注意到,大佬们就通知我一下,马上更新。算是为社区做了微小的贡献。这个包目前不会提交到Debian上游(我不知道怎么提交)。
7.其实这个包里面就只有几个配置文件,不过没人移植,可能是我没发现,那就让我来做吧。

--------------------------------------------------------------7.13更新-----------------------------------------------------------------
1.nvidia-prime包更新了,包里面只剩下一个文件,即/usr/bin/prime-run,甚至不需要之前版本的xorg配置文件了,请更新驱动到最新版本(450.57),防止出现问题。
2.虽然高考结束了,但关于显卡方面的问题,我还是有很多不懂的,希望大佬帮我解决一些楼下遇到的问题,我实在太菜了。
3.上面的方法具有时效性,现在部分解决依赖的步骤不管用了,但我相信深度仓库的包版本应该更新到满足依赖要求的版本了,我自己没有使用deepin,也不知道情况如何。4.新版的包直接把.tar.gz的后缀名删掉就可以安装了,之前打包旧版时不明白上传规则,就给压缩掉了。

更新的nvidia-prime包(为了防止有些人的电脑在更新后导致无法顺利进入桌面,上面的旧版保留了):
nvidia-prime.deb.tar.gz


Reply Favorite View the author
All Replies
2 / 4
To page
wubozh
deepin
2020-04-17 00:39
#21
请问楼主怎么判断xorg是跑在核显还是跑在独显上?如果想按照这篇文章,让xorg跑在核显上,应该怎么操作?https://blog.lilydjwg.me/2019/9/3/nvidia-prime-setup.214768.html
Reply View the author
leezn
deepin
2020-04-17 00:44
#22
弱弱问一句。1060是什么架构的?可以试试这个吗
Reply View the author
lenke
deepin
2020-04-17 01:28
#23
如果能搞定这个功能就更方便了
Reply View the author
152******35
deepin
2020-04-17 01:59
#24
mark 回去试下
Reply View the author
火热的土豆
deepin
2020-04-17 02:28
#25
感谢分享!!!
Reply View the author
leezn
deepin
2020-04-17 02:55
#26

大佬,反馈下来个deepin的官方的Nv-prime的方案啊!!!
Reply View the author
risez
deepin
2020-04-17 03:55
#27
leezn replied at 2020-4-16 16:44
弱弱问一句。1060是什么架构的?可以试试这个吗

帕斯卡架构,可以用
Reply View the author
risez
deepin
2020-04-17 03:56
#28
wubozh replied at 2020-4-16 16:39
请问楼主怎么判断xorg是跑在核显还是跑在独显上?如果想按照这篇文章,让xorg跑在核显上,应该怎么操作?ht ...

如果执行nvidia-smi可以看到xorg进程,就说明xorg在独显上运行了。
Reply View the author
risez
deepin
2020-04-17 04:01
#29
wubozh replied at 2020-4-16 16:39
请问楼主怎么判断xorg是跑在核显还是跑在独显上?如果想按照这篇文章,让xorg跑在核显上,应该怎么操作?ht ...

这篇文章我之前看过,如果你采用该方案,而自己的显卡不是图灵架构的,那么xorg肯定会跑在独显上,目前没有办法让非图灵架构的显卡不用时自动关闭,这个得等Nvidia官方解决。
Reply View the author
impress_me
deepin
2020-04-17 04:29
#30
666,技术贴,我只在arch下面用过optimus-manager切换显卡方案,prime一直没成功过,好帖收藏了
Reply View the author
risez
deepin
2020-04-17 04:33
#31
https://bbs.deepin.org/post/191741
666,技术贴,我只在arch下面用过optimus-manager切换显卡方案,prime一直没成功过,好帖收藏了 ...

你好,在arch上可以直接
  1. sudo pacman -S nvidia-prime
Copy the Code

进行安装,官方源就有,这个包也是从官方源的nvidia-prime重新打包过来的。
Reply View the author
186******06
deepin
2020-04-17 05:19
#32
俺的GeForce930m是maxwell架构,用不了啊。。。。
Reply View the author
boluochoufeng
deepin
2020-04-17 05:41
#33
亲测,麦克斯韦架构也可以,只是要手动prime-run来运行程序
Reply View the author
wubozh
deepin
2020-04-17 09:34
#34
本帖最后由 wubozh 于 2020-4-17 02:06 编辑
https://bbs.deepin.org/post/191741
这篇文章我之前看过,如果你采用该方案,而自己的显卡不是图灵架构的,那么xorg肯定会跑在独显上,目前没 ...

看文章的作者,他是GTX940M的显卡,应该不是图灵架构,但他实现了让xorg跑在核显上
Reply View the author
Hello
deepin
2020-04-17 16:40
#35
失败了,还是老实开源驱动吧
Reply View the author
risez
deepin
2020-04-17 17:52
#36
本帖最后由 risez 于 2020-4-17 10:15 编辑
wpwen replied at 2020-4-16 21:19
俺的GeForce930m是maxwell架构,用不了啊。。。。

已经有人测试了,maxwell架构也可以,你可以去试试
Reply View the author
risez
deepin
2020-04-17 18:14
#37
https://bbs.deepin.org/post/191741
如果能搞定这个功能就更方便了

这个方案是全自动的,所以就不需要自己手工切换了
Reply View the author
risez
deepin
2020-04-17 19:35
#38
本帖最后由 risez 于 2020-4-17 11:37 编辑
https://bbs.deepin.org/post/191741
看文章的作者,他是GTX940M的显卡,应该不是图灵架构,但他实现了让xorg跑在核显上 ...

https://bbs.archlinuxcn.org/viewtopic.php?id=10292
依云没有说明她实现了让xorg跑在核显上,那篇文章可能是她打错了字,参见上面的贴子。而且我去看了官方文档,目前确实只有turing架构的GPU支持完整的动态电源管理,如果你的显卡不是turing架构就不用考虑配置Nvidia动态电源管理了。
Reply View the author
wubozh
deepin
2020-04-17 20:28
#39
https://bbs.deepin.org/post/191741
https://bbs.archlinuxcn.org/viewtopic.php?id=10292
依云没有说明她实现了让xorg跑在核显上,那篇文章可 ...

“默认情况下,Xorg 及其上的程序运行于i卡。使用 __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia 环境变量来指定使用N卡。”这是原文。我的是GTX850M显卡,按文章里那样配置,xorg还是跑在N卡上,所以觉得奇怪。不玩游戏的情况下,N卡里就一个xorg,其他软件在nvidia里看不到。如果能把Xorg按文章里所说的移到I卡里运行,也许N卡就可以待机了
Reply View the author
wubozh
deepin
2020-04-17 20:35
#40
如果只是想用N卡的运算能力,好像只要装上官方驱动就行了啊。我按那篇文章和楼主这篇文章的步骤安装完,和默认配置的官方驱动没什么区别?
Reply View the author
2 / 4
To page