[Community News] deepin 20.7.1——谈谈我们的N卡驱动开发心得!
Tofloor
poster avatar
white777
deepin
OM
2022-10-14 21:37
Author

deepin 20.7.1 即将到来之际,各位小伙伴在参与内测的过程中,有没有发现安装N卡驱动时不同寻常的变化呢?

n卡驱动开发心得.jpg

20.7.1版本可以根据当前你机器的上NVIDIA显卡,自动匹配合适的闭源驱动版本进行安装。在其他Linux发行版安装N卡驱动时,可能会出现这样的问题:由于N卡闭源驱动版本无法完全向下兼容,一旦装错版本,容易出现黑屏死机的问题。而这一次,我们则通过直接从终端安装的方式,将这些可能出现的问题“一网打尽”。

下面,就来和大家一起唠一唠我们开发过程中的“脑回路”吧!

众所周知,Linux系统上有两套NVIDIA显卡驱动, 一是开源社区开发的nouveau ,它的特点是代码全部开源,但稳定性较差,总容易冒出各种问题。比如,部分机型在待机机后唤醒不了、开机过程中出现花屏现象等等。

另外一个则是NVIDIA厂商提供的驱动。相比较而言,这位的稳定性就要好上很多,但因为它的代码是闭源的,没有合入到内核,需要手动安装、配置。这个安装、配置过程(尤其是双卡笔记本的配置)对很多开发人员来说都难以忍受,众多还处在小白阶段的朋友们想要上手,岂不是还没开始,就已结束?

此外还有一个问题—— NVIDIA厂商提供的闭源驱动不能向下兼容 。怎么理解?简单来说,就是高版本的驱动不能完全支持覆盖旧的显卡,比如470.86这个版本可以支持GT 730显卡,当驱动版本升级到510.xx后,再去带GT 730显卡机器上安装,闭源驱动就会安装失败,系统重启后直接黑屏。

所以,在分析了以上NVIDIA闭源驱动的问题后,我们着力去做了以下几个操作。

多版本共存

首先,为了让系统仓库中所带的驱动版本能支持足够多的NVIDIA显卡型号,我们重构了上游驱动包,重构后的包名=旧包名+大版本号,让系统仓库能够同时存在多个驱动版本。举个例子,比如之前驱动包名叫【nvidia-driver】,重构后它的新名字是【nvidia-driver-470】。

目前,我们仓库总共存在340、390、470、510四个版本的驱动包,大概可以覆盖近15年内发布的显卡。

驱动包预装

再者,为了让各位安装完系统后,即可使用上闭源驱动,无需再手动安装、徒增烦恼,我们增加了NVIDIA驱动预装功能。

其实按照常规思路,要解决这个问题,只需把驱动包预装到镜像就可以了。但可惜的是,这一思路对NVIDIA显卡驱动来说并不适用。原因是NVIDIA驱动不能向前兼容,没有哪一个驱动版本可以全部覆盖支持所有的NVIDIA显卡。

为了解决这一问题,就有了我们在安装器阶段增加的功能——根据当前机器上的NVIDIA显卡,自动选择匹配一款驱动进行安装。

双卡(I+N)笔记本配置

不知道deepiner们是否还有印象?之前,我们的应用商店中有一款名叫 “显卡驱动管理器” 的应用,负责安装显卡驱动以及双卡笔记本配置。

640.png

对于I+N卡这一类的双卡笔记本,这款app上提供了 “使用intel集成显卡”、“使用大黄蜂方案”、“使用NV-Prime方案” 。第1种方案是关闭NVIDIA独显,只使用集显;第2、3种方案则是I卡和N卡混合使用。

话说回来,它的上架在当时可堪称“出道即巅峰”,短时间内就获得了颇为可观的点击和下载量,也侧面说明了大家对双卡(I+N)笔记本配置需求还是相当迫切的!不过收获高关注度的同时,各式各样的吐槽也像雪花般砸来:安装切换驱动方案时间过长、大黄蜂方案配置不成功、安装切换驱动显示失败······

这使得我们认为首先要针对这几个问题,做一个简单的解释:

  • 安装切换驱动方案时间过长!怎么破?

大家提到的“安装切换驱动方案时间过长”,主要是因为显卡驱动管理器为了保证正确安装(即安装成功后重启不会黑屏), 利用overlayroot技术设计了回退机制 ,因此总共需要三轮重启。

第一轮,overlayroot会在根文件系统上增加一次保护层,每次切换驱动时,首先在这个保护层上进行一遍,然后重启。第二轮,当系统起来后会跑一个3D测试程序(小茶壶),当3D测试程序运行成功,需要用户确认显示画质没有问题,点击确定,系统会再次重启。第三轮,退出overlayroot,在没有保护层的系统上进行安装。

