我知道一个进程根据/lib/udev/rules.d/75-persistent-net-generator.rules中的规则生成持久性网卡名称。 我也知道如何完全禁用这个过程,一个简单的
echo '#' > /etc/udev/rules.d/75-persistent-net-generator.rules
但我读过我也可以写我自己的规则文件给这个接口一个名字 – 持久化规则生成器忽略了接口,如果一个名字已经设置了“(/etc/udev/rules.d/README确认这个有可能)。
你能提供关于如何编写这些规则的说明和/或例子吗? (我主要关心Debian / Ubuntu,而CentOS则less一些)。 在我的情况下,我想添加如下规则:
作为为什么我要编写自定义规则的具体示例:我有两个相同的服务器,一个板载LAN和一个PCI LAN。 在硬件故障的情况下,我希望能够将硬盘从硬件#1移动到硬件#2,重要的是eth0继续指向板卡和eth1到PCI卡(没有人想在中间布线的HW故障恐慌)。 我目前的解决方法的工作,但是是很多工作[1],所以我想知道如果写自定义规则将允许我expression上述规则
[1]在硬件#1中安装操作系统,并保留/etc/udev/rules.d/70-persistent-net.rules的副本。 将磁盘移到HW#2并保留同一文件的第二个副本。 连接两个副本并手动编辑NAME =“ethX”部分。 用我的版本replace/etc/udev/rules.d/70-persistent-net.rules。 最后禁用自动创build一个新的70-persistent-net.rules使用
echo '#' > /etc/udev/rules.d/75-persistent-net-generator.rules
要回答您的具体问题,请将此添加到persistent-net.rules:
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="AA:AA:AA:AA:AA:AA", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="BB:BB:BB:BB:BB:BB", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="CC:CC:CC:CC:CC:CC", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1" SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="DD:DD:DD:DD:DD:DD", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
单独留下persistent-net-generator.rules。 udev不会覆盖手动添加的规则,但生成器规则将像往常一样为新卡添加新的规则。
通常我想在命名接口方面做的是交换eth0和eth1。 我让系统创build文件/etc/udev/rules.d/70-persistent-net-rules ,然后通过切换名称进行编辑,重新启动,然后在networkingconfiguration文件中configuration接口节。 单调乏味,但完成了。 这个文件的顶部有一个提示:
/etc/udev/rules.d/70-persistent-net.rules # This file was automatically generated by the /lib/udev/write_net_rules # program, run by the persistent-net-generator.rules rules file. # # You can modify it, as long as you keep each rule on a single # line, and change only the value of the NAME= key. # PCI device 0x8086:0x108c (e1000e) (custom name provided by external tool) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:25:90:22:74:24", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"