LINUX.ORG.RU

Вопрос о systemd

 , , ,


0

1

На рабочем компе перевел дистрибутив с пакетной базы кранча на джесси.

Естественно, перелез на systemd. Возник вопрос: можно ли сабжу жестко задать (через правила udev?) правила именования устройств?

Пример из практики: usb-свисток опознавался в прежние времена как ttyACM0, тепер опознается как ttyACM[0-9]. Просто иногда вместо NM пользуюсь wvdial, а у него да, конфиг текстовый и статичный :-)

★★★★★

А при чём здесь systemd.

/etc/udev/rules.d/99-rename-usb-modem.rules:

ACTION!="remove", SUBSYSTEM=="tty", <дальше какие-то правила>, SYMLINK+="tty-phone"

А вот как выбрать среди всех tty нужный — это вопрос. Запости вывод udevadm info /dev/ttyACMn, где n — тот номер, под которым оно детектится.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Послезавтра буду на работе — запостю. Просто, в том то и фокус, что каждый раз номер ACM рандомный :-)

Twissel ★★★★★
() автор топика
Ответ на: комментарий от Twissel

Я понимаю. Собственно, раз номер рандомный, значит, нужно матчить по каким-либо другим свойствам (которые не будут меняться от загрузки к загрузке). А список свойств я и хочу узнать. Соответственно, нужно посмотреть, под каким номером оно задетектилось в данный конкретный раз, и посмотреть свойства этого устройства.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Я понял.

Вроде UUID у раздела.

Спасибо за указание.

Twissel ★★★★★
() автор топика
Ответ на: комментарий от intelfx

Соответственно, нужно посмотреть, под каким номером оно задетектилось в данный конкретный раз, и посмотреть свойства этого устройства.

Зачем так извращаться? Vendor ID и Model ID написаны прямо в lsusb. По ним матчить удобнее всего.

Axon ★★★★★
()
Ответ на: комментарий от Axon

Ты уверен, что эти свойства присваиваются конкретно узлу /dev/ttyACMx, а не его десятикратному предку? Я не уверен (не могу проверить за неимением такого железа).

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Ты уверен, что эти свойства присваиваются конкретно узлу /dev/ttyACMx, а не его десятикратному предку?

Не на 100%, но да. По крайней мере, в ряде похожих случаев у меня так и было.

Axon ★★★★★
()
Ответ на: комментарий от Axon

Хм. Я сейчас подумал ещё раз и вспомнил, что есть возможность проверить атрибут по всей цепочке предков. Спасибо.

ТС, воткни агрегат, сделай lsusb, найди строчку с ним и запиши два шестнадцатиричных числа после «ID»: ID XXXX:YYYY.

Тогда правило будет выглядеть так:

ACTION!="remove", SUBSYSTEM=="tty", ATTRS{idVendor}=="XXXX", ATTRS{idProduct}=="YYYY", SYMLINK+="tty-modem"

Потом сделай udevadm control --reload и перевоткни агрегат. Должен появиться симлинк /dev/tty-modem.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Ну понятно, попробую.

Для подобных устройств, они вроде как задаются на аппаратном уровне,не?

То есть, аналоги VID и PID под офтопиком :-)

Спасибо!

Twissel ★★★★★
() автор топика
Ответ на: комментарий от intelfx

Может все-таки idModel, а не idProduct?

Пробую так, первый вариант не пошел.

Добавлено

Неа, симлинк не создается, увы!

Twissel ★★★★★
() автор топика
Последнее исправление: Twissel (всего исправлений: 1)
Ответ на: комментарий от Twissel

Откуда там idModel? У usb-устройств в sysfs, вроде как, idVendor и idProduct.

Ну да ладно. Извини, мне проверить не на чем :] Если никак не получится, попробуй udevadm info -a /dev/ttyACMn (где ttyACMn — это имя, под которым он в очередной раз появился) и запости куда-нибудь результат.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Таки idModel у свистка, я специально уже глянул этой командой.

Да без проблем, это не принципиальный вопрос :-)

Pastebin

Twissel ★★★★★
() автор топика
Ответ на: комментарий от Twissel

Не, не этой командой. Ты ключик -a забыл. Это уже обработанные свойства устройства в базе данных udev'а, а нужны атрибуты из sysfs.

intelfx ★★★★★
()
Ответ на: комментарий от Twissel

Тут уже idProduct, замечаешь? :]

А теперь покажи правило (и имя файла, в котором оно лежит). Должно быть таким:

ACTION!="remove", SUBSYSTEM=="tty", ATTRS{idVendor}=="1fac", ATTRS{idProduct}=="0151", SYMLINK+="tty-modem"

После этого udevadm control --reload и перевтыкаешь устройство.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

/etc/udev/rules.d/99-rename-usb-modem.rules

ACTION!="remove", SUBSYSTEM=="tty", ATTRS{idVendor}=="1fac", ATTRS{idProduct}=="0151", SYMLINK+="tty-modem"

Нету симлинка, ну и Бог с ним.

Twissel ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.