背景

背景

背景

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 でハードコーディングされます。

おすすめ記事