1. 程式人生 > >完全用Deepin Linux娛樂、工作、學習(2)-- 顯卡驅動篇

完全用Deepin Linux娛樂、工作、學習(2)-- 顯卡驅動篇

系統/運維 Linux

在前面《完全用Deepin Linux娛樂、工作、學習(1)》一文中,我簡單和各位分享了關於Deepin Linux的基礎體驗。對於Deepin Linux來說其中有它的好也有它的不足,我相信任何人、任何事、任何物不是與生俱來的,都是經過慢慢打磨出來的,就像我們從小長大一樣,需要經過很多的事情才會真正長大。同樣我們需要給它足夠多的時間,相信它包容它,慢慢地它也會長大的,畢竟它還年輕。

??????? 今天我僅僅以我個人筆記本的情況,和大家分享一下關於顯卡驅動部份的安裝與配置,希望能夠給各位起到一個引導性的作用,其中難免會有一些錯誤,希望不要誤導各位,歡迎指正,以便我們更好的將這份資料傳遞給其它Deepin系統的愛好者。

??????? 因為我的筆記本是雙顯卡的,即Intel+NVIDIA顯卡組合。先簡單說一下關於Intel+NVIDIA顯卡組合,NVIDIA的Optimus(擎天柱)技術可讓筆記本根據性能需要在英特爾集成顯卡和NVIDIA獨顯之間自動切換,以達到節約能耗與平衡性能雙需求,但此項技術僅僅支持Windows系統。Optimus技術是不依賴於硬件復雜結構的交火顯卡實現獨立顯卡按需渲染並傳輸給集成顯卡,集成顯卡則負責顯示功能。當筆記本通過電源供電時,獨立顯卡將關閉,以延長電池使用時長。多虧了Linux作者Linus Torvalds在芬蘭的一個活動中對NVIDIA豎起了中指,這才讓NVIDIA工程師致力於Linux上實現Optimus功能,但到目前為止它還不能夠真正商用。

技術分享圖片

??????? 為了解決這一窘境,社區提供了另一種解決方案即Bumblebee,Bumblebee一直致力於在Linux下實現NVIDIA的Optimus技術,不過到現在為止,還未能夠完全解決,比如說:顯卡自動切換等。下面我就來說說Bumblebee上折騰的全過程。

1、可能遇到的坑

??????? 在我安裝顯卡驅動的時候就遇到了很多的坑,以下坑僅限於Dell XPS 15 9560 4K,其它型號的機器具體不清楚:
坑一:安裝完系統後直接更新系統CPU占用100%,基本上沒有辦法操作了,關於這部份的原因還不僅僅只是顯卡驅動造成的,後面我們開篇再述。
坑二:通過Deepin Linux驅動管理器安裝驅動,重啟筆記本黑屏,通過grub設置Windows2009也無效。

坑三:通過Deepin Linux顯卡驅動管理器安裝大黃蜂,也不行照樣掛。

2、躍坑的正確姿勢

個人實測正確安裝顯卡驅動的姿勢:
1)通過命令行安裝閉源版獨顯驅動(試安裝了NVIDIA官方的閉源版驅動未成功,根據查看相關資料,說是需要關閉集顯,然後再進行獨顯驅動的安裝,這個我沒有折騰)。
2)安裝閉源版獨顯驅動以後,配置grub再重啟筆記本。
3)安裝大黃峰,再重啟筆記本。
4)測試集顯和獨顯切換(切換過程需要重啟筆記本,可單獨使用某個程序調用獨顯驅動,不需要重啟筆記本。),至此顯卡驅動安裝完成。

3、安裝獨立顯卡驅動

