dimap101
@dimap101
ИП, разработка АИС, микроконтроллеры

Автомонтирование USB-накопителя через udev. Почему отключается через 1-2 секунды?

Имеется RASPBERRY PI 3 с Raspbian Wheezy, чисто консольный режим, X нет и не надо.

Задача - автоматически монтировать USB-накопитель, причем независимо от входа пользователя - накопитель используется фоновыми процессами.

В fstab приписаны устройства sda1, sdb1 - периодически система их по разному определяет.

/dev/sda1 /media/exfat exfat defaults,noauto 0 0
/dev/sdb1 /media/exfat exfat defaults,noauto 0 0

Тип ФС - exfat. Noauto - специально, иначе при отсутствии USB-накопителя во время загрузки получаем переход в emergency mode. Пользователь root в группе plugdev есть.

Правила автомонтирования прописаны - пока самые простейшие:
/etc/udev/rules.d/10-automount.rules

ACTION=="add", KERNEL=="sd[a-b][0-2]", RUN+="/bin/mount /dev/%k", OPTIONS="last_rule"
ACTION=="remove", KERNEL=="sd[a-b][0-2]", RUN+="/bin/umount /media/exfat"


C pmount ситуация абсолютно такая же.

В итоге ситуация:
1. Подключаем USB-накопитель
2. Приходит UDEV-event "add"
3. Накопитель монтируется и доступен
4. Через 1-2 секунды приходит UDEV-event "change"
5. Накопитель недоступен, точка монтирования выглядит так:
root@raspberrypi:/media# ls -la
ls: cannot access exfat: Transport endpoint is not connected
total 8
drwxr-xr-x  3 root root 4096 Jun  5 23:19 .
drwxr-xr-x 21 root root 4096 Apr 10 09:58 ..
d?????????  ? ?    ?       ?            ? exfat


Вывод от udevadm monitor здесь

KERNEL[4204.018204] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3 (usb)
KERNEL[4204.018489] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0 (usb)
KERNEL[4204.019167] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/host14 (scsi)
KERNEL[4204.019406] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/host14/scsi_host/host14 (scsi_host)
UDEV [4204.026059] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3 (usb)
UDEV [4204.030635] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0 (usb)
UDEV [4204.031852] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/host14 (scsi)
UDEV [4204.033554] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/host14/scsi_host/host14 (scsi_host)
KERNEL[4205.012443] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/host14/target14:0:0 (scsi)
KERNEL[4205.012980] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/host14/target14:0:0/14:0:0:0 (scsi)
KERNEL[4205.013305] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/host14/target14:0:0/14:0:0:0/scsi_disk/14:0:0:0 (scsi_disk)
KERNEL[4205.013380] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/host14/target14:0:0/14:0:0:0/scsi_device/14:0:0:0 (scsi_device)
KERNEL[4205.013649] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/host14/target14:0:0/14:0:0:0/scsi_generic/sg0 (scsi_generic)
KERNEL[4205.014150] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/host14/target14:0:0/14:0:0:0/bsg/14:0:0:0 (bsg)
UDEV [4205.014318] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/host14/target14:0:0 (scsi)
UDEV [4205.018776] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/host14/target14:0:0/14:0:0:0 (scsi)
UDEV [4205.019058] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/host14/target14:0:0/14:0:0:0/scsi_disk/14:0:0:0 (scsi_disk)
KERNEL[4205.020740] add /devices/virtual/bdi/8:0 (bdi)
UDEV [4205.022555] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/host14/target14:0:0/14:0:0:0/scsi_device/14:0:0:0 (scsi_device)
UDEV [4205.023574] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/host14/target14:0:0/14:0:0:0/scsi_generic/sg0 (scsi_generic)
UDEV [4205.025360] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/host14/target14:0:0/14:0:0:0/bsg/14:0:0:0 (bsg)
UDEV [4205.025886] add /devices/virtual/bdi/8:0 (bdi)
KERNEL[4205.030691] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/host14/target14:0:0/14:0:0:0/block/sda (block)
KERNEL[4205.030885] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/host14/target14:0:0/14:0:0:0/block/sda/sda1 (block)
UDEV [4205.129575] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/host14/target14:0:0/14:0:0:0/block/sda (block)
KERNEL[4205.221355] add /devices/virtual/bdi/8:1-fuseblk (bdi)
UDEV [4205.222509] add /devices/virtual/bdi/8:1-fuseblk (bdi)
UDEV [4205.256254] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/host14/target14:0:0/14:0:0:0/block/sda/sda1 (block)
KERNEL[4208.266520] change /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/host14/target14:0:0/14:0:0:0/block/sda/sda1 (block)
UDEV [4208.327233] change /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.0/host14/target14:0:0/14:0:0:0/block/sda/sda1 (block)


Вручную этими же командами из 10-automount.rules все монтируется и остается в работе.

P.S. Может исходя из задачи (использовать накопитель фоновыми процессами без входа пользователя) я вообще не в ту сторону ушёл ?
  • Вопрос задан
  • 1301 просмотр
Решения вопроса 1
dimap101
@dimap101 Автор вопроса
ИП, разработка АИС, микроконтроллеры
В процессе проверки разных возможных причин удалось установить, что такая проблема имеется только с ФС exFAT и NTFS. Накопители с FAT32 монтируются нормально. Но нужен exFAT (или NTFS, хотя нежелательно) - накопители по 64Гб.

Осталось дело за малым - понять, почему автомонтирование exFAT срабатывает криво, а вручную работает нормально.

Проверил через udevadm monitor - при FAT32 не появляется UDEV-event "change".
Также через "udevadm monitor --property" сверил все данные при "add" и "change" - все идентично, т.е. на самом деле никаких предпосылок к появлению "change" нет.

UPDATE: на нескольких форумах нашел аналогичную проблему и якобы она заключается в том, что udev убивает все дочерние процессы в течении 30 секунд. Но все же непонятно какая связь 30 секунд, и пропадания через 1-2 секунды по UDEV-event "change", причем FAT32 работает нормально.

Тем не менее начал искать другое решение, HAL использовать не стал ввиду устаревания. Установлен devmon из пакета udevil, поставил в автозагрузку, все работает, проблем нет.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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