udev 规则 ignore_device

mrt*_*oro 8 linux fedora udev

我使用的是 Fedora 18。在 中/etc/udev/rules.d,我添加70-stm32.rules了以下内容的新规则 ( ):

SUBSYSTEM=="block", ENV{ID_MODEL}=="STM32_STLink", OPTIONS=="ignore_device"
Run Code Online (Sandbox Code Playgroud)

然后重启udev:

systemctl restart systemd-udevd.service
Run Code Online (Sandbox Code Playgroud)

但是设备似乎仍然被识别并安装为 USB 驱动器。

我的错误在哪里?

我想忽略以下设备

udevadm info /dev/sdb
P: /devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3:1.0/host8/target8:0:0/8:0:0:0/block/sdb
N: sdb
S: disk/by-id/usb-STM32_STM32_STLink-0:0
S: disk/by-path/pci-0000:00:14.0-usb-0:3:1.0-scsi-0:0:0:0
S: disk/by-uuid/A8D9-2F05
E: DEVLINKS=/dev/disk/by-id/usb-STM32_STM32_STLink-0:0 /dev/disk/by-path/pci-0000:00:14.0-usb-0:3:1.0-scsi-0:0:0:0 /dev/disk/by-uuid/A8D9-2F05
E: DEVNAME=/dev/sdb
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3:1.0/host8/target8:0:0/8:0:0:0/block/sdb
E: DEVTYPE=disk
E: ID_BUS=usb
E: ID_FS_TYPE=vfat
E: ID_FS_USAGE=filesystem
E: ID_FS_UUID=A8D9-2F05
E: ID_FS_UUID_ENC=A8D9-2F05
E: ID_FS_VERSION=FAT16
E: ID_INSTANCE=0:0
E: ID_MODEL=STM32_STLink
E: ID_MODEL_ENC=STM32\x20STLink
E: ID_MODEL_ID=3744
E: ID_PATH=pci-0000:00:14.0-usb-0:3:1.0-scsi-0:0:0:0
E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_3_1_0-scsi-0_0_0_0
E: ID_REVISION=0100
E: ID_SERIAL=STM32_STM32_STLink-0:0
E: ID_TYPE=disk
E: ID_USB_DRIVER=usb-storage
E: ID_USB_INTERFACES=:080650:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=STM32
E: ID_VENDOR_ENC=STM32\x20\x20\x20
E: ID_VENDOR_ID=0483
E: MAJOR=8
E: MINOR=16
E: MPATH_SBIN_PATH=/sbin
E: SUBSYSTEM=block
E: TAGS=:systemd:
E: USEC_INITIALIZED=33484404
Run Code Online (Sandbox Code Playgroud)

use*_*.dz 7

  • ignore_device已随 udev 版本 148 删除。请参阅发行说明更改日志

    如果您注意到,所有建议使用它的主题都是旧的(~ 2009)。

    一个快速的替代方法是使用:ENV{UDISKS_PRESENTATION_HIDE}="1"用于带有的分布udisksENV{UDISKS_IGNORE}="1"用于包含 的分布udisks2

    参考: Archlinux Wiki:Udisks

  • 其他可能的解决方案是使用 SYSFS。要么device/authorizeddevice/remove要么driver/unbind


don*_*sti 4

首先,您使用匹配键运算符,即而==不是分配键运算符:=
其次,它不是一个选项,而是一个环境变量:ENV{UDISKS_IGNORE}。另外,我会使用更高的数字,98-stm32.rules以防止其他规则覆盖它。
话虽这么说,以下规则应该有效(它在我的系统上有效):

ENV{ID_SERIAL}=="STM32_STM32_STLink-0:0", ENV{UDISKS_IGNORE}="1"
Run Code Online (Sandbox Code Playgroud)

跑步:

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

重新加载规则。