当前位置:  开发笔记 > 运维 > 正文

dmidecode在哪里获得SMBIOS表?

如何解决《dmidecode在哪里获得SMBIOS表?》经验,为你挑选了2个好方法。

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

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



1> Party Time..:

看起来它来自/ dev/mem

root@aw42e ~]# strace -F -e open dmidecode -t 17
   
    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

/dev/mem 被描述为

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

所以要回答,它包含在/ dev/mem中

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

当你运行它时,dmidecode将尝试找到DMI表.如果成功,它将解析该表并显示如下记录列表:



2> paulsm4..:

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

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

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

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

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

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

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有