如何在 Linux 上使用 dmidecode 检索硬件信息
Dmidecode 是一个免费的开源实用程序,我们可以使用它来检索 Linux 上的硬件信息。该工具在所有主要 Linux 发行版的存储库中都可用,并且能够检查和转储 SMBIOS 表的内容。
在本教程中,我们将学习如何安装 dmidecode,以及如何使用它来检索有关 Linux 上的硬件配置的信息。
在本教程中您将学习:
如何在主要 Linux 发行版上安装 dmidecode
dmidecode 上报的信息记录是如何组织的
如何使用dmidecode检索特定硬件信息
安装
dmidecode 工具在所有主要 Linux 发行版的默认存储库中均可用;该实用程序很可能已经安装在您的系统中。如果由于某些原因没有安装,我们可以使用以下命令将其安装在 Archlinux 以及 Fedora 和 Debian 家族的发行版成员上:
DMI/SMBIOS 表
DMI是Desktop Management Interface的缩写; SMBIOS 代表:系统管理 BIOS。这两个标准由桌面管理任务组 (DMTF) 开发。它们的目的是让操作系统轻松访问硬件信息。
启动时,包含这些信息的表将加载到内存中,并且可以由 dmidecode 等专用实用程序进行解析。该表包含硬件供应商、配置、序列号、端口列表等信息。
使用 dmide 代码
让我们看一些如何使用 dmidecode 工具的示例。当在没有任何选项的情况下调用该实用程序时,它只会生成一个输出,其中包含它能够检索的所有信息。信息被组织在记录中。这是一个例子:
$ sudo dmidecode
[...]
Handle 0x0003, DMI type 16, 23 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: None
Maximum Capacity: 32 GB
Error Information Handle: Not Provided
[...]
[ADLSOT2]由于显而易见的原因,上面的内容只是该实用程序生成的输出的一小部分摘录,并描述了我机器上的内存配置。我们来分析一下记录是如何组成的。每条记录有:
句柄或唯一标识符(在本例中为 0x0003)
DMI 类型,在本例中为 16,指的是物理内存阵列。 SMBIOS 规范对表中的类型列表进行编码和关联(稍后会详细介绍)。我们可以指示 dmidecode 仅返回与特定类型相关的信息。
用于存储记录的大小,在本例中为 23 字节。
记录的实际值,根据记录本身而变化。
DMI 类型
正如我们已经说过的,信息是按类型组织的。下表包含它们的关联:
DMI 类型可用于通过 dmidecode 检索和过滤特定信息。我们所要做的就是使用 -t
选项(--type
的缩写)调用该实用程序,并提供我们想要查询的 DMI 类型作为参数。假设我们想要收集内存设备 (17) 信息,我们将运行:
$ sudo dmidecode -t 17
在我的机器上,该命令产生的输出如下:
# dmidecode 3.4
Getting SMBIOS data from sysfs.
SMBIOS 3.0.0 present.
Handle 0x0004, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0003
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 8 GB
Form Factor: SODIMM
Set: None
Locator: ChannelA-DIMM0
Bank Locator: BANK 0
Type: DDR4
Type Detail: Synchronous Unbuffered (Unregistered)
Speed: 2133 MT/s
Manufacturer: Micron
Serial Number: 00000000
Asset Tag: None
Part Number: 4ATS1G64HZ-2G3A1
Rank: 1
Configured Memory Speed: 2133 MT/s
Minimum Voltage: Unknown
Maximum Voltage: Unknown
Configured Voltage: 1.2 V
Handle 0x0005, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x0003
Error Information Handle: Not Provided
Total Width: Unknown
Data Width: Unknown
Size: No Module Installed
Form Factor: Unknown
Set: None
Locator: ChannelB-DIMM0
Bank Locator: BANK 2
Type: Unknown
如您所见,有两个 DDR4 内存条可用,但仅使用了其中一个 8GB(焊接)。我们可以看到还报告了“零件号”等其他宝贵信息:如果我们想确保购买兼容的硬件,这可能很有用。
我们只需一个命令就可以查询多种 DMI 类型:我们可以重复该选项,或者提供以逗号分隔的类型号列表作为参数。例如,要查询 BIOS (0) 和内存设备 (17),我们将运行:
$ sudo dmidecode --type 0,17
结论
在本教程中,我们学习了如何安装和使用 dmidecode 实用程序来检索 Linux 上的硬件信息。该工具是开源的,可在所有主要发行版上使用:它能够读取和解析 SMBIOS 表。我们了解了应用程序显示的每条记录是如何组成的,以及如何查询以 DMI 类型组织的特定信息。