mediatek: store MAC address in boot partition on Banana Pi R2

Like many boards, the Banana Pi R2 doesn't have permanant storage of
its MAC address, and we store the first random one that the kernel
generates in order to use it later and at least be consistent.

Store it in the FAT boot partition, just as the U7623 board (and others)
do.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
master
David Woodhouse 4 years ago committed by Petr Štetiar
parent 7adc29f59e
commit e19ffb25d9

@ -1,23 +1,19 @@
# Copyright (C) 2018 OpenWrt.org # Copyright (C) 2018 OpenWrt.org
RECOVERY_PART=/dev/mmcblk0p1 . /lib/functions.sh
. /lib/functions/system.sh
preinit_set_mac_address() { set_recovery_mac_address() {
local RECOVERY_PART="$1"
local mac local mac
. /lib/functions.sh if [ -b $RECOVERY_PART ]; then
. /lib/functions/system.sh insmod nls_cp437
insmod nls_iso8859-1
case $(board_name) in insmod fat
unielec,u7623-02-emmc-512m) insmod vfat
if [ -b $RECOVERY_PART ]; then mkdir -p /tmp/recovery
insmod nls_cp437 if mount -o rw,noatime $RECOVERY_PART -t vfat /tmp/recovery; then
insmod nls_iso8859-1
insmod fat
insmod vfat
mkdir -p /tmp/recovery
mount -o rw,noatime $RECOVERY_PART /tmp/recovery
if [ -f "/tmp/recovery/mac_addr" ]; if [ -f "/tmp/recovery/mac_addr" ];
then then
mac=$(cat /tmp/recovery/mac_addr) mac=$(cat /tmp/recovery/mac_addr)
@ -28,17 +24,34 @@ preinit_set_mac_address() {
sync sync
umount /tmp/recovery umount /tmp/recovery
rm -rf /tmp/recovery rmdir /tmp/recovery
fi
ip link set dev wan address $mac 2> /dev/null ip link set dev wan address $mac 2> /dev/null
mac=$(macaddr_add $mac 1) mac=$(macaddr_add $mac 1)
ip link set dev lan0 address $mac 2>/dev/null ip link set dev lan0 address $mac 2>/dev/null
ip link set dev lan1 address $mac 2>/dev/null ip link set dev lan1 address $mac 2>/dev/null
ip link set dev lan2 address $mac 2>/dev/null ip link set dev lan2 address $mac 2>/dev/null
ip link set dev lan3 address $mac 2>/dev/null ip link set dev lan3 address $mac 2>/dev/null
fi
fi
}
preinit_set_mac_address() {
local rootpart
case $(board_name) in
bananapi,bpi-r2)
rootpart=$(cat /proc/cmdline)
rootpart="${rootpart##*root=}"
rootpart="${rootpart%%p3 *}"
if [ "$rootpart" = "/dev/mmcblk0" -o "$rootpart" = "/dev/mmcblk1" ]; then
set_recovery_mac_address ${rootpart}p2
fi
;;
unielec,u7623-02-emmc-512m)
set_recovery_mac_address /dev/mmcblk0p1
;; ;;
esac esac
} }

Loading…
Cancel
Save