Udev 규칙 서비스 시작

Udev 규칙 서비스 시작

내 Raspberry Pi에 2개의 UCANDEVICE USB 어댑터가 연결되어 있습니다. 이 2개의 장치를 연결하면 /dev( ttyACM0및 ) 에 표시됩니다 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 이름 사이의 할당으로 구성 파일을 정의해야 할 수도 있습니다.

당신의 도움을 주셔서 감사합니다:)

관련 정보