如题,默认情况下,引导参数mac_addr为空,导致每次进入系统会使用随机分配的mac地址,但是随机mac会导致下次路由器ip变动。
现在想在u-boot中设置mac_addr地址。然后内核解析这个参数设置mac地址,但是实际情况是uboot可以设置,但是内核无法解析出来。
[ 0.000000] Kernel command line: ubi.mtd=sys ubi.block=0,rootfs earlyprintk=sunxi-uart,0x02500C00 clk_ignore_unused initcall_debug=0 console=ttyS3,115200 loglevel=8 root=/dev/ubiblock0_5 rootfstype=squashfs init=/pseudo_init partitions=mbr@ubi0_0:boot-resource@ubi0_1:env@ubi0_2:env-redund@ubi0_3:boot@ubi0_4:rootfs@ubi0_5:private@ubi0_6:rootfs_data@ubi0_7:UDISK@ubi0_8: cma=4M snum= mac_addr=E6:62:2C:5B:92:4E wifi_mac= bt_mac= specialstr= gpt=1 androidboot.hardware=sun8iw20p1 boot_type=5 androidboot.boot_type=5 gpt=1 uboot_message=2018.05-g2a1965a-dirty-config-dirty(12/09/2023-13:48:45) mbr_offset=1032192 disp_reserve=1536000,0x43eff000 aw-ubi-spinand.ubootblks=24 androidboot.dramsize=128
查看代码lichee/linux-5.4/drivers/net/ethernet/allwinner/sunxi-gmac.c
__setup("mac_addr=", set_mac_addr); 没有被调用,因为宏MODULE未定义。内核 make kernel_menuconfig 也没找到这个 MODULE 定义的配置项。
#ifdef MODULE
static int __init set_mac_addr(char *str)
{
char *p = str;
if (str && strlen(str))
memcpy(mac_str, p, 18);
return 0;
}
__setup("mac_addr=", set_mac_addr);
#endif
有谁知道啥原因?帮忙看看,谢谢!
离线