Ctrl+Alt+F2進入tty2模式,然後登錄。(此處為Deepin wiki知識庫中所述,根據個人測試可以不用進入tty模式進行操作。)
先停止lightdm服務
sudo systemctl stop lightdm #關閉登錄管理器服務
如果安裝有驅動建議先卸載掉舊版驅動
sudo apt-get remove --purge nvidia*
安裝console-setup
sudo apt-get install console-setup
安裝源內版本驅動(為閉源版本)
sudo apt-get install nvidia-driver
驗證驅動是否安裝成功
sudo apt-get install mesa-utils
註解:安裝mesa-utils這個包,用來顯示系統的glx相關信息。
optirun glxinfo|grep NVIDIA
server glx vendor string: NVIDIA Corporation
OpenGL vendor string: NVIDIA Corporation
OpenGL core profile version string: 4.5.0 NVIDIA 387.34
OpenGL core profile shading language version string: 4.50 NVIDIA
OpenGL version string: 4.6.0 NVIDIA 387.34
OpenGL shading language version string: 4.60 NVIDIA

4、修正重啟電腦黑屏情況

??????? 因為對新筆記本的支持問題,16年以後的筆記本可能會出現在安裝獨顯驅動後,如果你馬上重啟筆記本可能會出現黑屏、掛起或死機的情況,所以在安裝完驅動以後,我們需要配置grub,然後讓系統啟動的時候通過集顯啟動。
vi /etc/default/grub
修改:
GRUB_CMDLINE_LINUX_DEFAULT="splash quiet"
為:
GRUB_CMDLINE_LINUX_DEFAULT="splash quiet acpi_osi=! acpi_osi=‘Windows 2009‘"(註意:這裏的單雙引號均為英文符)
重新生成grub配置文件
sudo update-grub
這時候會更新grub.cfg文件,當然我們也可以直接修改grub.cfg文件,位於/boot/grub/grub.cfg。
需要註意的是acpi_osi=! acpi_osi=‘Windows 2009‘配置並不適用於所有筆記本電腦,對於不同的電腦設置不一樣,有些需要設置為:acpi_osi="!Windows 2015",具體可以參考以下鏈接:
https://github.com/Bumblebee-Project/Bumblebee/issues/764#issuecomment-234494238

5、安裝bumblebee

??????? 首先我們需要了解bumblebee的功能,在開篇處我們也有說到,bumblebee就是Optimus技術在Linux下的實現。Bumblebee試圖模擬Optimus技術的行為,當需要的時候使用獨立顯卡進行渲染,不需要的時候則關閉。
#安裝Bumblebee(適用於閉源驅動)
sudo apt-get install bumblebee-nividia primus nvidia-settings
primus是可選項用於提升性能,nvidia-settings用於圖形化界面的設置。
#查看對應bumblebee版本
bumblebeed --version
bumblebeed (Bumblebee) 3.2.1
Copyright (C) 2011 The Bumblebee Project
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
當你看到你的bumblebeed版本是3.2.1的時候,恭喜你,你的電腦是自帶電源管理功能開箱即用的,它不需要進行任何設置。
在安裝nvidia-settings後,我們可能通過以下命令設置獨顯或查看獨顯溫度等。
#調用nvidia顯卡設置選項
optirun nvidia-settings -c :8
技術分享圖片

6、驗證bumblebee是否工作正常

??????? 安裝完畢後重啟電腦使Bumblebee生效,測試 Bumblebee 是否支持 Optimus功能 ,如果在終端中看到有關NVIDIA的提示和齒輪轉動的圖形界面,恭喜你Bumblebee的Optimus技術已經開始工作了。
#驗證命令
optirun glxgears -info
GL_RENDERER?? = GeForce GTX 1050/PCIe/SSE2
GL_VERSION??? = 4.6.0 NVIDIA 387.34
GL_VENDOR???? = NVIDIA Corporation
技術分享圖片

7、深度顯卡管理工具驅動切換

