Contents

从命令行中查找图形卡版本

1. 概述

在本教程中,我们将介绍几种查找显卡版本的方法。我们将介绍主流显卡:AMD、Nvidia 和 Intel。

2. 英伟达

大多数发行版的官方存储库中都提供了 Nvidia 驱动程序。例如,在 Ubuntu 上,我们可以使用apt 搜索模式 nvidia-* 以获取适用于 Nvidia 的所有可用驱动程序:

$ apt search nvidia-*
nvidia-407/focal 407.22-0ubuntu3 amd64
  Transition package for nvidia-driver-407
nvidia-407-dev/focal 407.22-0ubuntu3 amd64
  Transition package for nvidia-driver-407
nvidia-407-dev/focal 407.22-0ubuntu3 amd64 [installed]
  Nvidia driver metapackage

正如我们所看到的,apt获取了几个包。第三个包是我们机器上当前安装的实际驱动程序。因此,这是获取驾驶员信息的一种方式。但是,这并不一定意味着我们实际上正在使用驱动程序。

元包是一种包,其中包含有关要安装的其他包的信息。出于这个原因,安装元包将导致安装它定义的包。Nvidia 元数据包不仅包含驱动程序,还包含nvidia-smi 等辅助工具。

2.1. nvidia-smi实用程序

我们可以使用nvidia-smi(Nvidia 系统管理界面)命令行实用程序来获取有关我们的视频卡、其统计信息和图形版本的信息。

当我们为 Nvidia 安装 meta-package 时,我们也会自动获得smi-utility

$ nvidia-smi
Sun May 13 20:02:49 2012
+------------------------------------------------------+
| NVIDIA-SMI 3.795.40   Driver Version: 417.22         |
|-------------------------------+----------------------+----------------------+
| Nb.  Name                     | Bus Id        Disp.  | Volatile ECC SB / DB |
| Fan   Temp   Power Usage /Cap | Memory Usage         | GPU Util. Compute M. |
|===============================+======================+======================|
| 0.  GeForce 660 Ti GTX        | 0000:01:00.0  N/A    |       N/A   N/A      |
|   0%   51 C  N/A   N/A /  N/A |  90% 459MB / 2039MB  |       N/A   Default  |
|-------------------------------+----------------------+----------------------|
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0                  Not Supported                                         |
|    1      5113    C   python                                         440MiB |
+-----------------------------------------------------------------------------+
PID   USED_GPU_MEMORY[MIB]  USER    PGRP  %CPU  %MEM   TIME      COMMAND
9178  440MiB                hey     9175  129   2.6    04:32:19  python script.py
| +-----------------------------------------------------------------------------+

在文本输出的标题中,我们可以看到我们当前使用的是驱动程序版本417.22,这是官方驱动程序。

2.2. 替代方案:nvidia虚拟文件

作为替代方案,我们还可以读取位于*/proc/driver/nvidia*中的版本虚拟文件。它是操作系统在读取时创建的虚拟文件。

由于该文件仅包含纯文本,我们可以简单地将文件内容分类到标准输出:

$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  417.22  Sat Aug 30 00:05:22 PKT 2021
GCC version:  gcc version 7.0.3 (Ubuntu/Focal 4.6.3-0ubuntu3)

但是,我们应该注意,文件的内容会根据使用的发行版而有所不同。

2.3. 替代方案:modinfo

modinfo 工具用于检索有关内核模块的信息。我们可以使用包名modinfo通过 yum或 apt 从官方存储库安装它。

安装后,让我们验证它的可用性:

$ modinfo --version
kmod version 29
+ZSTD +XZ +ZLIB +LIBCRYPTO -EXPERIMENTAL

该工具要求我们将模块名称作为参数传递。但是,如果我们不确定模块名称,我们可以使用lspci 实用程序来检索它:

$ lspci -k | grep -A 2 -i "VGA"
02:00.0 VGA compatible controller: nVidia Corporation NV41 [GeForce 660 Ti GTX] (rev a2)
  Kernel driver in use: nvidia
  Kernel modules: nvidia, nouveau

如我们所见,使用的模块是nvidia。让我们将其作为参数传递给modinfo实用程序:

$ modinfo nvidia
filename:       /usr/lib/modules/5.6.0-229.20.1.el7.x86_64/kernel/drivers/video/nvidia.ko
alias:       char-major-195-*
version:        417.22
supported:      external
license:        NVIDIA
alias:          pci:v000010DEd00000E00sv*sd*bc04sc80i00*
alias:          pci:v000010DEd*sv*sd*bc03sc02i00*
alias:          pci:v000010DEd*sv*sd*bc03sc00i00*
depends:        drm,i2c-core
...

在这里,我们可以看到当前使用的版本是417.22。*另一方面,如果显卡使用的是开源的 Nvidia 驱动程序*nouveau,我们可以将其作为参数传递。

