首页 文章

如何使用connman设置以太网接口MAC地址

提问于
浏览
2

我有一个嵌入式系统,要求我从闪存中提取MAC地址,并在启动时将其传递给以太网接口 . 传统上我已经在init脚本中修改了对ifconfig的调用,只是将从闪存中取出的MAC作为 hw ether 参数传递 .

我正在使用的系统使用connman来处理网络连接 . 嵌入式系统将始终具有单个以太网连接,其中一个匹配的MAC地址采用自定义格式的闪存 . connman用于接口可用时更改,因此有一个动态系统来处理上下接口和配置它是有帮助的 .

是否有可能将MAC传递给connman以类似于之前使用ifconfig的方式使用,如果是,如何使用?

或者可以将MAC作为引导参数传递给内核,以便connman永远不必了解这一点?我可以在U-Boot中将MAC拉出闪存,但以太网设备不可用于U-Boot .

1 回答

  • 1

    或者可以将MAC作为引导参数传递给内核,以便connman永远不必了解这一点?

    是的,你可以使用U-Boot的 ethaddr 环境变量来做到这一点 .

    有关变量的文档,请查看U-Boot Environment Variables .

    相关文档摘要:

    ethaddr:第一个/唯一的以太网接口的以太网MAC地址(在Linux中为= eth0) . 该变量只能设置一次(通常在电路板制造期间) . 一旦设置了U-Boot,就拒绝删除或覆盖该变量 .

    它可能就像运行以下命令来设置环境变量并保存它一样简单(当然替换你的MAC地址):

    setenv ethaddr 11:22:33:44:55:66
    saveenv
    

    如果 ethaddr 不是't already used in your U-Boot boot line then you' ll需要做的不仅仅是以上 . 有关如何在系统上进行配置的示例,请查看How to set a fixed MAC address in a LeopardBoard DM36x .

    这是使用 ethaddr 的启动命令,上面的网站最终得到:

    setenv bootcmd 'setenv bootargs \${bootargs} davinci_emac.ethaddr=\${ethaddr}; nboot 0x82000000 0 \${kerneloffset}'
    

相关问题