web-dev-qa-db-ja.com

LinuxはどのようにしてSMBIOS情報を/ dev / memに配置しますか?

Dmidecodeのソースコードを確認しました。

これを見た:

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

LinuxはすでにSMBIOS情報をメモリにコピーしているように見えますか?

2
GreenTea

/dev/memは、すべての物理アドレス空間へのアクセスを提供します。 BIOSファームウェアはこのアドレス空間の一部です(電源投入時に実行するには、コンピューターにコードが必要です)。

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

2
dirkt