dmidecode在哪里获得SMBIOS表?

时间:2015-12-30 21:22:16

标签: linux x86 bios

我总是有这个问题,在阅读了man-page并在线搜索后没有得到答案。任何了解此事的人都请发表评论。

据我所知,SMBIOS表或DMI表是dmidecode定位和解析的内容。但它从何而来?它是否采用Linux中的文件格式?

2 个答案:

答案 0 :(得分:7)

看起来它来自/ dev / mem

root@aw42e ~]# strace -F -e open dmidecode -t 17
   <snip>
    open("/sys/firmware/efi/systab", O_RDONLY) = -1 ENOENT (No such file or directory)
    open("/proc/efi/systab", O_RDONLY)      = -1 ENOENT (No such file or directory)
    open("/dev/mem", O_RDONLY)              = 3
    SMBIOS 2.5 present.

    open("/dev/mem", O_RDONLY)              = 3
    Handle 0x0016, DMI type 17, 27 bytes
    Memory Device
<snip>

/dev/mem被描述为

  

mem是一个字符设备文件,它是主存的图像   电脑。例如,它可用于检查(甚至修补)   系统。 mem中的字节地址被解释为物理内存   地址。

所以回答一下,它包含在/ dev / mem

我正在搜索更多信息,但我认为内核在启动时将DMI表插入内存 - 来自man dmidecode

  

当你运行它时,dmidecode将尝试找到DMI表。如果它   成功之后,它会解析这个表格          显示像这样的记录列表:

答案 1 :(得分:7)

DMI表中定义的数据是行业标准;适用于Linux和Windows(以及其他PC操作系统):

  

https://en.wikipedia.org/wiki/System_Management_BIOS

     

系统管理BIOS(SMBIOS)规范定义数据   可用于读取信息的结构(和访问方法)   存储在计算机的BIOS中。大约1999年,它成为了一部分   分布式管理任务组(DMTF)的域......

     

大约在同一时间,微软开始要求OEM   和BIOS供应商支持接口/数据集   微软认证......

您可以阅读有关Linux实现的更多信息 - 以及用于将实际原始数据导出到用户空间的驱动程序(&#34; / sys / class / dmi /&#34;,&#34; / dev / mem& #34;和朋友们) - 这里:

http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-19.4929/

用于访问DMI信息的实际内核代码在此处(您的发行版/版本可能不同):

http://lxr.free-electrons.com/source/drivers/firmware/dmi-sysfs.c