linux如何将SMBIOS信息放入/dev/mem?

linux如何将SMBIOS信息放入/dev/mem?

我检查了 dmidecode 源代码。

我看到了这个:

int fd=open("/dev/mem", O_RDONLY);
long fp=0xE0000L;

看起来Linux已经把SMBIOS信息复制到内存了?

答案1

/dev/mem提供对所有物理地址空间的访问。 BIOS 固件是该地址空间的一部分(您的计算机必须有一些代码才能在加电期间运行)。

所以Linux“没有将SMBIOS信息复制到内存中”,0xe0000自古就是BIOS的基地址,读取这个via/dev/mem会直接从ROM中读取(除非BIOS在启动过程中用shadow RAM替换了自己,但还是那句话)与 Linux 无关)。

相关内容