udev+udisks2: udisksctl이 "장치 객체를 찾는 동안 오류가 발생했습니다"를 표시합니다.

udev+udisks2: udisksctl이 "장치 객체를 찾는 동안 오류가 발생했습니다"를 표시합니다.

Debian Wheezy에는 ntfs USB 드라이브에 대한 특별한 규칙이 있습니다. 삽입되면 /media의 특정 하위 폴더에 설치됩니다.

ACTION=="add", SUBSYSTEMS=="usb", ATTRS{serial}=="<serial_number>", SYMLINK+="mx%n"
ACTION=="add", SUBSYSTEMS=="usb", ATTRS{serial}=="<serial_number>", RUN+="/bin/mount <options>", OPTIONS="last_rule"
ACTION=="remove", SUBSYSTEMS=="usb", ATTRS{serial}=="<serial_number>", RUN+="/bin/umount <options>"

Jessie로 업데이트한 후 작동이 멈췄습니다. udev를 변경한 후에는 mount를 사용할 수 없다는 것을 알았습니다. udisks2나 집에서 작성한 시스템 장치를 사용하는 것이 좋습니다. udisks2를 선택하고 다음과 같이 규칙을 다시 작성합니다.

ACTION=="add", SUBSYSTEMS=="usb", ATTRS{serial}=="<serial_number>", SYMLINK+="mx%n"
ACTION=="add", SUBSYSTEMS=="usb", ATTRS{serial}=="<serial_number>", RUN+="/bin/su storage_user -c '/usr/bin/udisksctl mount --block-device /dev/mx1 --filesystem-type ntfs --options locale=en_IE.UTF-8,fmask=0113,dmask=0002 --no-user-interaction'", OPTIONS="last_rule"
ACTION=="remove", SUBSYSTEMS=="usb", ATTRS{serial}=="<serial_number>", RUN+="/usr/bin/udisksctl unmount --block-device /dev/mx1 --no-user-interaction"

이것은 작동하지 않습니다. 시스템 로그에 다음이 표시됩니다.

Error looking up object for device /dev/mx1

하지만 cli에서 이 명령을 실행하면 제대로 작동합니다. 나는 systemd 서비스의 비동기적 특성으로 인해 udisk2가 USB 하드 드라이브를 마운트하려고 시도할 때 /dev/mx1이 준비되지 않았다고 생각합니다.

  1. 어떤 규칙을 작성해야 합니까?
  2. 사용자 정의 자동 마운트 규칙을 작성하는 방법(특히 ntfs 파일 시스템의 경우)에 대한 좋은 가이드가 인터넷에 있습니까?

답변1

아쉽게도 이유를 찾을 수 없습니다우데브그리고USB 2함께 일하지 않습니다. 하지만 내 문제에 대한 해결책을 찾았어요여기. 다음은 NTFS USB 하드 디스크를 자동으로 마운트하는 방법에 대한 간단한 예입니다. 먼저 스크립트입니다파일 마운트설치 드라이버

#!/bin/bash
mkdir -p /media/usbhdd
mount -t ntfs-3g -o locale=en_IE.UTF-8,fmask=0113,dmask=0002,uid=storage-user,gid=storage-group /dev/mx1 /media/usbhdd

그런 다음 시스템 단위를 만듭니다./etc/systemd/system/mount-hdd.service

[Unit]
Description=mount usb hdd
[Service]
Type=forking
ExecStart=/usr/local/scripts/storage/mount.sh
[Install]
WantedBy=multi-user.target

마지막으로 udev 규칙이 있습니다.

ACTION=="add", SUBSYSTEMS=="usb", KERNEL=="sd*", ATTRS{serial}=="<serial_number>", SYMLINK+="mx%n"
ACTION=="add", SUBSYSTEMS=="usb", KERNEL=="sd*1", ATTRS{serial}=="<serial_number>", RUN+="/bin/systemctl start mount-hdd"
ACTION=="remove", SUBSYSTEMS=="usb", ATTRS{serial}=="<serial_number>", RUN+="/bin/umount /media/usbhdd", RUN+="/bin/rmdir /media/usbhdd"

관련 정보