linux运行udev,重启udev的正确方法是什么?

问题描述

我已将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

重新加载udev规则udevadm control --reload-rules

触发新规则udevadm trigger

加载驱动程序modprobe

重新启动网络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)

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

第四种方法

这对我有用(无需重启)

udevadm control --reload-rules ; udevadm trigger

第五种方法

sudo /etc/init.d/udev restart应该做到这一点。您尝试过的一些命令(如果使用sudo运行)也可能有效。

第六种方法

这应该安全地做到:

sudo reload udev

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

参考资料

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 中,udev 是一种动态设备管理工具,它会自动识别和加载设备驱动程序。如果需要取消 udev 自动加载驱动,可以按照以下步骤进行操作: 1. 查看设备的 Vendor ID 和 Product ID。可以使用 lsusb 命令或者其他工具查看设备的 Vendor ID 和 Product ID。例如,假设我们要取消 udev 自动加载一个 USB 鼠标的驱动程序,可以使用 lsusb 命令查看鼠标的 Vendor ID 和 Product ID: ``` $ lsusb Bus 001 Device 002: ID 045e:07fd Microsoft Corp. Nano Transceiver 1.1 for Bluetooth Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 002: ID 046d:c077 Logitech, Inc. M105 Optical Mouse Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub ``` 在上面的输出中,我们可以看到 Logitech 鼠标的 Vendor ID 是 046d,Product ID 是 c077。 2. 创建一个 udev 规则文件。可以在 /etc/udev/rules.d 目录下创建一个新的规则文件。例如,创建一个名为 99-disable-mouse.rules 的规则文件: ``` $ sudo vi /etc/udev/rules.d/99-disable-mouse.rules ``` 在文件中添加以下内容: ``` ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c077", ENV{UDISKS_IGNORE}="1" ``` 上述规则中,ATTRS{idVendor} 和 ATTRS{idProduct} 分别指定设备的 Vendor ID 和 Product ID,ENV{UDISKS_IGNORE}="1" 表示忽略该设备。 3. 重启 udev 服务。可以使用以下命令重启 udev 服务: ``` $ sudo systemctl restart systemd-udevd.service ``` 重启服务后,udev 将不再自动加载指定设备的驱动程序。 需要注意的是,上述操作会影响整个系统中指定设备的驱动程序加载,因此需要谨慎操作。如果需要重新启用设备的驱动程序,可以删除 /etc/udev/rules.d 目录下的规则文件,并重启 udev 服务

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值