私は多くの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のいくつかのユースケースには以下が含まれますが、これらに限定されません。
- デバイスごとに一意の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