首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dmidecode从哪里得到SMBIOS表?

dmidecode从哪里得到SMBIOS表?
EN

Stack Overflow用户
提问于 2015-12-30 21:22:15
回答 2查看 12K关注 0票数 6

我总是有这个问题,在阅读手册和在网上搜索之后没有得到任何答案。任何对此有了解的人请评论。

我知道dmidecode定位和分析的是SMBIOS表或DMI表。但它是从哪里得到的呢?它是Linux中文件的格式吗?

EN

回答 2

Stack Overflow用户

发布于 2015-12-30 21:43:36

看起来它来自/dev/mem

代码语言:javascript
复制
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表。如果成功,它将解析此表并显示如下记录的列表:

票数 11
EN

Stack Overflow用户

发布于 2015-12-30 22:08:40

DMI表中定义的数据是一个行业标准;为Linux和Windows (以及其他PC OSs)实现:

BIOS 系统管理BIOS (SMBIOS)规范定义了可用于读取存储在计算机BIOS中的信息的数据结构(和访问方法)。大约在1999年,它成为分布式管理工作队(DMTF)的一部分。 大约在同一时间,微软开始要求原始设备制造商和BIOS供应商支持接口/数据集,以便获得Microsoft认证.

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

https://web.archive.org/web/20160318010215/http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-19.4929/

用于访问DMI信息的实际内核代码如下(您的发行版/版本可能有所不同):

https://elixir.bootlin.com/linux/latest/source/drivers/firmware/dmi-sysfs.c

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34537435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档