??????? 前面講到通過命令行來安裝閉源顯卡驅動,其實我們也可以通過深度顯卡驅動管理工具來進行驅動的切換,在這裏可以將大黃峰方案切換至NVIDIA開源驅動,這裏得感謝論壇朋友woodelf解惑。
我們可以通過深度顯卡管理工具進行顯卡驅動的切換,切換前為:大黃峰方案。
技術分享圖片
切換後手動重啟電腦,在這過程中會重啟兩次電腦,進入桌面提示切換成功。
技術分享圖片
技術分享圖片
???????? 但是切換驅動以後發現獨顯的工作狀態為長期開啟狀態,根據woodelf所述是因為nouveau驅動對我的獨顯支持不佳,使獨顯處於常開狀態。
lspci | grep NVIDIA
01:00.0 3D controller: NVIDIA Corporation GP107M [GeForce GTX 1050 Mobile] (rev a1)
rev a1 表示開啟,rev ff 表示關閉。
在測試過程中發現當我從NVIDIA開源驅動切回大黃峰方案的時候切換失敗。(這裏不再述說,開篇再述)

8、解讀Bumblebee工作模式

??????? 我們可以通過sudo update-glx --config glx命令進行顯卡工作模式的切換,默認情況下采用的是bumblebee自動模式,但我們可以手動進行模式切換。
技術分享圖片
那麽下面這三種情況有什麽不同了?
選項一:mesa-diverted
在Deepin Linux下可開啟3D特效,在我的電腦上開啟以後,它可以支持intel集顯硬件渲染,且支持OpenGL 3.0。
glxinfo | grep render
direct rendering: Yes #開啟直接渲染
OpenGL renderer string: Mesa DRI Intel(R) Kabylake GT2? #使用Intel集顯硬件渲染。

glxinfo | grep OpenGL
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Kabylake GT2
OpenGL core profile version string: 4.5 (Core Profile) Mesa 13.0.6
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 13.0.6 #支持OpenGL版本
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 13.0.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:
但是它還有另外兩種工作方式:
第一種是不開啟直接渲染,通過間接硬件渲染。
direct rendering: No (LIBGL_ALWAYS_INDIRECT set)
OpenGL renderer string: Mesa DRI Intel(R) Kabylake GT2
第二種是開啟直接渲染,但是通過軟件渲染。
direct rendering: Yes
OpenGL renderer string: Software Rasterizer
從這三種工作方式的性能上來說,直接硬件渲染速度是最快的,其次是間接硬件渲染,最慢的是軟件渲染。
對於獨顯我們可以使用Primusrun來確認,獨顯是否支持硬件渲染。
primusrun glxinfo | grep render
direct rendering: Yes
OpenGL renderer string: GeForce GTX 1050/PCIe/SSE2
選項二:nvidia
在Deepin Linux下不支持開啟3D特效,簡單說就是它不支持3D顯示,只支持2D顯示。使用的是glamor模式,glamor是一種使用OpenGL的2D加速方式。
選項三:bumblebee 手動模式
暫時不清楚bumblebee手動和自動模式有什麽區別,希望知道的朋友在後面留言告知。

9、測試顯卡是否支持2D或3D

??????? glxgears是流行的OpenGL測試,渲染非常簡單的齒輪,輸出幀率。盡管glxgears可以測試顯卡驅動直接渲染能力,但是它已經過時,不能代表GNU/Linux圖形顯示的現狀以及OpenGL的全部能力。glxgears僅測試了一小部分OpenGL功能。在glxgears中體現的性能提升在遊戲中並不能感受到。它並不能夠真正完美的測試顯卡性能,所以“glxgears is not a benchmark”。

1)測試集顯

glxgears
Running synchronized to the vertical refresh.? The framerate should be
approximately the same as the monitor refresh rate.
304 frames in 5.0 seconds = 60.702 FPS
300 frames in 5.0 seconds = 59.996 FPS
300 frames in 5.0 seconds = 59.997 FPS
300 frames in 5.0 seconds = 59.997 FPS

2)測試獨顯

primusrun glxgears
301 frames in 5.0 seconds = 60.107 FPS
300 frames in 5.0 seconds = 59.997 FPS
300 frames in 5.0 seconds = 60.000 FPS
300 frames in 5.0 seconds = 59.995 FPS

??????? 在測試性能的時候,我們會發現不管是獨顯還是集顯都不超過60FPS,這是因為顯示屏的原因。實際上bumblebee 設計之初就對大於60FPS的幀率進行了丟棄操作,以避免無用的計算,如果你需要測試全部的顯卡FPS,可以通過關閉垂直同步再進行測試。

