Монтировании MTP устройств
-
Делаю сборку Linux для тонких клиентов на базе Thinstation 6.2 (https://github.com/Thinstation/thinstation).
Собираю пакет для монтирования MTP устройств (Android смартфоны).
Собственно, руками без проблем монтирую как и simple-mtpfs (https://github.com/phatina/simple-mtpfs), так и aft-mtp-mount (https://github.com/whoozle/android-file-transfer-linux).
Решил написать правила для udev и скрипт для монтирования.
Сначала написал сложный скрипт, с кучей проверок, но в процессе тестирования его очень сильно урезал для отладки, получилось так:#!/bin/sh . /etc/thinstation.env . $TS_GLOBAL if [[ $ACTION == "add" ]]; then echo "********************* START MOUNT *******************" | systemd-cat -p err -t "mtp" aft-mtp-mount /phone grep -oe "/phone" /proc/mounts | systemd-cat -p err -t "mtp" ls "/phone/Внутренний общий накопитель" | systemd-cat -p err -t "mtp" echo "********************** END MOUNT ********************" | systemd-cat -p err -t "mtp" elif [[ $ACTION == "remove" ]]; then echo "******************** START UNMOUNT ******************" | systemd-cat -p err -t "mtp" umount /phone echo "********************* END UNMOUNT *******************" | systemd-cat -p err -t "mtp" fi
udev срабатывает на присоединение/отсоединение устройства. Скрипт тоже отрабатывает по событию. Всё бенч, но есть нюанс: монтирование в логах есть - а на деле его нет. То есть скрипт отрабатывает, в логах пишет, что grep находит устройство как смонтированное, ls отображает список внутренностей накопителя. Захожу в каталог /phone - он пуст, при этом никакой umount не срабатывал.
Я всё запечатлел на видео, как это выглядит. (https://youtu.be/85VFaSBHWBU)
В какую сторону копать? В чём может быть проблема? -
Выявил такой момент. Если выключить systemd-udevd как сервис и запустить его отдельно в качестве демона, то монтирование срабатывает. Но если сервис работает как часть systemd - то монтирование не работает. Бред.