web-dev-qa-db-ja.com

udevルールを機能させる方法

私のUSBデバイスは、/dev/ttyUSB?という名前の番号を変更し続けます。

thisthis を見てきましたが、同じことを運なしでやろうとしました。

gauthier@sobel:/etc/udev/rules.d $ udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB1)

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/ttyUSB1/tty/ttyUSB1':
    KERNEL=="ttyUSB1"
    SUBSYSTEM=="tty"
    DRIVER==""

  looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/ttyUSB1':
    KERNELS=="ttyUSB1"
    SUBSYSTEMS=="usb-serial"
    DRIVERS=="ftdi_sio"
    ATTRS{port_number}=="0"
    ATTRS{latency_timer}=="1"
[...]

次に、ファイル/etc/udev/rules.d/50-udev.rules(存在しませんでした)を作成し、これを内部に配置します。

SUBSYSTEM=="usb-serial", KERNEL=="ttyUSB?", SYMLINK+="ttyUSBserial"

しかし、udevadm triggerの後でも、シンボリックリンクを取得しませんでした:

gauthier@sobel:/etc/udev/rules.d $ ls /dev|grep USB
ttyUSB1

変更されないデバイス名を作成するにはどうすればよいですか?私のルールで何が間違っていますか?

1
Gauthier

正しく読めば、デバイスの属性(KERNEL、SUBSYSTEM)と親デバイスの属性(KERNEL ** S **、SUBSYSTEM ** S **)の違いに気づいたでしょう。

ルールに「S」を追加するとうまくいきました!

途中で、udevが/lib/udev/rules.d/60-persistent-serial.rulesのルールを通じて/ dev/serial/by-id/usb- *に永続的なシンボリックリンクを作成したことにも気付きました。

2
Gauthier

ああ、私もあなたの旅を追ったので、「S」を追加した後でもシンボリックリンクが機能しません。デバイス自体のルール(「S」なし)または1つSINGLE parent ... 2つのレベルの親を参照したので、シンボリックリンクを作成できませんでした。

1
ryandali