3)關閉垂直同步測試集顯

vblank_mode=0 glxgears
13583 frames in 5.0 seconds = 2716.592 FPS
20703 frames in 5.0 seconds = 4140.438 FPS
38129 frames in 5.0 seconds = 7625.753 FPS
38583 frames in 5.0 seconds = 7716.458 FPS
35381 frames in 5.0 seconds = 7076.138 FPS
37755 frames in 5.0 seconds = 7550.912 FPS
39684 frames in 5.0 seconds = 7936.765 FPS
38865 frames in 5.0 seconds = 7772.929 FPS

4)關閉垂直同步測試獨顯

vblank_mode=0 primusrun glxgears
14129 frames in 5.0 seconds = 2825.743 FPS
15388 frames in 5.0 seconds = 3077.595 FPS
15437 frames in 5.0 seconds = 3087.335 FPS
14720 frames in 5.0 seconds = 2943.999 FPS
13834 frames in 5.0 seconds = 2766.678 FPS
11818 frames in 5.0 seconds = 2363.512 FPS
13979 frames in 5.0 seconds = 2795.728 FPS
15798 frames in 5.0 seconds = 3159.472 FPS

10、測試顯卡性能

對於顯卡性能測試,可以使用Unigine Heaven 4.0工具進行測試。
下載地址:http://m11-assets.unigine.com/d/Unigine_Heaven-4.0.run
下載以後,授權可執行權限,再解壓,進入對應目錄,執行heaven。
chmod –R 777 ./Unigine_Heaven-4.0.run
sh ./Unigine_Heaven-4.0.run
cd Unigine_Heaven-4.0

1)集顯性能測試

./heaven
點擊“run”進去以後按F9,然後再點擊“benchmark”進行測試即可。(註:個人采用默認基準進行測試)
集顯測試結果:
技術分享圖片

2)獨顯性能測試

optirun ./heaven
獨顯測試結果:
技術分享圖片
??????? 從測試的結果來看,獨顯的性能明顯高於集顯,但因為個人筆記本只安裝了Deepin Linux單系統,所以沒有辦法在Windows下測試對應顯卡性能是否優於Linux。

10、應用調用獨顯方法

在bumblebee模式下,我們如果需要使用獨顯來跑程序或遊戲時候,終端執行如下命令即可:
#使用獨顯運行command程序
optirun command 或 primusrun command
#橋接方式
optirun -b primus command #使用獨顯運行command程序,提升性能。
例如運行virtualbox:
sudo optirun virtualbox#使用獨顯(NVIDIA顯卡)運行virtualbox
在我們通過N卡來啟動和關閉virtualbox的時候,我們可以通過命令來查看是否采用獨立顯卡運行,當使用optirun命令的程序關閉後,系統將會自動關閉獨顯(NVIDIA顯卡)。
#當獨顯開啟virtualbox時,顯卡狀態
optirun --status
Bumblebee status: Ready (3.2.1). X is PID 4125, 2 applications using bumblebeed.
#當獨顯關閉virtualbox時,顯卡狀態
optirun --status
Bumblebee status: Ready (3.2.1). X inactive. Discrete video card is off.
當然我們還可以用它來運行瀏覽器等程序,如:optirun vmware、optirun firefox等
#獨顯運行特定應用小技巧
???????? 如果你需要渲染的程序很多,你不想每次都從命令行啟動的話,可以去修改 /usr/share/applications/<application>.desktop 文件,在 Exec= 後面加上 primusrun或optirun 再跟程序路徑與名稱,這樣以後雙擊對應應用圖標時,它就會以獨顯來運行對應應用了。

11、寫在最後

??????? 就個人而言目前還沒有辦法能夠完美的理解bumblebee,畢竟我不是一位顯卡驅動的開發者,但希望以上的敘述能夠幫忙到各位,解決顯卡驅動所帶來的困惑。

完全用Deepin Linux娛樂、工作、學習(2)-- 顯卡驅動篇