Введение в порты Linux

В среде Linux каждому периферийному физическому устройству или порту подключения сопоставляется один или несколько файлов в специальном каталоге / dev. Это относится к жестким дискам, устройствам CD-ROm, параллельным и последовательным портам.

Основной принцип достаточно прост. Рассмотрим для примера жесткий диск.

В Linux каждому жесткому диску iDE присваивается имя hdx, где х принимает значения "а" (для первого диска на первичной шине iDE), "b" (для второго диска на первичной шине ШЕ), "с" (для первого диска на вторичной шине iDE) и т.д. Таким образом, имя главного вторичного диска - /dev/hdc.

Примечание

Жесткие SCSi-диски и SCSi-диски CD-ROm аналогичным образом обозначаются sdx.

В каталоге / dev имеется составляющая для каждого дискового раздела. Например, второму разделу первичного подчиненного диска присваивается имя /dev/hdb2, первому разделу вторичного главного- /dev/hdcl.

Параллельные порты в Linux

Рассмотрим параллельные порты. В DOS и Windows параллельным портам присваиваются имена LPT1:, LPT2 :, LPT3 : и т.д. Как правило, в ПК один параллельный порт с именем LPT1:.

В Linux параллельным портам сопоставляются файлы устройств 1рх, где х - номер порта. Это основное отличие от DOS и Windows: нумерация портов начинается не с единицы, а с нуля, так что LPT1: в Linux соответствует /dev/lp0, a LPT2 : - /dev/ lpl. В DOS возможна ситуация, когда единственный параллельный порт компьютера имеет имя, отличное от LPT1:; в Linux этому порту будет присвоено имя /dev/lpO, как первому доступному порту.

Теперь перейдем к последовательным портам, понимание принципов рабств которых важно для правильной установки модема.

Последовательные порты в Linux

В Linux каждому последовательному порту сопоставляется два файла устройств - для исходящих и входящих соединений. Файлы исходящих соединений называются ttySx, где х- номер, начинающийся с нуля. Таким образом, порту СОМ1: из DOS в Linux соответствует /dev/ttyS0, COМ2 : - /dev/ ttySl. В ранних версиях Linux последовательному порту сопоставлялся еще один файл устройства. Это файл сиах, где х - номер, начинающийся с нуля. Таким образом, в этих версиях СОМ1: соответствовали файлы /dev/ ttyS0 и /dev/cua0, COm4: - /dev/ttyS3 и dev/сuаЗ. Адреса портов сведены в таблицу 18.2.

Табл. 18.2. Последовательные порты в DOS и Linux

Имя DOS

Файлы устройств Linux

Унаследованные файлы устройств

СОМ1:

COm2:

COm3:

COm4:

/dev/ttyS0

/dev/ttyS1

/dev/ttyS2

/dev/ttyS3

/dev/cua0

/dev/cua1

/dev/cua2

/dev/cua3

Но запомнить эти имена устройств для большинства людей сложно. К счастью, при конфигурировании модема большинство Linux-дистрибутивов организует связь между файлом /dev/modem и реальным устройством. Это можно проверить, выполнив команду 1s -1 /dev/modem. Результат должен быть таким:

lrwxrwxrwx 1 root root 10 feb 3 19:21 /dev/modem -> /dev/ttyS0

Примечание

В современных версиях Linux используется только файл /dev/ttySx, поддержка же /dev/cuax остается исключительно для обеспечения совместимости. Со временем надобности в поддержке этого файла не будет.

USb-порты в Linux

Теоретически, можно подсоединить до 32 USb-модемов к Linux-компьютеру. Чтобы использовать USb-модемы, необходимо убедиться в том, что соответствующие USb-модули включены в ядро (вопросы конфигурирования ядра обсуждаются в гл. 20). Некоторые USb-модули уже включены в состав последних дистрибутивов, включая Red Hat Linux 7.1.

Для USb модемов также необходим модуль Communication Device Class Abstract Control module, кратко acm; о. Если он не входит в ядро, следует включить его в текущую конфигурацию. В Red Hat Linux 7.1 необходимо компилировать этот модуль в состав ядра. Более подробно вопросы модификации ядра рассмотрены в гл. 20. Покончив с формированием необходимого ядра, можно запускать следующую команду:

# /sbin/insmod /lib/modules/2.4.2-2/kernel/drivers/usb/acm.o

Если версия вашей команды insmod или ядра другая, задайте ее в команде соответствующим образом. Используемый в вашем Linux-дистрибутиве каталог может отличаться.

Соответствующие устройства уже должны существовать в каталоге /dev/usb. Проверьте это с помощью команды is -i /dev/usb/ ttyACm*. Результат должен выглядеть приблизительно так:

crw-rw----- 1 root root 188, 0 Aug 24 09:00 /dev/usb/ttyACm0

crw-rw----- 1 root root 188, 0 Aug 24 09:00 /dev/usb/ttyACm1

crw-rw----- 1 root root 188, 0 Aug 24 09:00 /dev/usb/ttyACm2

crw-rw----- 1 root root 188, 0 Aug 24 09:00 /dev/usb/ttyACm3

Если у вас результат отличается от приведенного, выполните следующую команду: mknod /dev/usb/ttyACm0 с 166 0

Повторите эту команду, подставив ttyACm1, ttyACm2 и другие USb-порты по мере необходимости.