Linux - статьи



              

Linux 2.6: откуда берется пыль и куда деваются линки - часть 2


Эта строка содержит (незримо) две части: ключевую, или идентификатор, и триггер — то есть часть, которая будет "выполнена" для устройства, которое совпадет с нашим ключом. Каждое устройство, как было сказано выше, единожды проходит через этот "строй" — процесс довольно нудный, в чем вы можете легко убедиться, запустив /sbin/udevstart, Тем более что вам все равно придется это сделать после внесения изменений, если вы не хотите перезагружать компьютер.

В данном случае устройство детектируется по "к-имени", то есть так, как оно известно ядру. А именно — ttyLTM0. Конечно, это не самый гибкий ход. Но я просто знаю, что более одного винмодема у меня быть не может. В общем случае можно было бы записать "ttyLTM?", или даже "ttyLTM*": значение звездочки и вопросительного знака точно такие, как и в командной строке.

Конечно, один винчестер от другого по к-имени не отличишь — для этого существует еще ряд признаков. Самый общий — SYSFS{имя файла}, что обозначает сравнить значение в данном файле SYSFS для данного устройства с заданным значением. Вся SYSFS состоит из классифицированных каталогов. В этих каталогах лежат файлы с параметрами устройств (вы можете сами на это посмотреть, вас там никто не укусит). Вот идентификатор SYSFS и сравнивает значение такого "атомарного файла" с некоторым значением.

Udev сам может сварганить ключ для любого подключенного устройства. Если вы знаете, где оно находится в иерархии /sys (благодаря линкам там все встречается по три раза — ищите, как вам удобно, по типу или по шине подключения), то можете даже "вывернуть" значения параметров с помощью утилиты udevinfo. Собственно, она как раз и помогает искать параметры в /sys, в частности по "готовому" /dev — устройству.

Например, узнаем, как в SYSFS называется наш модем, указав его "ноду" в devfs. Выполняем: # /usr/bin/udevinfo -q path -n /dev/ttyLTM0

— и получаем: /class/tty/ttyLTM0

где полученный путь "абсолютно относителен" в системе /sys. Теперь запросим все параметры (атрибуты, в терминах Udev), связанные с этим устройством: # usr/bin/udevinfo -a -p /class/tty/LTM0




Содержание  Назад  Вперед