从命令行中查找图形卡版本
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 的驱动程序是通过安装官方存储库中的amdgpu或amdgpu-pro软件包来安装的。
3.1. amdgpu和amdgpu-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-intel或xserver-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 是一个方便的实用程序,可显示各种组件的系统规格。我们可以使用yum或apt 之类的包管理器从我们发行版的官方存储库中安装它。
一旦我们安装了它,我们可以很容易地从命令行验证它:
$ 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-intel和xf86-video-intel软件包。