SMBIOS
阅读数:295 评论数:0
跳转到新版页面分类
OS
正文
一、概述
System Management BIOS,是主板或者系统制造厂商以标准格式显示产品信息所遵循的统一规范。每个主板厂商或者OEM(Original Equipment Manufacturer)厂商所生产的电脑,在出厂的时候都会按照smbios标准将信息写入到bios中。这些信息包括BIOS信息、系统信息、处理器信息、设备信息等。
DMI全称是Desktop Management Interface,DMI充当了管理工具和系统层之间接口的角色,其设计适用于任何平台和操作系统。主要部分是Management Information Format (MIF) 数据库,这个数据库包括了BIOS通过SMBIOS要传给OS的信息,所以DMI是按照SMBIOS的标准实现的。
二、SMBIOS访问方式
通过符合SMBIOS规范的计算机
可以通过SMBIOS的结构体获得系统信息,共有两种方式:
1、通过即插即用功能接口访问SMBIOS结构,从规范2.1开始不再推荐使用
2、基于表结构的方式。它先是找到Entry Point Structure (EPS)表,然后通过EPS表中的数据找到SMBIOS结构表。
(1)对于非EFI的系统,访问SMBIOS EPS表的操作过程:
从物理内存0x000f0000~0x000FFFFF之间寻找关键字SM
找到后再向后16个字节,看后面5个Byte是否是关键字DMI,如果是,EPS表即找到
(3)对于UEFI系统,可以通过搜索EFI配置表中的SMBIOS GUID(SMBIOS_TABLE_GUID),然后使用指向SMBIOS的指针来定位EPS表。
linux可以使用dmidecode这个命令查看SMBIOS信息
三、SMBIOS数据存储结构
位置 | 名称 | 长度 | 描述 |
---|---|---|---|
00H | 关键字 | 4Byte | 固定是"_SM" |
04H | 校验和 | 1Byte | 用于校验数据 |
05H | 表结构长度 | 1Byte | EPS表长度 |
06H | Major 版本号 | 1Byte | 用于判断SMBIOS版本 |
07H | Minor 版本号 | 1Byte | 用于判断SMBIOS 版本 |
08H | 表结构大小 | 2Byte | 用于即插即用接口方法获得数据表结构长度 |
0AH | EPS修正 | 1Byte | |
0B-0FH | 格式区域 | 5Byte | 存放解释EPS 修正的信息 |
10H | 关键字 | 5Byte | 存放解释EPS 修正的信息 |
15H | 校验和 | 1Byte | Intermediate Entry Point Structure (IEPS)的校验和 |
16H | 结构表长度 | 2Byte | SMBIOS 结构表的长度 |
18H | 结构表地址 | 4Byte | SMBIOS 结构表的真实内存位置 |
1CH | 结构表个数 | 2Byte | SMBIOS 结构表数目 |
1EH | Smbios BCD 修正 | 1Byte |
根据16H、18H、1CH的值确定SMBIOS结构表的信息。
可以参考一下edk2/MdePkg/Include/IndustryStandard/SmBios.h
(1)表汇总
0 BIOS Information
1 System Information
2 Baseboard (or Module) Information
3 System Enclosure or Chassis
4 Processor Information
5 Memory Controller Information (Obsolete)
6 Memory Module Information (Obsolete)
7 Cache Information
8 Port Connector Information
9 System Slots
10 On Board Devices Information
11 OEM Strings
12 System Configuration Options
13 BIOS Language Information
14 Group Associations
15 System Event Log
16 Physical Memory Array
17 Memory Device
18 32-Bit Memory Error Information
19 Memory Array Mapped Address
20 Memory Device Mapped Address
21 Built-in Pointing Device
22 Portable Battery
23 System Reset
24 Hardware Security
25 System Power Controls
26 Voltage Probe
27 Cooling Device
28 Temperature Probe
29 Electrical Current Probe
30 Out-of-Band Remote Access
31 Boot Integrity Services (BIS) Entry Point
32 System Boot Information
33 64-Bit Memory Error Information
34 Management Device
35 Management Device Component
36 Management Device Threshold Data
37 Memory Channel
38 IPMI Device Information
39 System Power Supply
40 Additional Information
41 Onboard Devices Extended Information
42 Management Controller host Interface
126 Inactive
127 End-of-Table
128-255 Available for system- and OEM- specific informatio
(2)表结构
每个表的表头都相同
位置 | 名称 | 长度 | 描述 |
---|---|---|---|
00H | TYPE号 | 1Byte | 结构的TYPE号 |
01H | 长度 | 1Byte | 本结构的长度,就此TYPE号的结构而言 |
02H | 句柄 | 2Byte | 用于获得本SMBIOS结构,其值不定 |
每个结构都分为格式区域和字符串区域,格式区域就是一些本结构的信息,字符串区域是紧随在格式区域后的一个区域。
结构 01H 处标识的结构长度仅是格式区域的长度,字符串区域的长度是不固定的。有的结构有字符串区域,有的则没有。
以TYPE0为例,格式区域如下:
位置 | 名称 | 长度 | 描述 |
---|---|---|---|
00H | TYPE号 | 1Byte | 结构的TYPE号,此处是0 |
01H | 长度 | 1Byte | TYPE 0格式区域长度,一般为14H,也有13H |
02H | 句柄 | 2Byte | 本结构的句柄,一般为0000H |
04H | BIOS厂商信息 | 1Byte | 此处是BIOS卖方信息,可能是OEM厂商名,一般为01H,代表紧随格式区域后的字符串区域的第二个字符串 |
05H | BIOS版本 | 1Byte | BIOS版本号,一般为02H,代表字符串区域的第二个字符 |
06H | BIOS开始地址段 | 2Byte | 用于计算机常驻BIOS镜像大小计算,方法为 (10000H-BIOS开始地址段) * 16 |
08H | BIOS发布日期 | 1Byte | 一般为03H,表示字符区第三个字符串表示字符区第三个字符串 |
09H | BIOS rom size | 1Byte | 计算方法为(n +1 )*64K ,n 为此处读出数值为(n +1 )×64K ,n 为此处读出数值 |
0AH | BIOS 特征 | 8Byte | Bios 的功能支持特征,如PCI,PCMCIA,FLASH 等 |
12H | BIOS 特征扩展 | 不定 |