Linux 更改网口名称的一种方法

现象描述:

        最近工作中遇到一个需求,我们的linux板子上有两个网口,分别为eth0和eth1。现在需要在底层将eth0和eth1对调一下。

环境:

        linux 5.1

        开发硬件:rk3568

解决过程:

        首先我们需要了解一下linux下网口的名称是怎么来的,以下是我检索到的linux命名机制相关文章。

【Linux】【网络管理】Linux 系统中网卡命名规范_id_net_name_-CSDN博客

Linux的网口名字的命名规则_linux持久性接口命名规则 网络接口-CSDN博客

        从上可以了解到,linux随着自身的发展,是有不同的命名方式。观察我们所用的的网口,名称为 eth* ,为最基础的规则,即为内核原生命名方式。这种命名方式使得网口的顺序依赖与启动顺序,谁先启动谁就是eth0,后面是eth1以此类推。

        以下是两个不同网口初始化顺序下,网卡对应的编号:

从上图,我们发现,网口初始化顺序不同,对应eth顺序就会不同,印证了上述说法

        因此,如果在现行原生内核命名方式下修改网口名称的话,我们就得更改网口初始化的顺序。

那么如何更改网口初始化的顺序呢?

        我找到几篇介绍内核初始化顺序的文章:

linux 设备驱动加载的先后顺序 - yooooooo - 博客园 (cnblogs.com)

kernel:module_init模块加载顺序_linux 内核不同目录module_init执行的先后顺序是什么-CSDN博客

        里面介绍到,内核初始化是有初始化等级的,不同等级对应的初始化优先级不同。自然可以想到,两个网卡是同一优先级。而同一初始化等级下怎么调整启动顺序呢?可以从上面看到,可能跟编译顺序有关,因此调整我们的编译顺序。

如何调整编译顺序?

        直觉告诉我,设备树顺序可能对应编译的顺序。我们来尝试一下更改设备树的顺序。

经过更改设备树顺序,调换两个网口的位置,发现网口修改成功。

        

总结

        网口名称取决于选用什么命名规则,如果是内核命名规则,那就是由初始化顺序决定的,谁先连上谁就是eth0,而在同初始化优先级下,网口初始化顺序由编译顺序决定,通过修改设备树中的位置,即可达到更改编译顺序的目的。各位如果在初始化过程中遇到了异常现象,那么可以考虑可能是初始化顺序带来的影响。

        各位如果是其他命名规则,可以考虑修改udev规则来实现更换网口名称

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值