Pantech UML 295가 부팅을 완료할 때 실행되는 Beaglebone White에 udev 규칙을 작성하려고 합니다.
사용하면 udevadm monitor --environment
규칙의 기초로 사용하고 싶은 다음과 같은 최종 출력을 얻습니다.
UDEV [3163.454297] add /devices/platform/omap/musb-ti81xx/musb-hdrc.1/usb1/1-1/1-
1:1.0/net/eth1 (net)
ACTION=add
DEVPATH=/devices/platform/omap/musb-ti81xx/musb-hdrc.1/usb1/1-1/1-1:1.0/net/eth1
ID_BUS=usb
ID_MODEL=PANTECH_UML295
ID_MODEL_ENC=PANTECH\x20UML295
ID_MODEL_ID=6064
ID_REVISION=0228
ID_SERIAL=Pantech__Incorporated_PANTECH_UML295_UML295692146818
ID_SERIAL_SHORT=UML295692146818
ID_TYPE=generic
ID_USB_DRIVER=cdc_ether
ID_USB_INTERFACES=:020600:0a0000:030000:
ID_USB_INTERFACE_NUM=00
ID_VENDOR=Pantech__Incorporated
ID_VENDOR_ENC=Pantech\x2c\x20Incorporated
ID_VENDOR_ID=10a9
IFINDEX=6
INTERFACE=eth1
SEQNUM=1151
SUBSYSTEM=net
SYSTEMD_ALIAS=/sys/subsystem/net/devices/eth1
TAGS=:systemd:
USEC_INITIALIZED=3163023666
내 udev 규칙 버전 1:
ENV{ID_BUS}=="usb", SUBSYSTEM=="net", RUN+="/home/root/rebootInternetConnection.sh", ENV{ID_MODEL}=="PANTECH_UML295", ACTION=="add", INTERFACE=="eth1", ENV{ID_USB_DRIVER}=="cdc_ether"
버전 2:
ACTION=="add", SUBSYSTEM=="net", RUN+="/home/root/rebootInternetConnection.sh"
버전 2는 여러 번 실행해야 하지만 전혀 실행되지 않는 간단한 버전입니다. 버전 1은 환경 변수를 사용하는데, 규칙이 이에 액세스할 수 있는지 확실하지 않습니다.
명확하게 말하면 규칙은 전혀 실행되지 않으며 쉘 스크립트에는 표시되어야 하는 에코가 있습니다. 내 규칙은 /etc/udev/rules.d/ 디렉토리에 있으며 이름은 10-local.rules입니다.
편집하다
다음은 /etc/udev/rules.d/81-pantech.rules에 있는 비기능적인 규칙입니다:
ACTION=="add", SUBSYSTEM=="net", ATTR{idVendor}=="10a9", RUN+="/home/root/reboot
InternetConnection.sh"
SUBSYSTEM=="net", ATTR{idVendor}=="10a9", ATTR{idProduct}=="6064", RUN+="/home/ro
ot/rebootInternetConnection.sh"
ACTION=="add", SUBSYSTEM=="hid", RUN+="/home/root/rebootInternetConnection.sh"
ACTION=="add", SUBSYSTEM=="usb", RUN+="echo foo > /tmp/foo"
SUBSYSTEM=="usb", ATTR{product}=="PANTECH UML295", RUN +="echo foo > /tmp/foo"
ACTION=="add", SUBSYSTEM=="usb", ATTR{product}=="PANTECH UML295", RUN+="/home/ro
ot/rebootInternetConnection.sh"
내가 실행할 때 :
udevadm test /devices/platform/omap/musb-ti81xx/musb-hdrc.1/u
마지막 몇 줄을 반환합니다.
run: 'echo foo > /tmp/foo'
run: 'echo foo > /tmp/foo'
run: 'echo foo > /tmp/foo'
run: '/home/root/rebootInternetConnection.sh'
RUN+=에 규칙을 추가했지만 사용하지 않는 경우가 있나요?
답변1
무엇이 변경되었는지는 확실하지 않지만 이제 규칙은 /etc/udev/rules.d/81-pantech.rules 파일에서 사용되고 있습니다.
한 가지 가능성은 /run/udev/rules.d/ 디렉토리가 누락되었다는 것입니다. 내가 달릴 때
udevadm test /devices/platform/omap/musb-ti81xx/musb-hdrc.1/usb1/1-1
디렉토리가 누락되었다는 내용의 줄이 표시됩니다. 이 가이드를 통해 이 명령을 찾았습니다.http://weininger.net/how-to-write-udev-rules-for-usb-devices/
mkdir /run/udev/rules.d/
또 다른 가능성은 udev 데몬을 수동으로 실행하는 것입니다.
/lib/udev/udevd --debug
내 최종 규칙은 다음과 같습니다.
ACTION=="add", SUBSYSTEM=="usb", ATTR{product}=="PANTECH UML295", RUN+="/home/root/rebootInternetConnection.sh"
ACTION=="add", SUBSYSTEM=="net", ATTR{idVendor}=="10a9", RUN+="/home/root/rebootInternetConnection.sh"