如何在不重新启动的情况下重新生成70-persistent-net.rules?


14

该文件/etc/udev/rules.d/70-persistent-net.rules在重新引导期间在具有udev的Linux系统上自动生成(如果不存在)。但是我想知道如何在不重新引导服务器的情况下(使用命令)创建此规则文件。

我闲逛了一段时间,发现这个脚本生成了rules文件:

/lib/udev/write_net_rules

但是,不可能从命令行运行此脚本,因为(我假设)它想由udev启动,并且正确设置了一些环境变量。手动启动它会显示错误消息“缺少$ INTERFACE”。即使我在脚本开始之前设置了环境变量INTERFACE = eth0,它仍然会打印错误“缺少有效的匹配”。更不用说我有两个接口(eth0eth1),并且我希望为这两个接口生成规则文件。

我也在考虑触发这样的udev事件,希望它会从udev本身启动脚本,但是没有任何变化:

udevadm trigger --type=devices --action=change

因此,有人知道如何在/etc/udev/rules.d/70-persistent-net.rules不重新启动的情况下重新生成文件中的持久性网络规则吗?


你的分布是什么?它使用哪种初始化系统?
michas

1
我会说这无关紧要。我正在将Slackware与eUdev和sysvinit一起使用。我正在检查启动脚本,以查找执行了哪些操作后生成了规则文件,但只找到了udevadm触发器,并评论说这是生成持久性规则的命令,但是以某种方式,它仅在重新启动后才起作用,没有如果我手动运行它的效果。
Tomas M

1
这可能很重要,因为我在Arch上既70-persistent-net.rules没有the /lib/udev/write_net_rules脚本也没有该脚本。因此,我无法检查,但大概$INTERFACE是在脚本本身中设置了变量。它很可能作为参数传递。您可以向我们展示脚本的内容吗?
terdon

该脚本仅使用$INTERFACE变量。有更多的变量被简单地使用,而从未声明。这是因为它被udev调用,而udev在引导时运行脚本之前会设置所有env变量。
Tomas M

您实际上是否需要知道如何重新生成它,还是可以简单地编辑文件以反映新的现实?
roaima

Answers:


5

根据手册页--action=change是的默认值udevadm

   -c, --action=ACTION
       Type of event to be triggered. The default value is change.

因此,您最好--action=add改为尝试。它应该可以帮助:

/sbin/udevadm trigger --type=devices --action=add

intel_rapl:软件包0中找不到有效的rapl域
Tiina,

1

在Ubuntu Server 16.04LTS中,70-persistent-net.rules不存在。

我所做的只是运行:

ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules

然后使用创建文件

sudo vi /etc/systemd/network/10-internet.link

并添加以下内容

[Match] 
Path=pci-0000:(your device mac address)

[Link] 
Name=eth0 (or whatever you want to name it)

:wq 保存文件

然后重新启动并调整您的/ etc / network / interfaces文件。然后再次重启。


9
问题是“如何在不重新启动的情况下重新生成70-persistent-net.rules ”您的答案包含两次重新启动。这如何回答问题?
G-Man说'Resstate Monica''16

0

我遇到了同样的问题,但是我注意到我仍然可以在ip addr列表中看到接口。我使用以下内容(作为根用户):

# ip addr # to get my mac addresses
# export INTERFACE=eth0; export MATCHADDR="xx:xx:xx:xx:xx:xx"; /lib/udev/write_net_rules
# replace the 00's with the real mac addr

对每个接口重复此操作。这用于“恢复”我的文件。(注意:一次调用将列出所有接口,并添加重命名以匹配一个接口,因此我建议您在一次调用后查看输出文件)

操作系统与当前的UDEV实现和支持脚本之间肯定存在差异。要注意的是,当我成功完成此操作时,我正在使用CentOS 6.8。

信誉-我主要引用了该网站。有几条评论讨论修改脚本,但我更喜欢使用环境变量,因为它更干净:https : //access.redhat.com/discussions/1240213


废话-等一下 抱歉,该命令不起作用。我需要用我执行的步骤来更新答案
gravy21 '17

好的,我已经更新了我的实际修复方法。希望它适用于您的情况。
gravy21
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.