udev неправильно монтирует флешку

У меня есть ODROID XU4 на базе ARM под управлением Ubuntu 16.04. Я хочу автоматически монтировать USB-флешки на / media / usbdisk, когда они вставлены. Теперь я сталкиваюсь с проблемой, что устройства, кажется, не правильно установлены.

Я могу смонтировать и получить доступ к флешке вручную, используя

sudo mount -t ntfs /dev/sda1 usbdisk/

. Затем я добавил следующее правило как /etc/udev/rules.d/11-media-by-label-auto-mount.rules.

KERNEL!="sd[a-z][0-9]", GOTO="media_by_label_auto_mount_end"  
# Import FS infos  
IMPORT{program}="/sbin/blkid -o udev -p %N"  
# Get a label if present, otherwise specify one  
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"  
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"  
# Global mount options  
ACTION=="add", ENV{mount_options}="relatime"  
# Filesystem-specific mount options  
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"  
# Mount the device  
ACTION=="add", RUN+="/bin/mkdir -p /media/usbdisk", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/usbdisk"  
# Clean up after removal  
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/usbdisk", RUN+="/bin/rmdir /media/usbdisk"  
# Exit  
LABEL="media_by_label_auto_mount_end"

Когда я добавляю флешку, создается папка / media / usbdisk, однако файловая система не смонтирована правильно. ls on / media говорит:

/media$ ls -la
ls: cannot access 'usbdisk': Transport endpoint is not connected
total 24
drwxr-xr-x  4 root root  4096 Feb 11 16:51 .
drwxr-xr-x 22 root root  4096 Feb 11 17:03 ..
drwxr-xr-x  3 root root 16384 Jan  1  1970 boot
d?????????  ? ?    ?        ?            ? usbdisk

и я не могу войти в него

cd usbdisk 
-bash: cd: usbdisk: Transport endpoint is not connected

Вывод dmesg:

[  221.871579] [c2] usb 4-1.2: new SuperSpeed USB device number 3 using xhci-hcd
[  221.885847] [c2] usb 4-1.2: Parent hub missing LPM exit latency info.  Power management will be impacted.
[  221.887582] [c2] usb-storage 4-1.2:1.0: USB Mass Storage device detected
[  221.888007] [c2] scsi2 : usb-storage 4-1.2:1.0
[  222.886208] [c2] scsi 2:0:0:0: Direct-Access     SanDisk  Extreme          0001 PQ: 0 ANSI: 6
[  222.887373] [c2] sd 2:0:0:0: Attached scsi generic sg0 type 0
[  222.887626] [c2] sd 2:0:0:0: [sda] 250085376 512-byte logical blocks: (128 GB/119 GiB)
[  222.888235] [c2] sd 2:0:0:0: [sda] Write Protect is off
[  222.888257] [c2] sd 2:0:0:0: [sda] Mode Sense: 53 00 00 08
[  222.888830] [c2] sd 2:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[  222.893348] [c2]  sda: sda1
[  222.897331] [c2] sd 2:0:0:0: [sda] Attached SCSI removable disk

Редактировать - выяснил еще некоторые детали :

Я свел правило udev к обычным командам mount и unmount. Проблема сохранилась. С помощью journalctl -f я мог видеть сообщение от udev, команда mount завершается с ошибкой, код возврата равен 21.

Еще более удивительно - у меня есть скрипт, запускаемый при запуске устройства через systemd, который предполагается войти на USB-диск. Этот скрипт завершается успешно и записывает что-то на флешку. Очевидно, что устройство подключено, но у меня нет прав доступа к нему. Есть идеи, в каком режиме / для какого пользователя работает udev?

Спасибо за помощь!

2
задан 1 December 2017 в 23:11

1 ответ

udev запустить сценарии как root. Поэтому измените права доступа к созданной папке /media/usbdisk перед монтированием блочного устройства.

0
ответ дан 1 December 2017 в 23:11

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

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