Czy istnieje możliwość przechowywania identyfikatora sprzętowego dla każdego urządzenia opartego na Raspberry Pi?
Załóżmy, że mam 10 niestandardowych urządzeń opartych na platformie Raspberry Pi, które są używane do zadań rozproszonych. W pewnym momencie, z jakiegoś powodu, chcę usunąć wszystko z jednego z nich. Jak mogę później ponownie zidentyfikować tablicę?
Czy Pi ma układ, który przechowuje unikalny identyfikator, taki jak numer seryjny dla każdej płyty? Jeśli nie, to czy mogę dodać pamięć (tylko do odczytu) (która może przechowywać prostą wartość, nawet gdy nie jest zasilana), aby móc się z nią komunikować przez GPIO w dowolnym momencie?
Jakie są alternatywy?
Odpowiedzi:
Tak, każda płytka ma numer seryjny. Metody uzyskania tego są opisane tutaj: Jak uzyskać numer seryjny?
źródło
Oto łatwiejszy w użyciu: adres MAC za pomocą automatycznej konfiguracji NDP protokołu IPv6. Jest to uniwersalna metoda, która ma zastosowanie do dowolnego interfejsu sieciowego.
Każda karta sieciowa, w tym USB używana w Pi, ma na przykład 48-bitowy adres MAC
14:cf:92:20:26:3c
.Każdy 48-bitowy adres MAC ma unikalne mapowanie jeden na jeden na adres EUI-64 poprzez maskowanie dwóch ostatnich bitów w trzecim bajcie (
92
do90
) i wstawienie bajtówfeff
między trzecim a czwartym bajtem. Wspomniany 48-bitowego adresu MAC może być odwzorowywane EUI-64:14cf:90fe:ff20:263c
.Proces automatycznej konfiguracji adresu IPv6 wykorzystuje protokół NDP do wykrycia 64-bitowego adresu sieciowego w adresie 128-bitowym. Ten proces da wszystkim urządzeniom w tej samej sieci ten sam 64-bitowy prefiks. Wyżej wymieniony EUI-64 służy do zapełniania 64-bitowego adresu stacji, co daje 128-bitowy globalnie unikalny adres IPv6. Jeśli więc masz prefiks sieci IPv6
2001:470:d:472::/64
, wspomniana karta sieciowa, jeśli zostanie użyta w tej sieci, będzie mieć globalny adres routowany przez IPv62001:470:d:472:14cf:90fe:ff20:263c
. Tak długo, jak twoje narzędzie do zarządzania jest skonfigurowane do korzystania z IPv6, po prostu podłącz do niego ten adres i powinno być dobrze.źródło
Podobnie jak w drugiej odpowiedzi Pi ma unikalny identyfikator, który jest powiązany z MAC.
W praktyce wygodniej jest mieć w sieci unikalność
hostname
. Używam następującego skryptu, aby ustawić nazwy na podstawieCPUID
.źródło
/sys/class/net/eth0/address
cat /var/lib/dbus/machine-id
czytaj więcejJeśli nie miałby identyfikatora (który, jak się wydaje, widzi odpowiedź Ralpha ), alternatywą może być układ z numerem seryjnym I2C. Są one naprawdę łatwe do podłączenia (interfejs szeregowy) i zapewniają unikalny numer seryjny.
Kilka przykładów:
źródło