2016年9月5日 星期一

Linux 系統上面的 NVIDIA 圖形顯示的私有驅動程式

NVIDIA 官方網站上面有提供驅動程式的下載,只是不曉得是否有支援我們正在使用的顯示晶片。

最直接的方式是將驅動程式下載後解開來看裡面的 README.txt 的內容,例如目前最新的 Beta 版本 NVIDIA-Linux-x86_64-370.23.run,下載後可執行以下指令來解開它。

$ bash NVIDIA-Linux-x86_64-370.23.run -x

然後就可以去查看 NVIDIA-Linux-x86_64-370.23 目錄底下的 README.txt 檔案。

然後直接跳轉到 Appendix A. Supported NVIDIA GPU Products 的地方,就可以看到許多的 Device PCI ID,這時候再去對一下自己系統上面的 lspci -vnn 的輸出上面的 NVIDIA 顯示都是 10de 開頭的。

Appendix A. Supported NVIDIA GPU Products
______________________________________________________________________________
...
A1. NVIDIA GEFORCE GPUS


    NVIDIA GPU product                    Device PCI ID*     VDPAU features
    ----------------------------------    ---------------    ---------------
    GeForce GTX 480                       06C0               C
    ...
    GeForce GT 620M                       0DE9 1025 0692     C
    ...
...

像是 06C0 對應到 [10de:06c0] 只要對一組 PCI ID 就好了,而 0DE9 1025 0692 則是對應到 [10de:0de9] 然後還要檢查 Subsystem ID 是不是 [1025:0692],類似下面的輸出(假造的)。

00:02.0 VGA compatible controller [0300]: NVIDIA GeForce GT 620M [10de:0de9] (rev 00) (prog-if 00 [VGA controller])
 Subsystem: Foo bar system [1025:0692]

如果系統上面的 Device PCI ID 跟 Subsystem PCI ID 有跟 README.txt 裡面的符合就表示這個驅動程式應該有支援,如果沒有出現在 README.txt 裡面的話,就是沒有支援。

而 Ubuntu 上面的 NVIDIA 私有驅動也是透過同樣的 README.txt 轉換成 dh-modaliases 使用的格式,讓使用者可以透過 ubuntu-drivers 來自動找到合適的驅動程式。

$ apt-cache show nvidia-361
Package: nvidia-361
Priority: optional
Section: restricted/misc
Installed-Size: 292039
Maintainer: Ubuntu Core Developers <...>
Architecture: amd64
Source: nvidia-graphics-drivers-361
...
Description: NVIDIA binary driver - version 361.42
Description-md5: 2f2445ec5e04329593078984a32bc2ae
Modaliases: nvidia_361(pci:v000010DEd000006C0sv*sd*bc03sc*i*,...