나는 많은 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를 가진 여러 칩을 생산한 사례를 본 적이 있으므로 가능하면 두 개의 칩 일련 번호를 연결하십시오.
답변3
보다 이식 가능한 접근 방식을 찾는 독자에게는 다음 dmidecode
이 유용할 수 있습니다.
pi : 12:26:23 /root# dmidecode -s system-serial-number
1000000059d267e5