MACアドレスに依存せずにARMデバイスを一意に識別する方法は?

MACアドレスに依存せずにARMデバイスを一意に識別する方法は?

私は多くのARMデバイスを持っています。ハードウェアに違いはありません。 MACアドレスを使用せずに各デバイスの一意のIDを取得できますか?新しいカーネルと rootfs で NAND を再フラッシュしても、この ID は同じままでなければなりません。ハードウェアはAtmel AT91SAM9に基づいています。

答え1

/proc/cpuinfo からデバイスのシリアル番号を取得します。

grep Serial /proc/cpuinfo 
Serial      : 1651660a0642ebb0

(A20ベースのSoCからのものです。ラモボR1Banana Pi R1 および ArmBian/Jessie、カーネル 4.5.2 とも呼ばれる)

grep Serial /proc/cpuinfo 
Serial          : 64355040058f0d000000

(私はH3ベースのSocから取得したものです。オレンジフィルNo.1Armbian / Jessieカーネル3.4を使用)

Pythonを使用してRaspberry Piのシリアル番号を取得する

シリアル番号情報:固有でなければなりませんが、SoCごとに異なる方法で読み取られます。時々ソフトウェアまたは設定が失敗します。

SID登録ガイド

SIDのいくつかのユースケースには以下が含まれますが、これらに限定されません。
- デバイスごとに一意のMACアドレスを生成する
- RSAと同じキーで保存/使用
- 内部シリアル番号を書く

Raspberry Piは通常、この番号をビデオコーデックライセンスの購入時にSNとして使用します。また、読み取りが失敗する可能性があることに注意してください。u-bootが正しく設定されていない場合

すべてのARM SoCがこの機能をサポートしているわけではありません。更新された質問によると、Atmel AT91SAM9にはこの機能がないようです。しかし、他の人が検索できるように、この回答をここに残しておきます。

答え2

多くのデバイスのチップが固有のIDを提供することもできます。デバイスボードにeMMCチップがあり、Linuxカーネルにsysエントリがある可能性があります。パスは次のとおりです。

/sys/bus/mmc/devices/mmc1:0000/serial

複数のデバイスを確認し、データシートを参照して番号が実際に一意であることを確認してください。また、チップメーカーは間違いをする可能性があります。チップの製造中に偶然同じ固有のIDを持つ複数のチップを製造したケースを見たことがあるので、可能であれば2つのチップシリアル番号を接続してください。

答え3

より移植可能なアプローチを探している読者には、次のことがdmidecode役に立ちます。

pi : 12:26:23 /root# dmidecode -s system-serial-number
1000000059d267e5

関連情報