Правило Udev дважды сопоставляется со смартфоном в режиме хранения

У меня проблема с правилом udev, которое всегда сопоставляется дважды при подключении устройства. Я бы не спрашивал здесь, не был ли уверен, что я составил абсолютно правильное правило. Я думаю, что проблема не в самом правиле, но, во всяком случае, вот мое правило:

ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4e21", ENV{ID_FS_TYPE}=="vfat", OWNER="...me...", SYMLINK+=".../nexus", RUN+="/home/.../myscript"

Это связующее звено от Google, которое будет скопировано rsync, как только я его подключу. Это Сделано так: телефон подключается и спрашивает, должен ли он перейти в режим хранения, который я принимаю. Теперь первая проблема заключалась в том, что я не могу использовать что-то вроде ACTION = "add", так как устройство добавляется udev, пока оно еще не предоставляет файловую систему. я должен включить его в режим хранения, udev запускает новые события, распознающие больше информации о файловой системе (например, beeing vfat). Поэтому, чтобы не соответствовать моему правилу слишком рано, я использовал переменную окружения fs-type. Последний узел устройства для файловой системы телефонов (в данном случае) «/ dev / sdg» (без номера!)

Теперь правило всегда сопоставляется дважды, и когда я отслеживаю активность udev, он говорит:

KERNEL[33252.434094] add      /devices/pci0000:00/0000:00:16.2/usb3/3-2 (usb)
KERNEL[33252.434722] add      /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0 (usb)
KERNEL[33252.435005] add      /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18 (scsi)
KERNEL[33252.435139] add      /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/scsi_host/host18 (scsi_host)
UDEV  [33252.448355] add      /devices/pci0000:00/0000:00:16.2/usb3/3-2 (usb)
UDEV  [33252.450621] add      /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0 (usb)
UDEV  [33252.452331] add      /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18 (scsi)
UDEV  [33252.453618] add      /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/scsi_host/host18 (scsi_host)
KERNEL[33253.434071] add      /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0 (scsi)
KERNEL[33253.434133] add      /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0/18:0:0:0 (scsi)
KERNEL[33253.434289] add      /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0/18:0:0:0/scsi_disk/18:0:0:0 (scsi_disk)
KERNEL[33253.434353] add      /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0/18:0:0:0/scsi_device/18:0:0:0 (scsi_device)
KERNEL[33253.434396] add      /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0/18:0:0:0/scsi_generic/sg7 (scsi_generic)
KERNEL[33253.434528] add      /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0/18:0:0:0/bsg/18:0:0:0 (bsg)
UDEV  [33253.435261] add      /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0 (scsi)
KERNEL[33253.436359] add      /devices/virtual/bdi/8:96 (bdi)
UDEV  [33253.436418] add      /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0/18:0:0:0 (scsi)
KERNEL[33253.437187] add      /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0/18:0:0:0/block/sdg (block)
UDEV  [33253.437724] add      /devices/virtual/bdi/8:96 (bdi)
UDEV  [33253.438335] add      /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0/18:0:0:0/scsi_disk/18:0:0:0 (scsi_disk)
KERNEL[33253.438867] change   /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0/18:0:0:0/block/sdg (block)
UDEV  [33253.439476] add      /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0/18:0:0:0/scsi_device/18:0:0:0 (scsi_device)
UDEV  [33253.440782] add      /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0/18:0:0:0/scsi_generic/sg7 (scsi_generic)
UDEV  [33253.441059] add      /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0/18:0:0:0/bsg/18:0:0:0 (bsg)
KERNEL[33253.446210] change   /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0/18:0:0:0/block/sdg (block)
UDEV  [33253.465723] add      /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0/18:0:0:0/block/sdg (block)
UDEV  [33253.489562] change   /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0/18:0:0:0/block/sdg (block)
UDEV  [33253.499913] change   /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0/18:0:0:0/block/sdg (block)

и после активации режима хранения:

KERNEL[33311.201180] change   /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0/18:0:0:0/block/sdg (block)
KERNEL[33311.231579] change   /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0/18:0:0:0/block/sdg (block)
UDEV  [33315.817190] change   /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0/18:0:0:0/block/sdg (block)
UDEV  [33315.885089] change   /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0/18:0:0:0/block/sdg (block)

