一个可以尝试的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
3 / 4
To page
risez
deepin
2020-04-17 23:45
#41
wubozh replied at 2020-4-17 12:28
“默认情况下,Xorg 及其上的程序运行于i卡。使用 __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NA ...

依云不是在那个贴子里说了没法关闭N卡吗?所以不用费劲周折将xorg转到核显去了,不然的话prime就失效了。这个问题得等nvidia官方解决
Reply View the author
risez
deepin
2020-04-17 23:50
#42
wubozh replied at 2020-4-17 12:35
如果只是想用N卡的运算能力,好像只要装上官方驱动就行了啊。我按那篇文章和楼主这篇文章的步骤安装完,和 ...

区别还是有的,如果你看的那篇文章是仅独显方案,那么几乎所有的图形程序将会在独显上运行,但这个方案则不会,如果你要测试一下,可以用nvidia-smi看看分别使用两种方案下桌面的shell进程在哪里跑,如此便可看出差别。
Reply View the author
risez
deepin
2020-04-17 23:51
#43
wubozh replied at 2020-4-17 12:35
如果只是想用N卡的运算能力,好像只要装上官方驱动就行了啊。我按那篇文章和楼主这篇文章的步骤安装完,和 ...

另外,我的文章有点小更新,你去看一下能不能解决你的疑惑
Reply View the author
leezn
deepin
2020-04-19 20:26
#44
leezn@leezn-PC:~$ sudo apt update
[sudo] leezn 的密码:
命中:1 http://mirrors.ustc.edu.cn/debian unstable InRelease
命中:2 https://cdn-package-store6.deepin.com/appstore eagle InRelease                           
忽略:3 http://dl.google.com/linux/chrome/deb stable InRelease                                    
命中:5 http://dl.google.com/linux/chrome/deb stable Release                                      
命中:4 http://uos.deepin.cn/printer eagle InRelease                                             
命中:7 https://community-packages.deepin.com/deepin apricot InRelease                     
正在读取软件包列表... 完成                                   
正在分析软件包的依赖关系树      
正在读取状态信息... 完成      
有 4 个软件包可以升级。请执行 ‘apt list --upgradable’ 来查看它们。
leezn@leezn-PC:~$ apt list --upgradable
正在列表... 完成
gcc-10-base/unstable 10-20200418-1 amd64 [可从该版本升级:10-20200411-1]
gcc-10-base/unstable 10-20200418-1 i386 [可从该版本升级:10-20200411-1]
libgcc-s1/unstable 10-20200418-1 amd64 [可从该版本升级:10-20200411-1]
libgcc-s1/unstable 10-20200418-1 i386 [可从该版本升级:10-20200411-1]


楼主,问一下,这个apt.conf,根据教程配置了,但是执行sudo apt update会提示unstable的更新,使用upgrade也会提示更新,同时发现版本好像还是旧的?楼主可遇到这个情况?
Reply View the author
wubozh
deepin
2020-04-21 00:19
#45
我在UOS下按楼主这篇文章配置成功,N卡工作在prime模式下,帧率是i卡的4倍左右。但在Deepin v20下同样配置,N卡的效率只相当于UOS下的大黄蜂方案,帧率比I卡还略低。另外,打开nvidia-settings提示那个错误可能跟驱动版本有关。我装Nvidia官方的440-65驱动没这个错误,装deepin v20源里的nvidia驱动就提示这个错误。很奇怪。麻烦楼主测试一下。另外,在Deepin v20下,关闭N卡的垂直同步,用配置文件的方法无效,只能用变量测试的时候临时关闭。UOS可以用配置文章永久关闭N卡垂直同步
Reply View the author
Comments
qq1156029468
2020-04-21 06:44
核显和独显性能我的也差不多,这个方案貌似不太完美
clzstc123
deepin
2020-04-21 01:42
#46
看懂了,真牛逼,实际思路是移植arch的nvidia-prime到deepin,千方百计的凑足依赖,厉害厉害
Reply View the author
油焖虾
deepin
2020-04-22 18:19
#47
谢谢分享方法,不知道楼主在运行prime-run blender之后,在blender的设置中能不能看到显卡,我的这里无法使用独立显卡,blender2.82
Reply View the author
firstuanl
deepin
2020-04-23 04:38
#48
  1. lspci | egrep "VGA|3D"
  2. 00:02.0 VGA compatible controller: Intel Corporation Device 591b (rev 04)
  3. 01:00.0 3D controller: NVIDIA Corporation GP107M [GeForce GTX 1050 Mobile] (rev a1)
Copy the Code


这样是正常还是不正常
没动过他
Reply View the author
ReAsuna
deepin
2020-05-04 23:11
#49
我安装界面都进不去1660TI。甚至用了nomodeaet
Reply View the author
忘记、过去
Moderator
2020-05-05 04:57
#50
感谢楼主,nvprime装上确实省电了不少......但是我这里调用独显好像一直有问题。比如终端执行prime-run google-chrome,之后nvidia-smi里面并没有显示chrome的进程,还是只有Xorg服务器。使用命令运行CSGO的时候,帧数只有10+,比核显帧数还低......感觉像是CPU渲染的。glxgears也没办法用独显跑,会闪退。不知道哪里出了问题,nvidia-settings和楼主显示的是一样的。我的笔记本配置是HD630+GTX1050......之前用大黄蜂调用独显倒是没这个问题,不知道nv-prime哪里错了。
Reply View the author
stone
deepin
2020-05-15 05:22
#51
楼主,我这安装报错了。你帮我看看哪出了问题。
之前用20beta安装成功过,后来重装过一次系统,就不行了。

Reply View the author
wnmer
deepin
2020-05-15 21:33
#52
本帖最后由 wnmer 于 2020-5-15 13:35 编辑
https://bbs.deepin.org/post/191741
楼主,我这安装报错了。你帮我看看哪出了问题。
之前用20beta安装成功过,后来重装过一次系统,就不行了。
...

我也是报错
# apt -t unstable install xserver-xorg xserver-xorg-core
正在读取软件包列表... 完成
正在分析软件包的依赖关系树      
正在读取状态信息... 完成      
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:
libc6-dev : 破坏: libgcc-8-dev (< 8.4.0-2~) 但是 8.3.0.2-1+deepin 正要被安装
E: 错误,pkgProblemResolver::Resolve 发生故障,这可能是有软件包被要求保持现状的缘故。

我的显卡是1030,驱动是440.82.人穷,只买得起入门亮屏卡。
Reply View the author
181******81
deepin
2020-05-15 23:36
#53
给大佬点赞啦。
Reply View the author
忘记、过去
Moderator
2020-05-16 02:18
#54
https://bbs.deepin.org/post/191741
楼主,我这安装报错了。你帮我看看哪出了问题。
之前用20beta安装成功过,后来重装过一次系统,就不行了。
...

我也是......昨天晚上重装的,发现不好使了......估计是unstable更新太快了,一些基础包又更新了吧......
Reply View the author
Cc丶
deepin
2020-05-16 04:57
#55
大神,支持一下
Reply View the author
ighack
deepin
2020-06-15 20:37
#56
我的显卡是安装的官方run

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 440.82

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "rotocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Unknown"
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BusID          "CI:1:0:0"
    option         "AllowEmptyInitialConfiguration"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "intel"
    VendorName     "intel"
    BusID          "CI:0:2:0"
    Driver         "modesetting"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection


是把这个东西 直接加到后面吗?

Section "Device"
  Identifier "iGPU"
  Driver "modesetting"
EndSection

Section "Screen"
  Identifier "iGPU"
  Device "iGPU"
EndSection

Section "Device"
  Identifier "dGPU"
  Driver "nvidia"
EndSection

启动项中添%command%跑不了游戏
Reply View the author
xiamo
deepin
2020-06-21 06:55
#57
更新完无法进图形界面了,startx报错
Reply View the author
xiamo
deepin
2020-06-21 17:14
#58
启动就进了tty1,没有图形界面,startx也打不开
Reply View the author
myzhoujie
deepin
2020-06-21 17:33
#59
https://bbs.deepin.org/post/191741
我tm就会这一句英语 fk NVIDIA 你还不让我用。。。。

你i这个牛了,linux新手来,完全蒙圈儿的人
Reply View the author
myzhoujie
deepin
2020-06-21 17:34
#60
高三党加油,我现在用UOS
Reply View the author
3 / 4
To page