Udev
未使用 Udev 規則
我正在嘗試在我的 Beaglebone White 上編寫一個 udev 規則,該規則在 Pantech UML 295 完成啟動時執行。
使用時,
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 使用我不確定規則是否可以訪問的環境變數。
澄清一下:該規則根本沒有執行,並且 shell 腳本有應該顯示的迴聲。我的規則位於名稱為 10-local.rules 的 /etc/udev/rules.d/ 目錄中。
編輯
下面是一些更多的非功能性規則,放在 /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+= 但不被使用的情況?
不確定發生了什麼變化,但該規則現在正在文件 /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"