当然,我们在后续的方案中会去掉这一回退机制。 过去之所以加上它,其实是担心用户安装完驱动后出现最坏的情况——系统起不来,黑屏!但实际上,出现这一问题的根本原因是仓库只有一个驱动版本,一旦安装在不支持的显卡机器上时,大概率会发生可怕的黑屏事件。

但今时可不同往日, 仓库已经有了多个版本的匹配安装,我们只需保证匹配准确率就可以了 ,自然无需再留下这样繁琐的机制,也不会再出现“爷爷,您的切换驱动终于安装好了!”这样悲伤的情况了~

  • 大黄蜂方案配置不成功?

大黄蜂配置失败的原因,其实是因为上游从2012年后就没有继续更新这个软件包。在之前使用418版本的NVIDIA闭源驱动版时,这个方案仍能配置成功。但后来我们系统仓库的N卡闭源驱动升级到460版本后,它的诸多问题就开始涌现出来。

在这一块,我们没有做修复原因主要有两个。第一,当前已经有更好的替代方案,即NV-Prime。第二,大黄蜂方案实际上并不太好。怎么定义这个“不太好”?这就体现在每次用户程序需要NVIDIA独显进行渲染显示时,都会在此用户程序前面加一个前缀(optirun)。

这是因为大黄蜂的前端程序会通过socket后台进程(bumblebeed)发送一个请求,这个时候,后台程序会另起一个Xorg用户程序,导致每次运行用户程序时,前面都会出现这个别扭的家伙,让人多少感觉到有些奇怪。

  • 关于双卡(I+N)笔记本配置一些改进计划

说了这么多关于显卡驱动管理器的情况,再说说我们接下来对双卡(I+N)笔记本配置的一些改进计划吧!

后续,我们打算只考虑三种配置方案—— 只使用I卡、只使用N卡、I卡和N卡混合使用(Prime offload) ,原本还有不少方案可供选择,但这些方案本身已经可以覆盖大部分的用户场景,所以我们将以这三种方案为主。另外,内核会提供配置接口,比如一个命令行工具,通过这个接口,用户就可以灵活自由地切换三种方案。

内核部分,目前我们将首先提供一个命名行工具,以完成上述安装、配置、切换任务,将最大程度地保证驱动安装和配置的准确性。而在交互界面上,前端部门可能会开发一个与之配套的交互界面,以保证大家在操作时的便捷性、易用性。前端和后端相互解耦,这样就能做到带给大家带来更好的使用体验,也方便我们去进行后续的维护。

到这里,我们的N卡驱动开发心得也就和大家唠的差不多了!

实际上,双显卡笔记本除了上述说的I+N卡这种组合机型,市面上还有很多A+N的机型,只不过关于这一块的配置目前我们还在摸索研究中。欢迎大家在20.7.1版本正式发布后积极试用,于文章下方留言,或在论坛分享你的见解,给我们更多宝贵的意见吧!

Reply Favorite View the author
All Replies
2 / 4
To page
璀璨星空
deepin
2022-10-15 04:07
#21

很大的一个进步了不错 越来越好越便民了like

Reply View the author
Shalling
Deepin Wiki Editor
2022-10-15 04:15
#22

愿世上再无黑屏

Reply View the author
wyz144343
deepin
2022-10-15 04:26
#23
liwl

like

先赞为敬

我的笔记本是N+I配置。

我使用了nvidia-driver安装了N卡驱动,I卡使用了系统默认驱动。

然后在星火商店安装了:任务栏切换显卡插件,能够正常切换显卡和使用。

但是我发现的单独使用N卡时,会有两个问题:

  • 触摸板似乎不是那么灵敏了,没有使用I卡那么丝滑,有滞留敢
  • alt+tab切换应用时无法快速响应,尤其是浏览器跟其他应用切换。看到几个朋友反馈过

咱们deepin的触摸板功能我就没有感觉丝滑过,我的是 ThinkPadT14, 装的20.7, 重来没有感觉过丝滑。

是设置的原因么?

Reply View the author
璀璨星空
deepin
2022-10-15 04:33
#24

我有个问题驱动不是分台式和笔记本吗?这个能自动分别吗?

Reply View the author
gshun
deepin
2022-10-15 04:41
#25

解说简单清晰,期待新版的显卡管理功能和相关工具。

Reply View the author
Lwh2008-Equinox
deepin
2022-10-15 05:24
#26
神末shenmo

A+N泣不成声

