背景
dmidecodeユーティリティは--dump-bin
オプションを使用してネイティブバイナリダンプを生成できます。
root@here:~$ dmidecode --dump-bin foo.dump
他のシステムで再利用して、dmidecodeが元のシステムで実行されたのと同じ効果を生成できます。
me@elsewhere:~$ dmidecode --dump-bin foo.dump
# dmidecode 2.12
SMBIOS 2.7 present.
68 structures occupying 2688 bytes.
Table at 0xBAE9D000.
[...]
一部のコンピュータにはこれらのバイナリがあり、それを使用してdmidecodeをラップするスクリプトをテストします(ハードウェア設定が異なるようにdmidecodeの動作をシミュレートする必要があります)。
質問
しかし、いくつかのマシンには生のバイナリはありませんが、する4.*カーネルによって公開された/sys/firmware/dmi/tablesのコピーを入手してください。 kernel.org ドキュメント説明する:
[...] dmi/tables は、/dev/mem から読み取るユーティリティではなく、sysfs を介してネイティブ SMBIOS エントリポイントと DMI テーブルを提供します。ネイティブSMBIOSエントリポイントとDMIテーブルはバイナリプロパティとして表示され、以下からアクセスできます。
/sys/firmware/dmi/tables/smbios_entry_point /sys/firmware/dmi/tables/DMI
これら2つのテーブルを使用して、完全なDMI情報を取得できます。
質問
最初の例のように再利用できるように、/sys/firmware/dmi/tablesファイルを使用して元のバイナリダンプを再設定できますか?
私はこれらのファイルをまとめましたが、成功しませんでした(Invalid entry length (0). DMI table is broken! Stop.
)。
ベストアンサー1
コードを参照してください。https://github.com/mirror/dmidecode/blob/master/dmidecode.c。頑張ってください。
例: 7f + 00 + 80 + 30 + 7b = 18a
18aは8bit = 8aを保持します。
DMI の新しいアドレスは 0x20 でハードコーディングされます。