USB를 Raspberry Pi에 자동 마운트하려고 하는데 udev 규칙이 작동하지 않는 것 같습니다.
내가 사용하는 코드는 다음과 같습니다
ACTION=="add", ENV{ID_MODEL}=="Flash_Drive", RUN+="bin/mkdir /home/pi/heyimhere"
플래시 드라이브를 삽입하면 해당 위치에 디렉터리가 생성되지 않기 때문에 작동하지 않습니다.
동일한 규칙을 사용하여 USB를 사용하여 끄는 데 행운이 있었습니다. 이번에는 다음 줄을 사용하여 끄십시오.
ACTION=="remove", ENV{ID_MODEL}=="Flash_Drive", RUN+="sbin/shutdown -h now"
작동합니다. USB를 분리하자마자 꺼집니다.
왜? ATTR을 사용하여 추가해야 합니까?
답변1
ENV 및 ATTR/ATTRS
ATTR{파일 이름}
이벤트 장치의 sysfs 속성 값과 일치합니다.
ATTRS{파일 이름}
sysfs 속성 값이 일치하는 장치의 devpath를 검색합니다.여러 ATTRS 일치 항목이 지정된 경우 모든 항목이 동일한 장치에서 일치해야 합니다.
ENV{키}
장치 속성 값과 일치합니다.
ENV
둘 다 동일한 정보를 포함하는 경우 ATTR
차이 없이 둘 중 하나를 사용할 수 있습니다.
ENV
관련 장치의 에는 다른 상위 장치에서 파생된 값이 포함될 수 있습니다. 따라서 ENV
s를 사용하면 여러 상위 장치의 값을 동시에 일치시킬 수 있는 경우가 있는데 이는 불가능합니다 ATTRS
.
디렉터리 생성 규칙
절대 경로를 사용해야 합니다.RUN
키( RUN+="/bin/mkdir /home/pi/heyimhere"
귀하의 예에서는):
절대 경로가 제공되지 않으면 프로그램은 /usr/lib/udev에 위치할 것으로 예상됩니다.절대 경로를 지정해야 합니다..
그런데, 귀하의 마감 규칙이 왜 작동하는지 모르겠습니다. sbin/shutdown
납이 없기 때문에 그렇게 해서는 안 됩니다 /
.
udev 규칙에서 마운트
제이슨 린처럼언급하다,자동 마운트에는 udev를 사용할 수 없습니다:
액세스 네트워크를 실행 중이거나udev 규칙 내에서는 파일 시스템 마운트/마운트 해제가 허용되지 않습니다., systemd-udevd.service에 시행되는 기본 샌드박스로 인해.