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)分享你的見解,給我們更多寶貴的意見吧!
總結
以上是生活随笔為你收集整理的2022年10月deepin 20.7.1 谈谈我们的N卡驱动开发心得的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Maven深入浅出
- 下一篇: 讯时MX51(fxs) 24口语音网关