web-dev-qa-db-ja.com

udevルールignore_device

私はFedora18を使用しています。/etc/udev/rules.d、新しいルールを追加しました(70-stm32.rules)次の内容:

SUBSYSTEM=="block", ENV{ID_MODEL}=="STM32_STLink", OPTIONS=="ignore_device"

次に、udevを再起動しました。

systemctl restart systemd-udevd.service

しかし、デバイスはまだ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
7
mrtworo

まず、キーの割り当て演算子==の代わりに、キーの一致演算子、つまり=を使用しています。
次に、これはOPTIONではなく、ENVIRONMENT変数です:ENV{UDISKS_IGNORE}。また、他のルールが上書きされないように、98-stm32.rulesのような大きな数値を使用します。
そうは言っても、次のルールが機能するはずです(私のシステムでは機能します)。

ENV{ID_SERIAL}=="STM32_STM32_STLink-0:0", ENV{UDISKS_IGNORE}="1"

実行:

udevadm control --reload

ルールをリロードします。

4
don_crissti
  • ignore_deviceはudevリリース148で削除されました。 リリースノート または 変更ログ を参照してください。

    お気づきの方もいらっしゃると思いますが、その使用を示唆するトピックはすべて古いものです(〜2009)。

    簡単な代替方法は、udisksを使用した配布の場合はENV{UDISKS_PRESENTATION_HIDE}="1"ENV{UDISKS_IGNORE}="1"を含む配布の場合はudisks2を使用することです。

    参照:Archlinux Wiki:Udisks

  • 他の可能な解決策はSYSFSを使用しています。 device/authorizeddevice/removeまたはdriver/unbindのいずれか。

6
user.dz