On Sat, Apr 04, 2009 at 09:32:42PM +0400, hisbreht@rambler.ru wrote: [...] > Когда модем вставляется при включенном компьютере, то он всегда получает > имя /dev/ttyS2. > Если же он вставлен до включения питания, то он с равным успехом может > получить имя /dev/ttyS0 или /dev/ttyS2. > > Отсюда, собственно, вопрос. Точнее два. > 1. Как указать драйверу последовательного порта (если ничего не напутал, то > это в данном случае serial_cs) имя устройства, чтобы порт всегда был доступен > по одному имени? Драйвер всегда использует первое свободное имя устройства. Можно написать правило для udev, по которому будет создаваться ссылка с фиксированным именем (например, /dev/modem - это имя не должно совпадать с обычными именами устройств, назначаемыми ядром). Для этого необходимо сначала посмотреть, по каким атрибутам можно отличить нужное устройство от других: udevadm info --attribute-walk --name=/dev/ttyS0 udevadm info --attribute-walk --name=/dev/ttyS2 Затем в каталоге /etc/udev/rules.d можно создать файл (назвав его, например, 99-local.rules), в котором написать что-то типа SUBSYSTEM=="tty", KERNEL=="ttyS[0-9]*", <условия>, SYMLINK+="modem" (имена устройств пишутся без "/dev/", какие именно условия требуется вписать - нужно смотреть в выводе команд udevadm info). > 2. Или может помочь задержка загрузки драйвера, чтобы он стартовал попозже? Задержку - разве что вписав строку "blacklist serial_cs" в файл /etc/modprobe.d/local.conf, а потом добавив ручную загрузку этого модуля (в простейшем варианте - написав нужные команды в /etc/rc.d/rc.local). Либо можно попробовать вписать список модулей, которые нужно загружать в определённом порядке, в файл /etc/modules (эти модули загружаются ещё до запуска udevd, поэтому модули, требующие firmware, при добавлении в этот файл не загрузятся правильно).