Не зная, что происходит в последних двух строках, их сходство заставляет меня думать, что это может быть проблемой при повторении некоторых событий udev. ... здесь вывод udevadm info -q all -n / dev / ...:

P: /devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0/18:0:0:0/block/sdg
N: sdg
S: christian/nexus
S: disk/by-id/usb-Google_File-CD_Gadget_30309C8C04B300EC-0:0
S: disk/by-label/NEXUS_S
S: disk/by-path/pci-0000:00:16.2-usb-0:2:1.0-scsi-0:0:0:0
S: disk/by-uuid/829D-18DB
E: DEVLINKS=/dev/.../nexus /dev/disk/by-id/usb-Google_File-CD_Gadget_30309C8C04B300EC-0:0 /dev/disk/by-label/NEXUS_S /dev/disk/by-path/pci-0000:00:16.2-usb-0:2:1.0-scsi-0:0:0:0 /dev/disk/by-uuid/829D-18DB
E: DEVNAME=/dev/sdg
E: DEVPATH=/devices/pci0000:00/0000:00:16.2/usb3/3-2/3-2:1.0/host18/target18:0:0/18:0:0:0/block/sdg
E: DEVTYPE=disk
E: ID_BUS=usb
E: ID_FS_LABEL=NEXUS_S
E: ID_FS_LABEL_ENC=NEXUS_S
E: ID_FS_TYPE=vfat
E: ID_FS_USAGE=filesystem
E: ID_FS_UUID=829D-18DB
E: ID_FS_UUID_ENC=829D-18DB
E: ID_FS_VERSION=FAT32
E: ID_INSTANCE=0:0
E: ID_MEDIA_PLAYER=google_nexus-s
E: ID_MODEL=File-CD_Gadget
E: ID_MODEL_ENC=File-CD\x20Gadget\x20\x20
E: ID_MODEL_ID=4e21
E: ID_PATH=pci-0000:00:16.2-usb-0:2:1.0-scsi-0:0:0:0
E: ID_PATH_TAG=pci-0000_00_16_2-usb-0_2_1_0-scsi-0_0_0_0
E: ID_REVISION=0000
E: ID_SERIAL=Google_File-CD_Gadget_30309C8C04B300EC-0:0
E: ID_SERIAL_SHORT=30309C8C04B300EC
E: ID_TYPE=disk
E: ID_USB_DRIVER=usb-storage
E: ID_USB_INTERFACES=:080650:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=Google
E: ID_VENDOR_ENC=Google\x20\x20
E: ID_VENDOR_ID=18d1
E: MAJOR=8
E: MINOR=96
E: SUBSYSTEM=block
E: UDEV_LOG=3
E: UDISKS_PRESENTATION_ICON_NAME=multimedia-player
E: UDISKS_PRESENTATION_NOPOLICY=0
E: USEC_INITIALIZED=33253437171

Я пробовал много других комбинаций (например, с KERNEL = ..). Теперь мне нужна помощь. Каждый намек очень ценится! Если вам нужно больше выходных данных (например, syslog), я буду рад предоставить их ...

#

Postscriptum:

Думаю, проблема, вероятно, в том, что файловая система получает узел устройства, например, «sdg», а не «sdg1». Другие андроид-смартфоны, похоже, не показывают эту проблему, с галактическим тузом, например, все было просто отлично ...

Вывод fdisk -l / dev / sdg (с нексусами s):

Disk /dev/sdg: 14.3 GB, 14314094080 bytes
64 Köpfe, 32 Sektoren/Spur, 13650 Zylinder, zusammen 27957215 Sektoren
Einheiten = Sektoren von 1 × 512 = 512 Bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Festplattenidentifikation: 0x00000000

Gerät  boot.     Anfang        Ende     Blöcke   Id  System

и затем ничего.

В любом случае, я решил это для себя, создав pid-файл и позволив сценарию проверить его ...

3
задан 8 January 2013 в 00:18

1 ответ

Я думаю, что вы правы, предполагая, что два события инициируются сначала sdg, а затем sdg1. У меня была такая же проблема с флешкой.

Просто добавьте к своему правилу

KERNEL=="sd?[0-9]"

Это сработает только для второго события. Хорошо сработало для меня.

0
ответ дан 8 January 2013 в 00:18

Другие вопросы по тегам:

Похожие вопросы: