gpt4 book ai didi

linux - 如何使用connman设置以太网接口(interface)MAC地址

转载 作者:太空狗 更新时间:2023-10-29 12:28:05 29 4
gpt4 key购买 nike

我有一个嵌入式系统,要求我从闪存中提取一个 MAC 地址,并在它启动时将其传递到以太网接口(interface)。传统上,我在初始化脚本中修改了对 ifconfig 的调用,以仅将从闪存中提取的 MAC 作为 hw ether 参数传递。

我正在使用的系统使用 connman 来处理网络连接。嵌入式系统将始终具有单个以太网连接,并在闪存中以自定义格式具有单个匹配的 MAC 地址。 connman 在接口(interface)可用时使用,因此拥有一个动态系统来处理接口(interface)的启动和关闭以及配置它是有帮助的。

是否可以将 MAC 传递给 connman 以类似于我之前使用 ifconfig 所做的方式使用,如果可以,怎么做?

或者,是否可以将 MAC 作为引导参数传递给内核,以便 connman 永远不必知道这一点?我可以在 U-Boot 中将 MAC 从闪存中取出,但以太网设备对 U-Boot 不可用。

最佳答案

Alternatively is it possible to pass the MAC as a boot parameter to the kernel so that connman never has to know about this?

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

查看 U-Boot Environment Variables有关变量的文档。

相关文档片段:

ethaddr: Ethernet MAC address for first/only ethernet interface (= eth0 in Linux). This variable can be set only once (usually during manufacturing of the board). U-Boot refuses to delete or overwrite this variable once it has been set.

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

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

如果 ethaddr 尚未在您的 U-Boot 引导行中使用,那么您需要做的不仅仅是上述操作。有关如何在系统上配置它的示例,请查看 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}'

关于linux - 如何使用connman设置以太网接口(interface)MAC地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35890942/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com