изменение нумерации udev при создании символьных ссылок

Нет никакой реальной разницы [1]. invoke-rc.d команда просто обеспечивает хороший удобный интерфейс для запущения init.d скриптов, экономя Вас обременительная ответственность ввода в полном пути к скрипту, который Вы хотите запустить! Оба вызова достигнут того же конечного результата.

[1] Обратите внимание что invoke-rc.d команда выполняет проверки прежде, чем вызвать требуемый сервисный сценарий, чтобы гарантировать, чтобы это было выполнено - это принимает меры против сценариев выполнения вызова runlevel не правый, и т.д., так в этом смысле, существует различие - это защищает Вас от стрельбы в Ваши ноги несколько. Страница справочника должна оказаться поучительной в этом отношении.

4
12.06.2013, 18:57
4 ответа

Я закончил тем, что работал вокруг "только одного родительского" ограничения путем разделения конфигурации между несколькими правилами. Для заинтересованных, вот код, с которым я закончил:

ACTION!="add", GOTO="modem_rules_end"
SUBSYSTEM!="tty" GOTO="modem_rules_end"

#ModemType1
ATTRS{idVendor}=="1199", ATTRS{idProduct}=="0028", GOTO="type1_rules_begin"
GOTO="type1_rules_end"
LABEL="type1_rules_begin"

ATTRS{port_number}=="0", SYMLINK:="ttyType1_0"
ATTRS{port_number}=="1", SYMLINK:="ttyType1_1"
ATTRS{port_number}=="2", SYMLINK:="ttyType1_2"
ATTRS{port_number}=="3", SYMLINK:="ttyType1_3"

LABEL="type1_rules_end"
LABEL="modem_rules_end"
1
27.01.2020, 20:58

Модемные правила должны соответствовать ACTION=="add", SUBSYSTEM=="tty" объединенный с idVendor, idProduct и атрибутами port_number:

ACTION=="add", SUBSYSTEM=="tty", ATTRS{idVendor}=="1199", ATTRS{idProduct}=="0028", ATTRS{port_number}=="0", SYMLINK+="ttyPort0"
ACTION=="add", SUBSYSTEM=="tty", ATTRS{idVendor}=="1199", ATTRS{idProduct}=="0028", ATTRS{port_number}=="1", SYMLINK+="ttyPort1"
ACTION=="add", SUBSYSTEM=="tty", ATTRS{idVendor}=="1199", ATTRS{idProduct}=="0028", ATTRS{port_number}=="2", SYMLINK+="ttyPort2"
ACTION=="add", SUBSYSTEM=="tty", ATTRS{idVendor}=="1199", ATTRS{idProduct}=="0028", ATTRS{port_number}=="3", SYMLINK+="ttyPort3"

Также проверьте если любая из существующих символьных ссылок в /dev/serial/by-id (помогает, если Ваш модем имеет уникальный порядковый номер), или /dev/serial/by-path (работы, если бы Вы всегда включаете свой модем в к тому же USB-порту) работал бы на Вашу цель.

2
27.01.2020, 20:58
  • 1
    К сожалению, это не работало. Я также попробовал самую простую форму того метода, о котором я мог думать ENV{ID_VENDOR_ID}=="1199" SYMLINK+="ttyPortNumber0", но даже который не стал инициированным. Я подтвердил с udevadem info --query=all то, что переменная среды должна быть добавлена, но я в замешательстве относительно того, почему это, кажется, не распознает его в правиле. Что касается других символьных ссылок, Это правило должно работать на любой модем той же модели, и когда это включается к любому USB-порту, таким образом, единственная вещь, которую я сделал бы с теми, копируют их и переименовывают их, который является смыслом использования udev. –  isidor3 12.06.2013, 19:10
  • 2
    мог Вы пробовать просто ACTION=="add", SUBSYSTEM=="tty", ATTRS{port_number}=="0", SYMLINK+="ttyPort0"? –  Alex P. 12.06.2013, 20:40
  • 3
    То правило работает, как Вы ожидали бы, оно не решает мою проблему, но оно правильно распознало port0 устройство модема. –  isidor3 12.06.2013, 21:04
awk 'BEGIN {
        ...
     }
     # the next line should NOT be within curly braces
     $1 ~ /^Observation/, $1 ~ /^@@@/ { ... }
     {
        ...
     }
     END{
        ...
     }' input.txt > out.csv
-121--108276-

Я сделал настройку с несколькими идентичными USB последовательные адаптеры для доступа к моим unix машин.

Я предполагаю, что атрибут KERNELS в последней строке является результатом моего концентратора «Fruefic Technology Inc»., существующего из двух концентраторов, где один присоединен к другому.

KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", KERNELS=="1-1.2.5:1.0", SYMLINK+="ttyUSB_Sol1"
KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", KERNELS=="1-1.2.6:1.0", SYMLINK+="ttyUSB_Sol2"
KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", KERNELS=="1-1.2.7:1.0", SYMLINK+="ttyUSB_Sol3"
KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", KERNELS=="1-1.2.4:1.0", SYMLINK+="ttyUSB_Sol4"
KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", KERNELS=="1-1.2.3:1.0", SYMLINK+="ttyUSB_HPUX1"
KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", KERNELS=="1-1.2.2:1.0", SYMLINK+="ttyUSB_HPUX2"
KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", KERNELS=="1-1.2.1.4:1.0", SYMLINK+="ttyUSB_HPUX3"
0
27.01.2020, 20:58

У меня была аналогичная проблема с подключением сотового USB-модема к сети с последовательной нумерацией в системе вместе с другими USB-устройствами tty, соперничающими за номера / dev / ttyUSB *. В моем случае это был EuroTech ReliaCELL 10-20-32 с чипсетом Telit. Я решил проблему, используя некоторые идеи отсюда, и в итоге получил следующий отрывок в моих правилах:

SUBSYSTEMS=="usb", DRIVERS=="option", ATTRS{bInterfaceNumber}=="00", SYMLINK+="ttyUSB_modem_port_0"
SUBSYSTEMS=="usb", DRIVERS=="option", ATTRS{bInterfaceNumber}=="01", SYMLINK+="ttyUSB_modem_port_1"
SUBSYSTEMS=="usb", DRIVERS=="option", ATTRS{bInterfaceNumber}=="02", SYMLINK+="ttyUSB_modem_port_2"
SUBSYSTEMS=="usb", DRIVERS=="option", ATTRS{bInterfaceNumber}=="03", SYMLINK+="ttyUSB_modem_port_3"
0
27.01.2020, 20:58

Теги

Похожие вопросы