如何取消内核对网络接口的重命名?

如何取消内核对网络接口的重命名?

我自己编译了Linux 6.4.0的内核,并使用busybox创建了根文件系统。我定制了自己的Linux系统,并将其安装在一块有四个网口的嵌入式板上,使用斧头88772芯片。

我现在遇到一个问题:我的系统识别的网络端口名称类似于enx000ec6942ec5,随着MAC地址的变化而变化。但是,我希望网络端口名称是eth。我还可以将以太网端口 1 固定到eth0、以太网端口 2 固定到eth1、以太网端口 3 固定到eth2、以太网端口 4 固定到eth3。我在网上看到如果取消内核的rename属性就可以实现,但是我尝试了以下两种方法并没有解决我的问题。

顺便说一句,我的定制系统只是在Linux中进行了更改M,而没有修改内核源代码。YmenuconfigN

  1. 中关闭grub.cfg,但没有效果;

    set default=0
    set timeout=4
    
    set root=(hd0,gpt3)
    
    menuentry "GNU/Linux, Dobot-6.4.0-rt" {
      linux /bzImage rw root=/dev/mmcblk0p3 noprompt
    
      initrd /initrd.img-6.4.0-rt8
      GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
    }
    
  2. 这样,MAC需要固定,但是我需要多台设备使用,MAC不固定。

请问还有其他办法吗?

答案1

biosdevname如果您不使用 Dell 的旧网络接口重命名器脚本,则使用该参数是没有意义的。 (你可能不是。)

您可以使用net.ifnamesudev/systemd 指令来停止重命名。

但是我非常担心你在这里伤害了自己:你说“我希望它已修复ethX”,表明你希望存在多个以太网接口(你不必调用ethX,而只需调用eth0)。那就是确切地你的情况需要所谓的“可预测接口名称”:这些X名称ethX检测顺序。这可能而且经常是完全随机的。所以,eth0这双靴子可能是eth1下一只靴子。这就是重命名的原因!

你可能因此不想禁用重命名(!),因为未重命名的ethX名称不可靠。相反,无论 MAC 如何,您都可以net.ifname-policy=onboard,path,slot使名称保持相同。根本就不要使用古老的ethX约定! (它真的一开始这并不是一个好主意,因为计算机可以有多个以各种方式连接的网卡。该方案源于计算机通常没有多个接口、或者多个用于连接卡的总线或 PCI Express 的时代。基本上,到 1996 年,随着 USB 的出现,这种方案对于 PC 来说已经过时了!二十年前,PCI Express 进入 PC 市场,该ethX方案成为一个真正的问题,使得正确设置 Linux 变得困难。因此,“我们”通过使用不基于随机检测顺序而是基于固定特征的重命名解决了这个问题。由于某种原因,它仍然困扰着教程、指南,因此是底层软件的常见误解。)

相关内容