我總是有這個問題,在閱讀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