问题描述
我已将eth1
接口的名称更改为eth0
。如何向udev
询问配置re-read?
service udev restart
和
udevadm control --reload-rules
没有帮助。除了重启之外,还有什么有效的方法吗? (是的,重启有助于解决这个问题)
-
是的,我知道我应该在
sudo
之前添加命令,但我在上面发布的任何一个都没有改变ifconfig -a
输出:我仍然看到eth1
,而不是eth0
。 -
我刚刚更改了udev-rule系列的
NAME
属性。不知道这是无效的任何原因。
执行上面发布的两个命令没有任何错误,但它们只是不改变ifconfig -a
输出中的实际接口名称。如果我执行reboot – 那么接口名称会按预期更改。
出于开发目的,我编写了一些脚本,以某种方式克隆虚拟机(VirtualBox-driven)和pre-sets。
因此,我执行命令来克隆VM,启动它并且只要网络接口MAC发生更改 – udev
就会将第二条规则添加到网络持久规则中。机器首次启动后,有两条规则:
-
eth0
,不存在,只要它存在于原始VM映像MAC中 -
eth1
,存在,但所有文件中的所有配置都是指eth0
,所以对我来说不是那么好
因此,我使用sed
删除了eth0
的行(它在克隆图像中已过时且无用)并用eth0
替换eth1
。所以目前我有有效的持久性规则,但/dev
中仍有eth1
。
问题:我不想重新启动机器(这将需要另一次,这对building-VM-stage来说不是好事)并且只是想让我的/dev
重建一些命令所以我有ready-to-use VM没有任何重新启动。
最佳解决方法
我不知道这是否有助于重新加载网络配置,但当我修改/etc/udev/rules.d/70-persistent-cd.rules
以纠正从/dev/dvd1
到/dev/dvd
的DVD设备链接时,我不得不运行
sudo udevadm trigger
获得创建新链接。
次佳解决方法
您必须以正确的顺序组合此处给出的所有建议:
-
打开网络
service networking stop
-
从内核卸载驱动程序模块
-
找到模块
lspci -v
的名称并查找“正在使用的内核驱动程序:” -
modprobe -r <driver module>
-
-
重新加载udev规则
udevadm control --reload-rules
-
触发新规则
udevadm trigger
-
加载驱动程序
modprobe <driver module>
-
重新启动网络
service networking start
-
(可选)Re-run任何
iptables
脚本在引发之前引用了eth
接口名称。
我怀疑第4步或第5步并不是真的需要,但这些步骤对我有用。您可以在步骤4之后使用步骤2.1检查触发器命令是否已执行步骤5,编辑此答案以反映您的结果(如果您这样做)。
第三种解决方法
我有类似的问题。由于我不想花时间重新启动,因此我使用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服务器。我的nics正在使用tg3内核模块驱动程序,因此将tg3更改为您的接口使用的模块。我找到了我在/etc/udev/rules.d/70-persistent-net.rules
中使用的那些:
PCI device 0x14e4:/sys/devices/pci0000:00/0000:00:1c.4/0000:02:00.1 (tg3) <-kernel module driver for the nic
我遇到的一个问题是一条糟糕的路线,我用简单的路线添加命令修复了这条路线。谢谢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
因为我使用此命令没有任何问题。