deepin也不支持RISC-V对吧。。。(支持这个架构的几乎都难,比如说GENTOO(仅仅支持64位),FreeBSD,solaris(以及后代和传承,貌似支持128位的版本),debian

Reply View the author
trufane
deepin
2022-10-15 07:31
#27
liwl

like

先赞为敬

我的笔记本是N+I配置。

我使用了nvidia-driver安装了N卡驱动,I卡使用了系统默认驱动。

然后在星火商店安装了:任务栏切换显卡插件,能够正常切换显卡和使用。

但是我发现的单独使用N卡时,会有两个问题:

  • 触摸板似乎不是那么灵敏了,没有使用I卡那么丝滑,有滞留敢
  • alt+tab切换应用时无法快速响应,尤其是浏览器跟其他应用切换。看到几个朋友反馈过

你的 alt+tab 是无法快速响应,我的alt+tab是直接死机 10秒🤧

Reply View the author
deepin
2022-10-15 11:10
#28

只考虑三种配置方案—— 只使用I卡、只使用N卡、I卡和N卡混合使用(Prime offload)

Reply View the author
jontyshaw
deepin
2022-10-15 17:55
#29

期待第三种方案,还希望仓库里的N卡驱动已经配置好security boot 签名

Reply View the author
ThinKinG
deepin testing team
2022-10-15 17:58
#30

like

Reply View the author
WangZhongyun
deepin
2022-10-15 19:01
#31

我的早升上了内测的20.7.1,并且今天又更新了。但应用商店没有显卡驱动管理器。完全卸载原来的闭源驱动后后。不管用命令sudo apt install nvidia-tesla-470-driver还是sudo apt install nvidia-driver-470都不能驱动好我的显卡。
截图_20221015105828.png

截图_20221015105150.png

截图_20221015100604.png

Reply View the author
WangZhongyun
deepin
2022-10-15 19:13
#32

dpkg: 处理软件包 nvidia-tesla-470-kernel-dkms (--configure)时出错:
已安装 nvidia-tesla-470-kernel-dkms 软件包 post-installation 脚本 子进程返回错误状态 10
正在设置 plymouth-label (0.9.4.1-1+eagle) ...
dpkg: 依赖关系问题使得 nvidia-tesla-470-driver 的配置工作不能继续:
nvidia-tesla-470-driver 依赖于 nvidia-tesla-470-kernel-dkms (= 470.103.01-1) | nvidia-tesla-470-kernel-470.103.01;然而:
软件包 nvidia-tesla-470-kernel-dkms 尚未配置。
未安装软件包 nvidia-tesla-470-kernel-470.103.01。
软件包 nvidia-tesla-470-kernel-dkms 提供了 nvidia-tesla-470-kernel-470.103.01,但它尚未被配置。

dpkg: 处理软件包 nvidia-tesla-470-driver (--configure)时出错:
依赖关系问题 - 仍未被配置
正在设置 plymouth-themes (0.9.4.1-1+eagle) ...
update-initramfs: deferring update (trigger activated)
正在处理用于 initramfs-tools (0.137.35-1+dde) 的触发器 ...
update-initramfs: Generating /boot/initrd.img-5.18.17-amd64-desktop-hwe
live-boot: core filesystems devices utils udev blockdev dns.
在处理时有错误发生:
nvidia-tesla-470-kernel-dkms
nvidia-tesla-470-driver
E: Sub-process /usr/bin/dpkg returned an error code (1)

Reply View the author
来自Ubuntu的某位用户
deepin
2022-10-15 20:29
#33

N卡驱动已经开源了

Reply View the author
desert
deepin
2022-10-15 21:35
#34

20.7.1什么时候发布

Reply View the author
百里慕雪
deepin
2022-10-15 22:51
#35

辛苦辛苦

Reply View the author
百里慕雪
deepin
2022-10-15 22:53
#36
来自Ubuntu的某位用户

N卡驱动已经开源了

事实上并没有,应该是部分开源,而且桌面电脑用处不大,鸡肋的很,nvidia还是那个NVIDIA。

Reply View the author
widon1104
deepin
2022-10-15 23:55
#37

我觉得应该提供一个应用方便已经装好系统的人安装nvidia闭源驱动

Reply View the author
来自Ubuntu的某位用户
deepin
2022-10-16 01:17
#38
widon1104

我觉得应该提供一个应用方便已经装好系统的人安装nvidia闭源驱动

在我见过的所有Linux发行版官网中只有基于Ubuntu的POP OS官网区分了带Intel/AMD显卡驱动的镜像和带NVIDIA显卡驱动的镜像

image.png

Reply View the author
mcfans2019
deepin
2022-10-16 02:47
#39

总而言之,nvidia **** you!😏

Reply View the author
来自Ubuntu的某位用户
deepin
2022-10-16 03:22
#40
mcfans2019

总而言之,nvidia **** you!😏

Reply View the author
2 / 4
To page