重启udev的正确方法是什么?

zer*_*kms 51 networking udev

我已将eth1界面名称更改为eth0. udev现在如何要求重新读取配置?

service udev restart
Run Code Online (Sandbox Code Playgroud)

udevadm control --reload-rules
Run Code Online (Sandbox Code Playgroud)

不要帮忙。那么除了重新启动之外还有其他有效的方法吗?(是的,重启有助于解决这个问题)

  • 是的,我知道我应该在命令前面加上sudo,但是我上面发布的任何一个都不会改变ifconfig -a输出:我仍然看到eth1,而不是eth0

  • 我刚刚更改了NAMEudev-rule 行的属性。不知道有什么原因使这无效。

执行我上面发布的两个命令都没有任何错误,但它们只是不会更改ifconfig -a输出中的实际接口名称。如果我执行重新启动 - 则接口名称会按预期更改。

出于开发目的,我编写了一些脚本来克隆虚拟机(VirtualBox 驱动)并以某种方式预先设置它们。

所以我执行一个命令来克隆 VM,启动它,只要网络接口 MAC 发生变化 -udev将第二个规则添加到网络持久性规则中。机器第一次启动后,有两条规则:

  • eth0,不存在,只要存在于原始VM镜像MAC中
  • eth1,它存在,但所有文件中的所有配置都指向eth0,所以对我来说不是那么好

所以我sed删除了行eth0(它在克隆图像中已经过时且无用)并替换eth1eth0. 所以目前我有有效的持久规则,但仍然eth1存在/dev.

问题:我不想重新启动机器(这需要另外的时间,这在构建虚拟机阶段不是一件好事),只想/dev用一些命令重建我的机器,这样我就有了随时可用的虚拟机没有任何重启。

aka*_*ola 34

我不知道这是否有助于重新加载网络配置,但是当我修改/etc/udev/rules.d/70-persistent-cd.rules以更正 DVD 设备链接从/dev/dvd1到 时/dev/dvd,我不得不运行

sudo udevadm trigger
Run Code Online (Sandbox Code Playgroud)

以创建新链接。

  • 我相信 `sudo udevadm trigger --action=change` 更安全,根据这封关于对 `udev` 做什么安全和不安全的电子邮件:https://lists.ubuntu.com/archives/ubuntu-devel/2009-一月/027260.html (4认同)

小智 22

您必须以正确的顺序组合此处给出的所有建议:

  1. 关闭网络 service networking stop
  2. 从内核卸载驱动模块
    1. 找到模块的名称lspci -v并查找“正在使用的内核驱动程序:”
    2. modprobe -r <driver module>
  3. 重新加载 udev 规则 udevadm control --reload-rules
  4. 触发新规则 udevadm trigger
  5. 加载驱动程序 modprobe <driver module>
  6. 重启网络 service networking start
  7. (可选)iptableseth接口启动之前重新运行任何引用接口名称的脚本。

我怀疑第 4 步或第 5 步并不是真正需要的,但这些步骤对我有用。您可以在步骤 4 和步骤 2.1 之后检查触发器命令是否已经执行了步骤 5,如果这样做,请编辑此答案以反映您的发现。


use*_*674 6

我有一个类似的问题。因为我不想花时间重新启动,所以我使用 Chris Wesseling 的建议运行了一个班轮。

/etc/init.d/networking stop && modprobe -r tg3 && udevadm control --reload-rules && udevadm trigger && modprobe tg3 && /etc/init.d/networking start

这对我使用 Ubuntu 12.04.02 服务器有效。我的网卡使用的是 tg3 内核模块驱动程序,因此将 tg3 更改为您的接口正在使用的模块。我找到了我的用于/etc/udev/rules.d/70-persistent-net.rules

PCI 设备 0x14e4:/sys/devices/pci0000:00/0000:00:1c.4/0000:02:00.1 (tg3) <-nic 内核模块驱动程序

我遇到的一个问题是一条糟糕的路由,我用一个简单的路由添加命令修复了它。感谢克里斯的帮助!


小智 5

这对我有用(无需重新启动)

udevadm control --reload-rules ; udevadm trigger
Run Code Online (Sandbox Code Playgroud)

感谢此页面的作者:http : //memoryfail.wordpress.com/2013/04/02/renaming-network-device-names/


Eli*_*gan 3

sudo /etc/init.d/udev restart应该可以解决问题。您尝试过的一些命令如果使用 运行sudo,也可能有效。


小智 3

这应该可以安全地完成:

sudo reload udev
Run Code Online (Sandbox Code Playgroud)

因为我使用这个命令没有任何问题。