Есть ли возможность хранить аппаратный идентификатор для каждого устройства на базе Raspberry Pi?
Допустим, у меня есть 10 пользовательских устройств на платформе Raspberry Pi, которые используются для распределенных задач. В какой-то момент, по какой-то причине, я хочу стереть все с одного из них. Как я могу повторно идентифицировать доску после этого?
Есть ли у Pi чип, в котором хранится уникальный идентификатор, например, серийный номер для каждой платы? Если нет, могу ли я добавить (только для чтения) память (которая может хранить простое значение, даже если он не включен), чтобы иметь возможность общаться с ним через GPIO в любое время?
Какие есть альтернативы?
Ответы:
Да, у каждой доски есть серийный номер. Методы для получения этого описаны здесь: Как я могу получить серийный номер?
источник
Здесь проще в использовании: MAC-адрес через автоматическую настройку IPv6 NDP. Это универсальный метод, который применим к любому сетевому интерфейсу.
Каждый сетевой адаптер, включая USB, используемый на Pi, имеет, например, 48-битный MAC-адрес
14:cf:92:20:26:3c
.Каждый 48-битный MAC-адрес имеет уникальное взаимно-однозначное сопоставление с адресом EUI-64, маскируя последние два бита в третьем байте (
92
to90
) и вставляя байтыfeff
между третьим и четвертым байтом. Выше 48-битные МАС могут быть отображены в EUI-64:14cf:90fe:ff20:263c
.Процесс автоматической настройки адреса IPv6 использует протокол NDP для обнаружения 64-разрядного сетевого адреса в 128-разрядном адресе. Этот процесс даст всем вашим устройствам в одной сети одинаковый 64-битный префикс. Вышеупомянутый EUI-64 используется для заполнения адреса 64-битной станции, в результате чего получается 128-битный глобально уникальный адрес IPv6. Таким образом, если у вас есть сетевой префикс IPv6
2001:470:d:472::/64
, вышеупомянутая сетевая карта при использовании в этой сети будет гарантированно иметь глобально маршрутизируемый адрес IPv62001:470:d:472:14cf:90fe:ff20:263c
. Пока ваш инструмент управления настроен на использование IPv6, просто вставьте в него этот адрес, и все будет хорошо.источник
Как и в другом ответе, Pi имеет уникальный идентификатор, который связан с MAC.
На практике для сетей удобнее иметь уникальный
hostname
. Я использую следующий скрипт, чтобы установить имена на основеCPUID
.источник
/sys/class/net/eth0/address
cat /var/lib/dbus/machine-id
Читать далееЕсли у него не будет идентификатора (который, как может показаться, см . Ответ Ральфа ), альтернативой может быть чип серийного номера I2C. Они действительно просты в подключении (последовательный интерфейс) и предоставляют уникальный серийный номер.
Некоторые примеры:
источник