Dmidecodeのソースコードを確認しました。
これを見た:
int fd=open("/dev/mem", O_RDONLY);
long fp=0xE0000L;
LinuxはすでにSMBIOS情報をメモリにコピーしているように見えますか?
/dev/mem
は、すべての物理アドレス空間へのアクセスを提供します。 BIOSファームウェアはこのアドレス空間の一部です(電源投入時に実行するには、コンピューターにコードが必要です)。
したがって、Linuxは「SMBIOS情報をメモリにコピーしませんでした」、0xe0000
は古くからBIOSのベースアドレスであり、これを/dev/mem
経由で読み取ると、ROMから直接読み取られます( BIOSが起動プロセス中にシャドウRAMに置き換えられた場合を除きますが、これもLinuxとは関係ありません。