2022年10月deepin 20.7.1 谈谈我们的N卡驱动开发心得

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

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们是否还有印象?之前,我们的应用商店中有一款名叫“显卡驱动管理器”的应用,它的任务是负责安装显卡驱动以及双卡笔记本配置。

对于I+N卡这一类的双卡笔记本,这款app上提供了“使用intel集成显卡”、“使用大黄蜂方案”、“使用NV-Prime方案”。第1种方案是关闭NVIDIA独显,只使用集显;第2、3种方案则是I卡和N卡混合使用。话说回来,它的上架在当时可堪称“出道即巅峰”,短时间内就获得了颇为可观的点击和下载量,也侧面说明了大家对双卡(I+N)笔记本配置需求还是相当迫切的!

​不过收获高关注度的同时,各式各样的吐槽也像雪花般砸来:安装切换驱动方案时间过长、大黄蜂方案配置不成功、安装切换驱动显示失败······这使得我们认为首先要针对这几个问题,做一个简单的解释:

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

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

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

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

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

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

大黄蜂配置失败的原因,其实是因为上游从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版本正式发布后积极试用,于文章下方留言,或前往深度官方论坛(bbs.deepin.org)分享你的见解,给我们更多宝贵的意见吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Deepin 20.7是一个操作系统,而Docker是一种开源的容器化平台。在Deepin 20.7中安装Docker可以通过以下步骤进行操作: 1. 首先,确保系统已经安装了Docker和Docker-compose。根据引用中的信息,Deepin 20.7应安装了Docker 19.03.8和Docker-compose 1.29.2。 2. 您可以通过运行命令`docker info`来查看Docker是否安装成功。如果您在输出的尾部看到Registry Mirrors显示的是您设置的地址,那么说明安装成功。引用提供了检查安装结果的具体命令。 3. 如果系统中没有安装Docker-compose,您可以按照引用的指导进行安装。首先,您需要以root用户身份运行命令`su`进入root模式,然后运行`curl`命令下载并安装Docker-compose。完成后,您可以使用`exit`命令退出root模式,并使用`sudo chmod x /usr/local/bin/docker-compose`命令修改docker-compose的权限。 4. 最后,您可以根据引用的指导,创建或修改`/etc/docker/daemon.json`文件,将其中的内容修改为提供的形式。这样可以使用镜像加速器来加快Docker镜像的下载速度。 总结来说,Deepin 20.7 Docker是指在Deepin 20.7操作系统上安装和配置Docker的过程。通过正确安装和设置,您可以在Deepin 20.7中使用Docker来管理和运行容器化应用程序。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Docker容器可视化](https://blog.csdn.net/weixin_45439281/article/details/128226550)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Deepin 20.7 系统安装docker&docker-compose](https://blog.csdn.net/YoungJenkins/article/details/127299516)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值