Gibt es eine Möglichkeit, eine Hardware-ID für jedes Raspberry Pi-basierte Gerät zu speichern?
Angenommen, ich habe 10 benutzerdefinierte Geräte auf Basis der Raspberry Pi-Plattform, die für verteilte Aufgaben verwendet werden. Irgendwann möchte ich aus irgendeinem Grund alles von einem von ihnen löschen. Wie kann ich das Board danach neu identifizieren?
Hat Pi einen Chip, der eine eindeutige ID wie eine Seriennummer für jede Karte speichert? Wenn nicht, kann ich einen (schreibgeschützten) Speicher hinzufügen (in dem ein einfacher Wert gespeichert werden kann, auch wenn er nicht mit Strom versorgt wird), um jederzeit über GPIO mit ihm kommunizieren zu können?
Was sind die Alternativen?
Antworten:
Ja, jede Karte hat eine Seriennummer. Methoden, um dies abzurufen, werden hier beschrieben: Wie erhalte ich die Seriennummer?
quelle
Dies ist eine einfachere Methode: MAC-Adresse über die automatische IPv6-NDP-Konfiguration. Dies ist eine universelle Methode, die auf jede Netzwerkschnittstelle anwendbar ist.
Jede Netzwerkkarte, einschließlich der auf dem Pi verwendeten USB-Karte, verfügt beispielsweise über eine 48-Bit-MAC-Adresse
14:cf:92:20:26:3c
.Jede 48-Bit-MAC-Adresse verfügt über eine eindeutige Eins-zu-Eins-Zuordnung zu einer EUI-64-Adresse, indem die letzten beiden Bits im dritten Byte (
92
bis90
) ausgeblendet und die Bytesfeff
zwischen dem dritten und vierten Byte eingefügt werden. Die zuvor erwähnte 48-Bit - MAC kann auf die EUI-64 abgebildet werden:14cf:90fe:ff20:263c
.Der automatische IPv6-Adresskonfigurationsprozess verwendet das NDP-Protokoll, um die 64-Bit-Netzwerkadresse in der 128-Bit-Adresse zu ermitteln. Durch diesen Vorgang erhalten alle Geräte im selben Netzwerk dasselbe 64-Bit-Präfix. Das oben erwähnte EUI-64 wird zum Auffüllen der 64-Bit-Stationsadresse verwendet, was zu einer global eindeutigen 128-Bit-IPv6-Adresse führt. Wenn Sie also das IPv6-Netzwerkpräfix haben
2001:470:d:472::/64
, wird der oben genannten Netzwerkkarte bei Verwendung in diesem Netzwerk eine global routbare IPv6-Adresse garantiert2001:470:d:472:14cf:90fe:ff20:263c
. Solange Ihr Management-Tool für die Verwendung von IPv6 konfiguriert ist, schließen Sie diese Adresse einfach an und schon kann es losgehen.quelle
Wie in der anderen Antwort hat der Pi eine eindeutige ID, die sich auf den MAC bezieht.
In der Praxis ist es für die Vernetzung praktischer, ein eindeutiges Merkmal zu haben
hostname
. Ich benutze das folgende Skript, um die Namen basierend auf festzulegenCPUID
.quelle
/sys/class/net/eth0/address
cat /var/lib/dbus/machine-id
Wenn es keine ID hätte (die, wie es scheint, Ralphs Antwort zeigt ), könnte eine Alternative ein I2C-Seriennummer-Chip sein. Diese sind sehr einfach anzuschließen (serielle Schnittstelle) und geben eine eindeutige Seriennummer an.
Einige Beispiele:
quelle