Udevルールサービスの開始

Udevルールサービスの開始

私のRaspberry Piには2つのUCANDEVICE USBアダプタが接続されています。この2つの機器を接続すると/devttyACM0と)に表示されますttyACM1

各ドングルを明確に識別するために、次のudevルールがあります。

SUBSYSTEMS=="usb", ATTRS{manufacturer}=="CANDevices", PROGRAM="/usr/bin/can-device-namer.py /dev/%k", SYMLINK+="CAN-%c"

その中には、ドングルのシリアル番号をcan-device-namer.py連結して返すスクリプトがあります。ttACMx

このルールは非常に効果的であり、現在両方のUCANDEVICESの名前を/dev

CAN-N16014350
CAN-N1613434B

slcandでは、起動時に開始されるサービスを自動的に開始したいと思います。CAN0CAN1

そのために、udevルールを次のように修正しました。

SUBSYSTEMS=="usb", ATTRS{manufacturer}=="CANDevices", PROGRAM="/usr/bin/can-device-namer.py /dev/%k", SYMLINK+="CAN-%c", TAG+="systemd", ENV{SYSTEMD_WANTS}="slcand@%k.service"

私の[email protected]外観は次のとおりです。

[Unit]
Description=Serial CAN daemon (can-utils)
BindsTo=dev-%i.device
After=dev-%i.device

[Service]
Type=forking
StopWhenUnneeded=yes
Environment=SLCAND_OPTS="-o -c -s6" SLCAND_DEV=can0
EnvironmentFile=-/etc/default/slcand
EnvironmentFile=-/etc/sysconfig/slcand
ExecStart=/usr/bin/slcand $SLCAND_OPTS %I $SLCAND_DEV
ExecStartPost=/bin/sh -c '/bin/sleep 3; /sbin/ip link set $SLCAND_DEV up'

私の問題は、で[email protected]始まり、ttyACM0SIMLINKルール(たとえば)を使用して、指定された/dev/CAN-N16014350名前を使用して/dev/CAN-N16014350常におよびCAN0/dev/CAN-N1613434B始まるようにしたいということですCAN1

CAN0私の究極の目標は、CAN1SN N16014350を持つUCANDEVICEが接続され、SN N1613434Bを持つUCANDEVICEが接続されたときに自動的に開始することです。

現在は2つのドングルしか持っていませんが、3つまたは4つでも動作します。おそらく、デバイス名とCAN名の間の割り当てで設定ファイルを定義する必要があります。

あなたの助けをいただきありがとうございます:)

ベストアンサー1

おすすめ記事