Введение в порты Linux
В среде Linux каждому периферийному физическому устройству или порту подключения сопоставляется один или несколько файлов в специальном каталоге / dev. Это относится к жестким дискам, устройствам CD-ROM, параллельным и последовательным портам.
Основной принцип достаточно прост. Рассмотрим для примера жесткий диск.
В Linux каждому жесткому диску IDE присваивается имя hdx, где х принимает значения "а" (для первого диска на первичной шине IDE), "b" (для второго диска на первичной шине IDE), "с" (для первого диска на вторичной шине 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: | /dev/ttyS0 | /dev/cua0 |
COM2: | /dev/ttyS1 | /dev/cua1 |
COM3: | /dev/ttyS2 | /dev/cua2 |
COM4: | /dev/ttyS3 | /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-порты по мере необходимости.