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ファームウェアはこのアドレス空間の一部です(コンピュータの電源投入中に実行するコードの一部が必要です)。

0xe0000したがって、Linuxは古くからBIOSのベースアドレスであった「SMBIOS情報をメモリにコピーしません」。この経由で読み取る/dev/memことはROMから直接読み取られます(起動プロセス中にBIOSがシャドウRAMに置き換えられない限り、まだ同じです)。文)はLinuxとは関係ありません)。

関連情報