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

我已将eth1接口的名称更改为eth0 。 如何让udev现在重新读取配置?

 service udev restart 

 udevadm control --reload-rules 

没有帮助。 除了重启之外,还有什么有效的方法吗? (是的,重启有助于解决这个问题)

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

  • 我刚刚更改了udev-rule line的NAME属性。 不知道这是无效的任何原因。

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

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

所以我执行命令来克隆VM,启动它,只要网络接口MAC被更改 – udev就会将第二条规则添加到网络持久规则中。 机器首次启动后,有两条规则:

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

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

问题:我不想重启机器(这需要另外一次,这对构建VM-stage来说不是好事)而只是想让我的/dev用一些命令重建,所以我已经准备好了 -使用VM而不重新启动。

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

 sudo udevadm trigger 

获得创建新链接。

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

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

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

我有类似的问题。 由于我不想花时间重新启动,因此我使用Chris Wesseling的建议运行了一个class轮。

/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服务器。 我的nics正在使用tg3内核模块驱动程序,因此将tg3更改为您的接口使用的模块。 我找到了我在/etc/udev/rules.d/70-persistent-net.rules使用的/etc/udev/rules.d/70-persistent-net.rules

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

我遇到的一个问题是一条糟糕的路线,我用简单的路线添加命令修复了这条路线。 谢谢Chris的帮助!

这对我有用(无需重启)

 udevadm control --reload-rules ; udevadm trigger 

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

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

这应该安全地做到:

 sudo reload udev 

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

我已经研究了一段时间,目的非常相似,而且我还没有找到一种方法来改变实时系统中的网络接口名称。

我所采用的解决方法是删除模板中的/etc/udev/rules.d/70-persistent-net.rules文件,这意味着在下次启动时,它会将任何网卡视为eth0。

您需要重新加载udev才能触发规则更改,但除非卸载/重新加载驱动程序模块,否则不会重命名设备。

所以在udev重载后modprobe -r e1000 && modprobe e1000应该可以解决问题。 当然,如果您需要网络并且只有e1000接口,请不要这样做。

 udevadm trigger 

它将在这里输入链接描述

因此,对于使用Ubuntu 12.04的VirtualBox,我经常在以太网和无线之间切换。

因此,当我的连接发生变化时,我必须从设备>网络设置中选择桥接适配器。 “Intel 82579LM千兆网络连接”或“Intel Centrino Ultimate-N 6300 AGN”。

这样做之后,我就可以跑了

 sudo modprobe -r e1000 sudo service udev restart sudo modprobe e1000 ping google.com # To test I ran this between each command. 

这只是在阅读完上述所有答案后对我的结果的解释。