我总是有这个问题,在阅读man-page和在线搜索后没有得到答案。任何有此知识的人请评论。dmidecode从哪里得到SMBIOS表?
据我所知,SMBIOS表或DMI表是dmidecode定位和解析的内容。但是它从哪里得到?它是在Linux中的文件格式?
我总是有这个问题,在阅读man-page和在线搜索后没有得到答案。任何有此知识的人请评论。dmidecode从哪里得到SMBIOS表?
据我所知,SMBIOS表或DMI表是dmidecode定位和解析的内容。但是它从哪里得到?它是在Linux中的文件格式?
看起来它来自的/ dev/MEM
[email protected] ~]# 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表。如果 成功,它将然后解析此表并 显示这样一个记录列表:
在DMI表中定义的数据是一个行业标准;为Linux和Windows(其他PC的OS中)来实现:
https://en.wikipedia.org/wiki/System_Management_BIOS
系统管理BIOS(SMBIOS)规范定义数据 可以用于读取信息 存储结构(和访问方法)在计算机的BIOS中。 1999年大约,它成为 域分布式管理任务组(DMTF)的一部分......
在大约相同的时间微软开始要求OEM厂商 和BIOS厂商支持,以便在接口/数据集有 微软认证...
你可以阅读更多关于Linux实现 - 并且用实际的,原始数据导出到用户空间(“/ SYS /班/ 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
'的/ dev/mem'似乎并不成为唯一的位置,其中'dmidecode'查询,在我的情况下,它主要是不仅从'/ sys/firmware/dmi/tables'中的'smbios_entry_point'和'DMI'两个文件中提取信息。 – Meow