Hack in random, but valid MAC address in arm64 base image

This is a hack, but it provides a way to automatically
generate a unique MAC address to devices from a single
arm64 base image.  The MAC address is a valid unicast
locally administered address, however the vendor field
is randomized.

Bug: 143254418
Test: local build
Change-Id: I907e1ff8850b849bba0ec4b6ad262e33c666aeb0
diff --git a/tools/create_base_image_arm.sh b/tools/create_base_image_arm.sh
index 8302c85..5d4ac07 100755
--- a/tools/create_base_image_arm.sh
+++ b/tools/create_base_image_arm.sh
@@ -129,6 +129,7 @@
 	tmpfile=`mktemp`
 	bootenv=`mktemp`
 	cat > ${tmpfile} << "EOF"
+ethaddr=00:00:00:00:00:00
 bootdelay=2
 baudrate=1500000
 scriptaddr=0x00500000
diff --git a/tools/flash-blk-dev.sh b/tools/flash-blk-dev.sh
index e5381e0..d4568c2 100755
--- a/tools/flash-blk-dev.sh
+++ b/tools/flash-blk-dev.sh
@@ -101,6 +101,19 @@
 		elif [ "$part_type" == "GPT" ]; then
 			parts=`sudo gdisk -l  /dev/${blk_dev} | grep "^Number" -A999 | tail -n +2 | wc -l`
 			FIRST_SECTOR=`sudo gdisk -l /dev/${blk_dev} 2>/dev/null | tail -1 | tr -s ' ' | cut -d" " -f3`
+
+			if [ ${parts} -ge 2 ]; then
+				hexchars="0123456789abcdef"
+				valid2ndchar="26ae"
+				mac=`echo -n ${hexchars:$(( $RANDOM % 16 )):1}`
+				mac+=`echo -n ${valid2ndchar:$(( $RANDOM % 4 )):1}`
+				mac+=`for i in {1..10}; do echo -n ${hexchars:$(( $RANDOM % 16 )):1}; done | sed -e 's/\(..\)/:\1/g'`
+
+				envfile=`mktemp`
+				dd if=/dev/${blk_dev}2 of=${envfile}
+				sed -i "s/00:00:00:00:00:00/${mac}/" ${envfile}
+			fi
+
 			sudo sgdisk -d${parts} /dev/${blk_dev} >/dev/null 2>&1
 			sudo sgdisk -a1 -n:${parts}:${FIRST_SECTOR}:- -A:${parts}:set:2 -t:${parts}:8305 -c:${parts}:rootfs /dev/${blk_dev} >/dev/null 2>&1
 			sudo e2fsck -fy /dev/${blk_dev}${parts} >/dev/null 2>&1