从命令行查找 SMBIOS 入口点的地址

Finding out address of SMBIOS Entry point from command line

来自https://wiki.osdev.org/System_Management_BIOS

The SMBIOS Entry Point Table is located somewhere between the addresses 0xF0000 and 0xFFFFF, and must be on a 16-byte boundary. To find the specific location of the start of the table it is necessary to search that region of memory for the string "SM", and then check the structure's checksum (add all bytes and see if the lowest 8 bits of the result are zero).

如何从命令行找到确切的地址:

# cat /dev/mem | grep '_SM_'
Binary file (standard input) matches
cat: /dev/mem: Operation not permitted

dmidecode 实用程序(作为 dmidecode 软件包的一部分安装在基于 Debian 的系统上,例如 Ubuntu)将显示SMBIOS 入口点,如果 运行 带有 --no-sysfs 选项。地址显示在输出的第二行:

$ sudo dmidecode --no-sysfs
# dmidecode 3.2
# SMBIOS entry point at 0x000fxxxx
Found SMBIOS entry point in EFI, reading table from /dev/mem
...

biosdecodedmidecode 实用程序可用于检查 tables。

biosdecode 直接检查内存(/dev/mem 默认情况下,但可以通过 -d 选项)以查找 SMBIOS table(和其他 table)。 dmidecode 将首先尝试在 sysfs 中定位 DMI table(除非 运行 使用 --no-sysfs 选项) 并将回退到检查内存。

链接: