玩客云Armbian Linux Mac地址生成

背景

为什么我需要自动生成玩客云linux的mac地址呢?

我正在制作内网穿透客户端的armlinux设备,基于玩客云主板刷上linux系统。由于我当前的直刷版本的mac地址一是固定的,
因此需要把mac作为动态,不可能说每刷一个机器我去修改它的mac地址。

玩客云S805原始直刷镜像地址如下:

Armbian_5.67_Aml-s805_Debian_stretch_default+EMMC直刷.img

固件软件打包下载 https://cloud.189.cn/t/6ryUv2aYBvam (访问码:a8ez)

非本人录制的刷机教程:https://www.bilibili.com/video/BV1Va411A7MJ/?spm_id_from=333.788.videocard.17&vd_source=ac11d92430a99b64a75d5670083ae370

需求

  • 1、mac地址随机生成;
  • 2、00开头;
  • 3、第一次开机后mac地址就固定不变了;
  • 4、mac地址生成写入是在网络启动之前;

生成Mac地址脚本

当前使用的刷机包里面没有这个脚本的,需要新建一个

boot分区下的 mac.sh 文件,内容如下

#!/bin/sh

# 保存的配置文件
MACFILE=/etc/network/mac
ETHNAME=eth0

# 注: 如果不需要mac以88开头,则删除88,并将cut -cl-10 改为 cut -cl-12
makeMacByMd5() {
    #使用$RANDOM和md5sum(嵌入式无需移植其他软件的优秀可选方案)
    echo "$(echo 00:01:`openssl rand -hex 4 | sed 's/\(..\)/\1:/g; s/.$//'`)"
}


# 检查配置是否存在, 否则生成MAC地址
if [ ! -f "$MACFILE" ]; then
 # Create HEX code to FILE (使其以88开头)
    echo `makeMacByMd5`  > $MACFILE
fi
MAC=`cat $MACFILE`

# Set mac
sed -ie "s/#hwaddress ether/hwaddress ether $MAC/g" /etc/network/interfaces

/sbin/ifconfig $ETHNAME down
/sbin/ifconfig $ETHNAME hw ether `cat $MACFILE`
/sbin/ifconfig $ETHNAME up
echo  "success"

system分区下的/etc/network/interfaces文件

新增一行#hwaddress ether

source /etc/network/interfaces.d/*

# Wired adapter #1
allow-hotplug eth0
no-auto-down eth0
iface eth0 inet dhcp
#address 192.168.0.100
#netmask 255.255.255.0
#gateway 192.168.0.1
#dns-nameservers 8.8.8.8 8.8.4.4

# 这里是新增的那行用于mac.sh 脚本替换的
#hwaddress ether

#       hwaddress ether # if you want to set MAC manually
#       pre-up /sbin/ifconfig eth0 mtu 3838 # setting MTU for DHCP, static just: mtu 3838


# Wireless adapter #1
# Armbian ships with network-manager installed by default. To save you time
# and hassles consider using 'sudo nmtui' instead of configuring Wi-Fi settings
# manually. The below lines are only meant as an example how configuration could
# be done in an anachronistic way:
#
#allow-hotplug wlan0
#iface wlan0 inet dhcp
#address 192.168.0.100
#netmask 255.255.255.0
#gateway 192.168.0.1
#dns-nameservers 8.8.8.8 8.8.4.4
#   wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
# Disable power saving on compatible chipsets (prevents SSH/connection dropouts over WiFi)
#wireless-mode Managed
#wireless-power off

# Local loopback
auto lo
iface lo inet loopback

配置脚本启动

在boot分区中有hdmi.sh 脚本文件,在前面增加

# mac fix
/boot/mac.sh

配置完毕后

使用晶晨的客制化工具,重新打包镜像后刷机。

image

来源: 雨林博客(www.yl-blog.com)