落書き以上、技術メモ以下

気になったことをまとめておきます。

Raspberry PiのMACアドレスはROMから読んでいない件

Raspberry PiのMACアドレスはEEPROMなどから読み込んではいないようです。

xinu/docs/arm/rpi/SMSC-LAN9512.rst at master · xinu-os/xinu · GitHub には次のように書いています。

To have a predetermined MAC address, a given SMSC LAN9512 must be attached to an EEPROM that contains the MAC address. But on the Raspberry Pi Model B, this EEPROM is not present; therefore, this driver must assign a MAC address itself. We do this by generating a MAC address from the board's serial number. This guarantees that a given Raspberry Pi will always have the same MAC address and that two Raspberry Pis are extremely unlikely to be assigned the same MAC address.

上にも書いているようにOS上で重複が生まれないようにMACアドレスを割り振っています。

Raspberry Pi Asterisk - VOIP-Info.jp Wiki にRaspberry PiではベンダーIDがB8:27:EBに割り当てられていると書いています。

確認してみるとRaspberry Piで標準的に使用されるraspbianやArch LinuxなどのOSではMACアドレスをベンダーID + CPUのシリアル番号で割り当てているようです。

実際に確認してみます。

$ ifconfig 
eth0      Link encap:Ethernet  HWaddr b8:27:eb:e9:4a:75  
          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:41340 errors:0 dropped:26 overruns:0 frame:0
          TX packets:13580 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:51048209 (48.6 MiB)  TX bytes:1228582 (1.1 MiB)

MACアドレスb8:27:eb:e9:4a:75のようです。

確かにベンダーIDがB8:27:EBになっています。

次に/proc/cpuinfoでCPUのシリアル番号を確認します。

$ cat /proc/cpuinfo 
processor   : 0
model name  : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS    : 2.00
Features    : swp half thumb fastmult vfp edsp java tls 
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part    : 0xb76
CPU revision    : 7

Hardware    : BCM2708
Revision    : 000d
Serial      : 000000002de94a75

Serialの下6桁がMACアドレスとして使用されているようです。

以上のように設定するため,基本的にMACアドレスが被るということはないとは思いますが,念の為に使用するOSのMACアドレスを確認してから使用したほうがよさそうです。