我在用着Ubuntu 12.04 LTS 服务器版本我正在修改/etc/udev/rules.d/70-persistent-net.rules
以定义我自己的以太网接口到 MAC 地址的映射;该文件最初是在/lib/udev/rules.d/75-persistent-net-generator.rules
系统安装时(或者在第一次启动时,我实际上不知道,这在这里并不重要)由规则生成的。
我如何确保我编辑的版本永远不会被任何东西覆盖?
删除持久网络生成器(如某些网站所建议的那样)并不是正确之事™按照文件本身的注释进行操作:它将被软件包的任何更新覆盖udev
。我正在寻找一种更正式的正确方法来禁用它。
确保它/etc/udev/rules.d/70-persistent-net.rules
确实存在就够了吗?也许还有其他事件可以触发它的再生?(例如,在系统中添加或删除以太网接口?)
答案1
禁用生成器的正确方法是用空文件覆盖它。 中的任何规则/etc/udev/rules.d
都将优先于 中的规则/lib/udev/rules.d
,因此只需创建一个空文件或符号链接到/dev/null
:
sudo touch /etc/udev/rules.d/75-persistent-net-generator.rules
-OR-
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
这是安全且面向未来的。
答案2
您应该查看此文件:/etc/udev/rules.d/README
然后您可以看到,您自己的 udev 规则文件的名称中的数字应该比 更高。因此,使用您自己的设置75-persistent-net-generator.rules
创建一个名为 的新规则文件。/etc/udev/rules.d/76-persistent-net.rules
答案3
额外的好处是避免此规则在批量生成中被重新生成。通常我在 DevOps 实践中使用它
for i in `cat /tmp/allnode.lst | awk '{print $1}'`; do echo $i; \
ssh $i 'mv /lib/udev/rules.d/75-persistent-net-generator.rules /tmp/'; done
allnode.lst 中的第 1 列是 IP 地址