UDEV 규칙의 일부 RUN 명령이 무시됩니다.

UDEV 규칙의 일부 RUN 명령이 무시됩니다.

Raspberry Pi를 실행하고 Raspberry Pi Destroyer로 업데이트하세요. Jessie의 경우 동일한 파일이 제대로 작동합니다. 다음 udev 규칙을 사용했습니다.

# Idea from https://www.axllent.org/docs/view/auto-mounting-usb-storage/
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/date >> /tmp/xx"
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}",  RUN+="/bin/date >> /tmp/xx"
# Clean up after removal
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"
# Exit
LABEL="media_by_label_auto_mount_end"

MP3 플레이어를 추가하면 /media/MP3_INTENSO 디렉터리가 생성되고, 삭제하면 해당 디렉터리도 삭제됩니다.

이는 규칙 파일이 있는 경우에만 발생합니다. 그러니 확실히 문서화의 효과인 것 같습니다.

나는 시도 udevadm monitor하고 예상되는 결과를 찾았습니다. UDEV [2378.210993] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1 (block)

실행 udevadm test /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1하고 반환합니다:

dir_name=MP3_INTENSO
mount_options=relatime,utf8,gid=100,umask=002
TAGS=:systemd:
USEC_INITIALIZED=2377859838
run: '/bin/date >> /tmp/xx'
run: '/bin/mkdir -p /media/MP3_INTENSO'
run: '/bin/mount -o relatime,utf8,gid=100,umask=002 /dev/sda1 /media/MP3_INTENSO'
run: '/bin/date >> /tmp/xx'
Unload module index
Unloaded link configuration context.

예상했던 것 같습니다. 명령줄에서 모든 명령을 성공적으로 실행할 수 있습니다. 그러나 장치를 연결하기만 하고 장치가 마운트되지 않으면 /tmp/xx에서 해당 항목을 찾을 수 없습니다.

/var/log/messages 또는 dmesg에서 아무것도 찾을 수 없습니다.

무엇이 잘못되었으며, 추가 분석을 위해 어떻게 해야 합니까?

답변1

추가 분석, 편집 /etc/udev/udev.conf및 추가를 위해 udev_log=debugrestart udev 를 사용하십시오 systemctl restart udev.

그러면 다음 정보가 제공됩니다.

'/bin/date >> /tmp/xx'(err) '/bin/date: extra operand '/tmp/xx''
'/bin/date >> /tmp/xx'(err) 'Try '/bin/date --help' for more information.'

그래서 ">>"가 작동하지 않는 것 같습니다. 간단한 /usr/local/bin/log.sh가 작업을 수행합니다. 그 후 MP3 플레이어가 성공적으로 설치되었음을 확인했습니다. 이제 흥미로운 질문은 누가 장치를 빠르게 제거하느냐 하는 것입니다. 그러나 그것은 또 다른 질문입니다.

실패한 설치에 대한 설명은 다음에서 찾을 수 있습니다.아치리눅스위키.

관련 정보