3. AMD

在 Linux 中查找 AMD 卡的驱动程序版本非常简单——我们只需检查驱动程序包的版本。大多数时候,AMD GPU 的驱动程序是通过安装官方存储库中的amdgpuamdgpu-pro软件包来安装的。

3.1. amdgpuamdgpu-pro软件包

在 Ubuntu 上,我们可以使用dpkg帮助程序检查软件包的版本。但是,在我们这样做之前,让我们检查一下我们当前安装的 AMD GPU 驱动程序包

使用apt工具,我们可以搜索模式 *amdgpu*:

$ apt search *amdgpu*
xserver-xorg-video-amdgpu/focal 19.1.0-0ubuntu3 amd64 [installed]
  X.Org X Server -- AMDGPU Driver

通过检查包版本,我们可以了解当前正在使用的驱动程序:

$ dpkg -l xserver-xorg-video-amdgpu
amdgpu-gpu     19.1-414273 amd64

让我们使用lsmod 来确认系统正在使用已安装的驱动程序

$ lsmod | grep amd
amdgpu               4575232  11
amd_iommu_v2           20480  1 amdgpu
gpu_sched              32768  1 amdgpu
ttm                   106496  1 amdgpu
drm_kms_helper        184320  1 amdgpu
drm                   487424  7 gpu_sched,drm_kms_helper,amdgpu,ttm
i2c_algo_bit           16384  1 amdgpu

amdgpu -pro软件包也是如此,它是用于高端 AMD GPU 的较新版本的驱动程序。

3.2. 替代方案:glxinfo工具

glxinfo 工具显示有关mesa驱动程序的信息,该驱动程序是 OpenGL 规范的开源实现。它不仅包含有关图形 API 规范的信息,还包含有关正在使用的图形卡的信息。

** glxinfo是一个辅助实用程序,不随mesa驱动程序一起提供。但是,我们可以通过官方存储库中的mesa-utils包安装它。**

安装后,我们可以通过输入glxinfo命令来验证它的可用性。默认情况下,它将打印有关驱动程序的大量信息。因此,我们只会grep我们需要的部分:

$ glxinfo | grep -iE 'vendor:|device:|version:'
    Vendor: AMD Radeon Software
    Device: Mesa DRI Radeon RX 570 (0x166)
    Version: 21.1.5

4.英特尔

由于 Wayland 和 X.Org 之间的冲突,Linux 上的 Intel 驱动程序有点混乱。X.Org 是用于 Linux 的传统(也是最古老的)窗口系统,于 1984 年推出。另一方面,Wayland 是 X.Org 的预期安全替代品,不支持为 X.Org 开发的驱动程序.

因此,在 X.Org 下运行的 Intel 驱动程序有不同的包,例如 Xorg VESA、XF86-Video-Intel、Xorg Intel 等。但是,这些软件包中的大多数都是古老的,不再推荐用于英特尔 GPU。

相反,为了克服这些驱动程序的问题,Tungsten Graphics 引入了 Mesa,它是 OpenGL、Vulkan 和其他图形 API 规范的开源实现。幸运的是,Mesa 与 Wayland 和 X.Org 配合得很好,并且得到了积极的维护。

4.1. xf86-video-intel

在使用 X.Org 的 X11 实现的旧 Linux 系统上,我们可以检查 xf86-video-intelxserver-xorg-video-intel驱动程序的版本。它仍然可以在大多数官方存储库中用于不同的发行版。

而且,和往常一样,我们可以使用 Ubuntu 上的apt工具来检查已安装的驱动程序版本:

$ apt search nvidia-*
xserver-xorg-video-intel/focal 2:2.990ubuntu3 amd64 [installed]
  X.Org X server -- Intel i8xx, i9xx display driver

4.2. lshw

lshw 是一个方便的实用程序,可显示各种组件的系统规格。我们可以使用yumapt 之类的包管理器从我们发行版的官方存储库中安装它。

一旦我们安装了它,我们可以很容易地从命令行验证它:

$ lshw -version
the latest version is B.02.18

现在,让我们使用*-c*(类)选项和video作为类参数来显示显卡的规格:

$ lshw -c video
  *-display
       description: VGA compatible controller
       product: 3rd Gen Core processor Graphics Controller
       vendor: Intel Corporation
       physical id: 2
       bus info: itcodingman@blogdemo:00:02.0
       version: 09
       width: 64 bits
       clock: 33MHz
       capabilities: vga_controller bus_master cap_list
       configuration: driver=i915 latency=0
       resources: irq:36 memory:f6400000-f67fffff memory:e0000000-efffffff ioport:f000(size=64) memory:c0000-dffff

正如我们在输出的配置字段中看到的,我们使用的驱动程序是i915内核模块。它附带xserver-xorg-video-intelxf86-video-intel软件包。