#prefix #naming #udev #helper #user-defined #networking #let

app prefixdevname

基于用户定义前缀的网络接口命名的udevhel utility工具

1 个不稳定版本

0.2.0 2022年11月16日

#12#udev

MIT 许可证

33KB
810 代码行

prefixdevname | Rust CI codecov

简单的udevhel utility工具,允许您定义用于NIC命名的自己的前缀。

许可证

MIT

从源码构建

prefixdevname是一个Rust项目,因此我们使用cargo作为我们的构建工具,但是该项目还包括Makefile以简化一些常见任务。例如,单元测试使用libumockdev在非特权用户命名空间中模拟sysfs,这需要手动配置,由make的check目标处理。

make
make check
sudo make install

贡献

如果您在prefixdevname中发现问题,请在Github上提交一个问题。当然,您也可以提交PR。

安装和使用

Prefixdevname(名称灵感来自Dell的biosdevname)需要非常少的设置。最终用户需要安装该软件包,并在内核命令行上指定用于NIC命名的所需前缀。例如,以下是Fedora的设置步骤:

dnf install prefixdevname
grubby --update-kernel=$(grubby --default-kernel) --args="net.ifnames.prefix=net"
reboot

每次出现新的网络硬件时,prefixdevname都会启动,并尝试确定下一个可能的设备名称,同时尊重我们的枚举。我们以“<PREFIX><INDEX>”的形式分配设备名称,例如在net0和net1已存在的情况下为net2。然后,工具在/etc/systemd/network目录中生成新的.link文件,将名称应用于刚刚出现的MAC地址的接口。因此,配置在重新启动后是持久的(否则意义不大)。

限制

重新启动后,计算机将使用“net”前缀命名所有以太网网络设备,例如net0。如果对已部署的系统进行重命名,必须确保您的网络配置工具知道新的命名方案(例如,在Fedora中,必须相应地调整ifcfg文件)。如果命名方案在系统安装时已经使用,并且使用基于前缀的名称生成网络配置,则这不是问题。

用户定义的前缀必须是符合以下正则表达式的ASCII字符串,[[:alpha:]]+,且长度必须小于15个字符。

另一个限制是您的前缀不能与Linux上用于网络接口命名的任何已知名前缀冲突。具体来说,您不能使用以下任何前缀:

  • eth
  • eno
  • ens
  • em

在添加新网络硬件并被重命名后,强烈建议运行 "dracut -f",以确保新生成的.link配置文件也被包含在initramfs镜像中。此存储库还包含处理将.link文件包含到initramfs镜像中的非常基础的dracut模块。

依赖项

~4–13MB
~126K SLoC