Сервер электронной почты абсолютно
бесполезен, если он не может общаться с другими
серверами и клиентскими рабочими станциями. Для
связи с внешним миром в почтовом сервере на базе
ОС Linux используется два типа
телекоммуникационных устройств.
Прежде всего почтовый сервер на
базе ОС Linux должен установить соединение по
протоколу IP с провайдером услуг сети Internet
(ISP), чтобы производить обмен электронной
почтой с Internet. Для установления
последовательного соединения с провайдером
используется модем. После того как соединение
установлено, сервер электронной почты на базе ОС
Linux для приема/передачи IP-пакетов может
использовать протокол РРР (Point-to-Point
Protocol). Более подробно это описано в лекции
8, "Протокол РРР".
Помимо Internet-соединения, сервер
электронной почты должен каким-то образом
передавать почту на рабочие станции и давать им
возможность отсылать почту в Internet. Самое
простое решение — подключить почтовый сервер к
локальной вычислительной сети вашего офиса. В
небольших офисах можно организовать локальную
вычислительную сеть (ЛВС) несколькими способами.
Наибольшую популярность в последнее время
приобрела технология ЛВС — Ethernet. Технология
Ethernet позволяет объединять рабочие станции в
сеть со скоростью 10 или 100 Мбит/с с помощью
интерфейсных сетевых карт (Network Interface
Card — NIC) или сетевых адаптеров, как их иногда
называют. Для того чтобы подключить почтовый
сервер с ОС Linux к офисной ЛВС на базе Ethernet
необходимо правильно установить и сконфигуровать
сетевой адаптер.
В этой лекции обсуждаются вопросы
конфигурирования сервера электронной почты для
работы и с рабочими станциями в ЛВС, и с
провайдером Internet. В начале лекции дается
краткий обзор телекоммуникационных устройств,
которые могут работать в ОС Linux. Затем
описывается процесс установки и настройки
сетевых адаптеров. В конце лекции обсуждается
алгоритм установки и настройки различных типов
модемов.
Телекоммуникационные устройства в ОС Linux
Модемы и интерфейсные сетевые
карты — это аппаратные телекоммуникационные
устройства, подключаемые к ПК (часто с
использованием слотов на материнской плате).
Вначале эти устройства должны быть опознаны
операционной системой Linux, в противном случае
они могут работать некорректно. Для нормального
функционирования этих устройств в ОС Linux
необходимы специальные драйверы и программное
обеспечение. На рис. 3.1 представлено
программное и аппаратное обеспечение,
необходимое для нормальной работы
телекоммуникационных устройств.
Рис. 3.1. Уровни работы
телекоммуникационных устройств
Как видно из рис. 3.1, каждое
телекоммуникационное устройство должно
взаимодействовать с ядром ОС Linux. Как было
сказано в предыдущей лекции, ядро отвечает за
управление интерфейсами, которые назначаются
телекоммуникационным устройствам. Как правило,
это достигается с помощью загружаемых драйверов,
которые называются модулями. Эти модули
можно устанавливать при загрузке системы с
помощью механизма сценариев. В свою очередь,
ядру должны быть известны все параметры
устройств в системе, чтобы оно могло работать с
ними корректно.
После того как ядро системы
обнаружило и сконфигурировало
телекоммуникационные устройства, должна быть
обеспечена возможность доступа к устройству,
соответствующему программному обеспечению. Если
же речь идет о сервере электронной почты, то
программное обеспечение должно соответствовать
протоколу TCP/IP.
Программное обеспечение TCP/IP для
ОС Linux позволяет прикладным программам
посылать пакеты TCP/IP через сетевой адаптер и
модем удаленным устройствам на основе IP-адресов.
Для нормальной работы стека протоколов TCP/IP
необходим определенный набор параметров IP.
Наиболее важными для организации IP-соединения
являются:
- IP-адрес устройства;
- маска подсети IP;
- адрес IP-маршрутизатора по умолчанию (шлюза);
- серверы системы доменных имен DNS.
IP-адрес является уникальным
идентификатором почтового сервера на базе ОС
Linux в IP-сети офиса. Маски подсети определяет
размер IP-сети офиса. Это позволяет почтовому
серверу правильно определять время пересылки IP-пакетов
на маршрутизатор для дальнейшей их отправки
удаленным узлам. Маршрутизатор обычно
используется сервером электронной почты для
передачи пакетов удаленным узлам.
Последним параметром для
нормальной работы почтового сервера на базе ОС
Linux является настройка сервера системы
доменных имен — DNS. Адресация в сетях IP
основана на числовых адресах. Система доменных
имен DNS сопоставляет IP-адреса с символьными
именами хостов. Благодаря этому пользователи и
программы работают с пространством имен хостов,
а не с длинной последовательностью чисел,
представляющей IP-адрес. Сервер DNS возвращает
IP-адрес на заданное имя хоста.
В следующем разделе описывается
процесс установки и настройки сетевых адаптеров
на почтовом сервере под управлением ОС Linux.
Установка и конфигурирование сетевых
адаптеров
Операционной системой Linux
поддерживается огромное количество различных
сетевых адаптеров. Большинство дистрибутивов
Linux при установке автоматически определяют
установленный сетевой адаптер и соответствующим
образом изменяет ядро. Если же сетевой адаптер
устанавливается на систему с уже установленной
ОС Linux, то придется сконфигурировать его в
ядре вручную.
Для установки и настройки сетевых
адаптеров вручную в системе Linux применяется
программа ifconfig.
В некоторые дистрибутивы ОС Linux входит
графическая оболочка X Window, с помощью которой
установка параметров программы
ifconfig несколько
облегчается. В Red Hat и Mandrake Linux для
настройки установленных сетевых адаптеров
используется программа
netcfg.
В этом разделе будет рассмотрена
работа программы ifconfig
по обнаружению и настройке сетевых адаптеров при
начальной загрузке, а также более подробно будет
описана работа программы
netcfg.
Конфигурирование сетевых адаптеров при
начальной загрузке
После того как сетевой адаптер был
правильно настроен (вручную либо автоматически),
сервер на базе ОС Linux может общаться с другими
устройствами в офисной локальной сети. Однако
имеется одна проблема: после перезагрузки
сервера на Linux вся информация о сетевом
устройстве теряется. Для внесения информации о
сетевых устройствах в специальную таблицу в ядре
применяется команда
ifconfig. Эта таблица создается в ядре
при каждой загрузке сервера на основе сценариев
конфигурации.
Программе
ifconfig требуется запустить в процессе
загрузки файл сценария, в котором задаются
необходимые команды
ifconfig для запуска сетевого адаптера.
Во всех версиях ОС Linux имеются файлы сценариев,
которые применяются при начальной загрузке для
запуска различных программ. К сожалению,
различные поставщики ОС Linux в своих
дистрибутивах используют различные методы
запуска для файлов сценариев. Так, в
дистрибутивах Linux Mandrake, Caldera и Red Hat
применяется метод init,
присущий системам UNIX Sys V, который мы здесь и
обсудим.
Метод инициализации Sys V довольно
сложен и состоит из набора файлов сценариев. Сам
процесс инициализации разделен на уровни запуска.
На каждом уровне запуска выполняется набор
файлов сценариев для инициализации определенных
устройств, соответствующих данному уровню
запуска. На рис. 3.2 дается обзор сценариев,
используемых ОС Linux для загрузки
конфигурационной информации об уровнях запуска в
процессе начальной загрузки системы.
Рис. 3.2. Процесс начальной загрузки в
ОС Linux
Каталог
/etc/rc.d содержит сценарии, которые
запускаются в соответствии с уровнем запуска
init в системе.
Как правило, сервер на базе Linux функционирует
либо на 3-м уровне запуска (в режиме консоли),
либо на 5-м уровне (в режиме X Window). На том и
другом уровнях запуска используется один и тот
же сценарий для запуска сетевых устройств —
S10network, который находится в каталоге
/etc/rc.d/rc3.d
или в /etc/rc.d/rc5.d.
Сценарий S10network
запускает на сервере сетевые функции. Далее им
используется еще один сценарий —
ifup, который
пытается запустить все возможные сетевые
интерфейсы, сконфигурированные в процессе
начальной загрузки. Сценарий
ifup находится в
каталоге /etc/sysconfig/network-scripts.
Каждому сконфигурированному в ОС
Linux сетевому интерфейсу соответствует свой
файл в каталоге /etc/sysconfig/network-scripts.
Устройству /dev/eth0
соответствует файл
ifcfg-eth0. В листинге 3.1 показан пример
файла, созданного в ОС Linux для сетевого
устройства eth0.
1 DEVICE=ethO
2 IPADDR=192.168.1.1
3 NETMASK=255.255.255.8
4 NETWORK=192.168.1.0
5 BROADCAST=158.18.1.255
6 ONBOOT=yes
7 BOOTPROTO=none
Листинг 3.1. Пример
файла /etc/sysconfig/network-scripts/ifcfg-eth0
В файле
ifcfg-eth0 описываются переменные
окружения, которые используются сценарием
ifup для запуска
сетевых интерфейсов. Строка в сценарии
ifup, которая
обращается к этим переменным выглядит примерно
следующим образом:
ifconfig ${DEVICE} ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST}
Формат командной строки ifconfig в
сценарии ifup в
точности соответствует команде, вводимой вручную
из командной строки.
Если же вы вознамерились создать
собственный сценарий для нового сетевого
интерфейса, то он может и не быть столь сложным
и изощренным, как тот, что генерируется в Red
Hat Linux. Все, что вам нужно, — это вписать
необходимые строки
ifconfig для запуска сетевого интерфейса.
Если имя устройства и его IP-адрес известны, то
вам не придется использовать переменные
окружения и отдельно файлы конфигурации.
Достаточно лишь задать конфигурацию в одной
строке файла сценария
S10network.
Использование ifconfig
Программа
ifconfig является стандартной для
операционной системы Linux. Она используется для
идентификации и конфигурирования сетевых
устройств в системе Linux.
Эта программа может работать в
двух режимах:
ifconfig [interface]
ifconfig interface [aftype] options | address ...
Первый режим работы называется
режимом отчета. Он позволяет администратору
системы получать информацию о конфигурации от
установленных сетевых устройств. Второй режим
работы называется режимом конфигурирования. В
нем системный администратор может устанавливать
или изменять параметры конфигурации для сетевых
устройств. Далее эти режимы рассмотрены более
подробно.
Режим отчета
В режиме отчета
ifconfig выводит
информацию либо об одном сетевом интерфейсе,
либо обо всех имеющихся в системе интерфейсах.
Эта информация включает в себя набор аппаратных
и программных параметров устройства, а также
данные о его текущем состоянии. Каждому сетевому
устройству для нормальной работы требуется
несколько параметров. На рис. 3.3 приведен
пример сетевого устройства, работающего в ОС
Linux.
Рис. 3.3. Компоненты сетевого устройства
Как видно из рис. 3.3, одним из
наборов параметров сетевого устройства является
набор для конфигурации аппаратных параметров.
Аппаратное прерывание и базовый адрес
ввода-вывода используются для идентификации
сетевого адаптера в ОС Linux и должны быть
уникальными. Еще один набор параметров — это
программные параметры. Для нормальной работы ОС
Linux в IP-сети, в ней должны быть правильно
настроены параметры протокола IP. К ним
относятся уникальный IP-адрес, маска подсети и
широковещательный адрес для сети.
В листинге 3.2 приведен пример
работы команды ifconfig
в режиме отчета.
1 [alex@shadrach alex]$ /sbin/ifconfig
2 eth0 Link encap:Ethernet HWaddr 00:A0:24:9C:69:02
3 inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
4 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
5 RX packets:7948525 errors:0 dropped:0 overruns:0 frame:0
6 TX packets:22003 errors:0 dropped:0 overruns:0 carrier:0
7 collisions:72 txqueuelen:180
8 Interrupt:11 Base address:0x8400
10 lo Link encap:Local Loopback
11 inet addr:l27.0.0.1 Mask:255.0.0.0
12 UP LOOPBACK RUNNING MTU:3924 Metric:1
13 RX packets:38 errors:0 dropped:0 overruns:0 frame:0
14 TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
15 collisions:0 txqueuelen:0
16
17 [alex@shadrach alex]$
Листинг 3.2. Пример
работы команды ifconfig
В строке 1 листинга 3.2 показана
команда ifconfig,
заданная в командной строке. Возможно,
понадобится указать полный путь для выполнения
этой команды, если вы находитесь в системе не в
качестве пользователя
root. Строки со второй по восьмую
отображают информацию о первом найденном в
системе сетевом устройстве. Первый сетевой
адаптер Ethernet обычно обозначается в системе
как устройство eth0.
В строке 2 показан аппаратный или как его еще
называют МАС-адрес сетевого адаптера. Каждая
сетевая карта имеет свой уникальный МАС-адрес.
Это позволяет устройствам правильно
идентифицировать другие устройства в сети на
уровне обмена пакетами Ethernet. В строке 3
отображается IP-адрес сетевого устройства. В
нашем случае сетевому адаптеру назначен IP-адрес
192.168.1.1 и
маска подсети
255.255.255.0.
В строках 4–8 выдается
статистическая информация о сетевом адаптере.
Все приведенные здесь значения часто бывают
полезны при локализации неисправностей,
связанных с сетевым адаптером. В строке 4
отображается общая информация о состоянии
сетевого устройства. Если сетевое устройство
работает нормально, то в строке 4 Вы увидите
сообщения UP и
RUNNING. Строки
5–7 также можно использовать при поиске
неисправностей. Если сетевой адаптер не может
работать с другими устройствами, но при этом
значения в счетчиках передачи
TX и приема
RX пакетов растут
то, это означает, что сервер все-таки подключен
к сети, но, возможно, неправильно указан его IP-адрес.
Если наблюдается большое количество ошибок и
столкновений (коллизий), то это верный признак
наличия проблемы, связанной с сетью (поврежден
кабель или сетевой концентратор (хаб)).
В строках 10–15 отображается
информация о втором сетевом устройстве,
найденном в системе. Устройство
lo — это
специальное устройство типа "петля".
Устройство типа "петля" используется в
системе Linux для проверки возможности связи
операционной системы с использованием
стандартных сетевых протоколов с самой собой.
Адрес 127.0.0.1,
указанный в строке 11, является стандартным IP-адресом
для петельных устройств. Его нельзя использовать
в качестве сетевого адреса в ЛВС. Он
зарезервирован только для технических целей.
Режим конфигурирования
Конфигурирование с помощью
программы ifconfig
позволяет модифицировать различные параметры
сетевых устройств. Вначале следует указать
интерфейс, который будет конфигурироваться.
Затем можно указать семейство адресов (aftype).
Семейство адресов используется для отображения и
декодирования всех адресов протоколов в
ifconfig. В табл.
3.1 представлены все возможные семейства адресов.
Таблица 3.1. Семейство адресов
ifconfig
Семейство
адресов |
Описание |
inet |
TCP/IP (семейство по умолчанию) |
inet6 |
IP версии 6 |
ax25 |
пакетные радиосети AMPR |
ddp |
AppleTalk Phase 2 |
ipx |
Novell IPX |
netrom |
пакетные радиосети AMPR |
Если ни одно из семейств адресов
не указано, то по умолчанию принимается
семейство inet.
После семейства адресов при использовании
ifconfig можно
указывать другие параметры. В табл. 3.2
представлен список параметров, которые можно
задавать в ifconfig.
Таблица 3.2. Параметры команды
ifconfig
Параметр |
Описание |
interface |
Указывает устройство для модификации |
up |
Переводит интерфейс в активное
состояние |
down |
Переводит интерфейс в пассивное
состояние |
[-]arp |
Разрешает (запрещает) использование
протокола ARP |
[-]promisc |
Разрешает (запрещает) использование
случайного режима |
[-]allmulti |
Разрешает (запрещает) использование
циркулярной передачи |
metric N |
Определяет метрику для маршрутизации
интерфейса |
mtu N |
Определяет максимальный размер
передаваемого блока |
dstaddr |
Указывает IP-адрес пункта назначения
при соединении "точка-точка" |
netmask addr |
Устанавливает маску подсети |
add addr/prefixlen |
Назначает IP-адрес версии 6
интерфейсу |
del addr/prefixlen |
Удаляет IP-адрес версии 6,
назначенный интерфейсу |
tunnel
a.b.c.d |
Создает новое SIT устройство (IPv6 в
IPv4) |
irq addr |
Назначает устройству адрес
прерывания IRQ |
io_addr addr |
Назначает устройству адрес
ввода-вывода |
mem_start
addr |
Задает устройству начальный адрес в
памяти с совместным доступом |
media type |
Определяет тип физической среды,
используемой устройством |
[-]broadcast
[addr] |
Устанавливает широковещательный IP-адрес
или устанавливает (либо очищает)
широковещательный флажок для
нтерфейса |
[-]pointtopoint
[addr] |
Разрешает (запрещает) режим обмена
данными типа "точка-точка" IP-адресом
пункта назначения
addr |
hw class addr |
Устанавливает класс оборудования и
адрес для устройства |
multicast |
Устанавливает флажок циркулярной
передачи |
address |
Задает устройству IP-адрес |
txqueuelen
length |
Устанавливает длину очереди передачи
для устройства |
Как видно из табл. 3.2, при
конфигурировании сетевого устройства в программе
ifconfig можно
задавать множество различных параметров. В одной
командной строке можно задавать несколько
параметров.
Формат команды ifconfig
Программа
ifconfig
использует формат немного отличающийся от
того, к которому вы, вероятно, привыкли.
Заметьте, что все параметры указаны без
традиционного дефиса перед ними (-).
Установка параметров сетевого адаптера
С помощью
ifconfig в системе на базе ОС Linux
необходимо правильно сконфигурировать аппаратные
параметры сетевого адаптера, чтобы он был
опознан операционной системой. Если для этой
цели в сетевом адаптере используются перемычки (иногда
их называют джамперами от англ. jumper), то
установка сетевого адаптера намного облегчается.
Если же невозможно определить значения
аппаратного прерывания IRQ и адреса ввода-вывода,
то может понадобиться загрузка с диска с
системой MS-DOS и запуск диагностической
программы для сетевого адаптера. С ее помощью
можно установить значения аппаратных параметров
для сетевого адаптера. Возможно, когда-нибудь
производители сетевых адаптеров будут включать
версии диагностических программ для ОС Linux, но
пока приходится поступать, как описано выше.
Команда
ifconfig, задаваемая в командной строке,
выглядит примерно так:
ifconfig eth0 irq 9 io_addr 0x310
Указанная команда устанавливает
устройство /dev/eth0
как сетевой адаптер с прерыванием IRQ 9 и
базовым адресом ввода-вывода
310 (десятичное
число). После того как эта команда введена из
командной строки, для сетевого устройства в
таблице ядра создается запись, и система Linux
обнаружит сетевой адаптер. Для того чтобы
система Linux "запомнила" эти установки, данная
команда должна включаться в файл сценария
начальной загрузки, как это было описано выше.
Назначение IP-адресов
После того как аппаратные
параметры были сконфигурированы, системе Linux
для нормальной работы по сети требуется IP-адрес
и маска подсети.
С помощью программы ifconfig
можно назначить IP-адрес и маску подсети
определенному интерфейсу. Вот пример такой
команды:
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255
Этой командой назначается
IP-адрес 192.168.1.1
устройству /dev/eth0,
с маской подсети
255.255.255.0. Чтобы убедиться в том, что
IP-адреса назначены интерфейсам, просто наберите
в командной строке
ifconfig без параметров. При этом будет
представлена обновленная информация о сетевых
интерфейсах.
Итак, для системы на базе ОС
Linux, чтобы использовать аппаратные параметры
при последующих загрузках, необходимо создать
соответствующий сценарий загрузки с командой
ifconfig.
Использование netcfg
Не торопитесь писать собственный
сценарий для запуска программы ifconfig:
существует более легкий путь. В большинство
версий ОС Linux входит графическая оболочка X
Window, которая устраняет многие неудобства,
связанные с конфигурированием сетевых
интерфейсов и с написанием сценариев загрузки. В
Red Hat Linux и Mandrake Linux можно
использовать программу
netcfg. Те же самые функции в Caldera
OpenLinux выполняет Caldera Open Administrator
System (COAS).
Формат команды
netcfg довольно
прост:
netcfg
Да, это все. Нужно лишь помнить,
что при конфигурировании сетевых интерфейсов вы
должны обладать правами пользователя
root. На рис. 3.4
показано главное окно программы
netcfg.
Рис. 3.4. Главное окно программы netcfg
Первое окно, которое появляется
при вызове netcfg,
называется Имена (Names). В этом окне вы
можете изменить имя хоста, домена и сервера DNS,
ранее назначенные системе. Системе могут
назначаться несколько серверов DNS. В ОС Linux
можно назначать до трех серверов имен.
Далее, щелкнув на кнопке Хосты
(Hosts), можно вызвать окно, показанное на
рис. 3.5. В окне Хосты можно изменять файл
/etc/hosts на
сервере Linux. По умолчанию здесь указываются
адрес петли и локальный IP-адрес сервера. Имя
хоста localhost
является специальным для устройства типа "петля"
с IP-адресом 127.0.0.1.
Дополнительные имена хостов могут добавляться из
этого окна в файл
/etc/hosts. Если какие-нибудь имена
хостов будут часто использоваться клиентами
вашей сети, можно добавить их в файл
/etc/hosts для
ускорения обработки DNS-запросов. В лекции 4,
"DNS и доменные имена", функции файла
/etc/hosts описаны
более подробно.
Рис. 3.5. Окно Хосты программы netcfg
Щелчком мыши на кнопке
Интерфейсы (Interfaces) можно вызвать окно,
представленное на рис. 3.6. Окно Интерфейсы
позволяет добавлять, удалять и редактировать
сетевые интерфейсы в ОС Linux. Первым в списке
всегда выступает петельное устройство. Щелчком
мыши на кнопке Редактировать (Edit)
выбранный интерфейс вызывается в окно
Редактировать интерфейс Ethernet (Edit
Ethernet/Bus Interface). В этом окне
устанавливается IP-адрес и маска подсети для
интерфейса. Здесь же можно указать, нужно ли
активировать данный интерфейс при загрузке
системы. Если в вашей сети организовано
автоматическое распределение IP-адресов с
помощью протоколов BOOTP или DHCP, то его также
можно указать в данном окне. Все ваши настройки
автоматически будут добавляться в файл сценария
ifcfg-eth0. Более
подробно его работа описана в разделе "Конфигурирование
сетевых адаптеров во время начальной загрузки".
Как видите, настройка сетевых интерфейсов в X
Window намного легче, чем добавление сетевого
интерфейса вручную в файл сценария.
Рис. 3.6. Окно "Интерфейсы" программы
netcfg
Установка модемов
Для большинства серверов
электронной почты на базе Linux модем сегодня
является своеобразными воротами во внешний мир.
Если имеется сервер электронной почты,
подключенный к ЛВС, которая в свою очередь
подключена к сети Internet, то вполне
закономерно что для организации обмена
электронной почтой потребуется подключение к
провайдеру услуг сети Internet. Обычно такое
соединение организуется с помощью модема. На
сегодняшний день существует огромный выбор
модемов. В этом разделе мы попытаемся рассказать,
каким образом ОС Linux работает с модемными
устройствами, и представим различные типы
модемов, используемых с ОС Linux.
Последовательные порты в ОС Linux
Сетевые администраторы знакомы с
работой последовательных портов под управлением
операционных систем Microsoft MS-DOS и Windows в
IBM-совместимых ПК. Архитектура IBM-совместимых
ПК поддерживает последовательные порты,
известные как COM-порты. Эти порты нумеруются с
первого по четвертый, и каждый из них имеет
отдельное прерывание IRQ и свою пару адресов
ввода-вывода.
ОС Linux обнаруживает СОМ-порты в
системе, но использует свою систему нумерации. В
ОС Linux они называются tty-устройствами. Эти
устройства находятся в
/dev/ttySx, где х
обозначает номер коммуникационного порта. К
сожалению, ОС Linux использует систему нумерации
портов, отличную от принятой компанией
Microsoft. В ней нумерация последовательных
портов начинается с 0, а не с 1. В табл. 3.3
приведена нумерация последовательных портов в ОС
Linux и в MS-DOS.
Таблица 3.3. Последовательные
порты в ОС Linux
MS-DOS |
Linux |
IRQ |
Адрес
ввода-вывода |
COM 1 |
ttyS0 |
4 |
0x3f8 |
COM 2 |
ttyS1 |
3 |
0x2f8 |
COM 3 |
ttyS2 |
4 |
0x3e8 |
COM 4 |
ttyS3 |
3 |
0x2e8 |
Мультипортовые платы
В ОС Linux также
поддерживаются мультипортовые
последовательные устройства. В таких платах
совмещено несколько последовательных портов,
которые могут совместно использовать одно
прерывание IRQ. Для нормального
функционирования они используют специальные
программы-драйверы для разделения портов на
плате. При использовании таких устройств ОС
Linux выполняет нумерацию портов, начиная с
ttyS4. Довольно часто этим устройствам
требуются специальные драйверы для ядра
Linux, которые обычно поставляются
изготовителем мультипортовой платы.
В листинге 3.3 показаны
устройства ttySx
для стандартного IBM-совместимого ПК под
управлением Mandrake Linux с двумя СОМ портами и
модемом на порту СОМ4.
1 [alex@shadrach /dev]$ ls -al ttyS*
2 crw------- 1 root tty 4, 64 Nov 29 16:09 ttyS0
3 crw------- 1 root tty 4, 65 May 5 1998 ttyS1
4 crw------- 1 root tty 4, 66 May 5 1998 ttyS2
5 crw------- 1 root tty 4, 67 May 5 1998 ttyS3
6 [alex@shadrach /dev]$
Листинг 3.3. Список
устройств /dev/ttySx
Из листинга 3.3 видно, что, хотя
в данной системе используется только три
СОМ-порта, по умолчанию в операционной системе
Linux создаются записи для четырех основных
последовательных портов. Попытка использовать
устройство ttyS2
повлечет за собой появление ошибки.
В ОС Linux также поддерживается
набор зеркальных устройств с именами
/dev/cuax для
каждого устройства
/dev/ttySx. Устройства
cua предназначены
для того, чтобы упростить создание управляющих
программ. Устройства cua
позволяют прикладным программам подключаться к
портам, даже если не представлен сигнал несущей
(DCD). Сигнал DCD выдается модемом и говорит о
наличии соединения с удаленным модемом.
Программным обеспечением, которому в процессе
работы необходимо совершать выходные звонки,
используются главным образом эти устройства. При
этом не требуется наличие соединения, поскольку
это исходящий звонок. Поэтому в ОС Linux было
принято соглашение о том, что все программы,
инициирующие исходящие звонки, должны
использовать устройства
cua, а устройства
ttyS предназначены только для входящих
звонков. Ниже в листинге 3.4 приведен список
cua-устройств для
системы, рассмотренной в листинге 3.3, с
использованием Mandrake Linux.
[alex@shadrach /dev]$ ls -al cua*
crw------- 1 root root 5, 64 May 5 1998 cua0
crw------- 1 root root 5, 65 May 5 1998 cua1
crw------- 1 root root 5, 66 May 5 1998 cua2
crw------- 1 root root 5, 67 May 5 1998 cua3
[alex@shadrach /dev]$
Листинг 3.4. Список
устройств /dev/cuax
При одновременном использовании
программ для обслуживания исходящих и входящих
звонков возникает проблема с блокировкой порта
модема. Поэтому было принято решение
поддерживать разработку управляющего
программного обеспечения для устройств
ttyS. Это
оказалось намного легче, чем обслуживать два
различных имени устройств для одного и того же
физического устройства.
tty против cua
Избегайте использования
устройств cua,
даже если они имеются в вашем дистрибутиве
ОС Linux. Многими программами уже сегодня
генерируется предупреждающее сообщение, о
прекращении поддержки устройств с именем
cua в будущих
ядрах ОС Linux. Лучше всего обращаться к
последовательным портам по имени
tty.
Еще одно специальное устройство,
с которым вам, возможно, придется иметь дело, —устройство
/dev/modem. В
принципе это символическая связь с устройством
cua, к которому
подключен модем. Это устройство призвано
упростить обращение программ, которым требуется
работа с модемом, к портам. Теперь таким
программам нужно лишь обратиться к стандартному
устройству modem.
Большинство версий ОС Linux создают это
устройство еще при первой установке системы. В
Red Hat и Mandrake Linux, если вы хотите
установить модем позже, можно использовать
программу для среды X Window
modemtool для
создания символической связи с устройством
/dev/modem. На рис.
3.7 представлено окно программы
modemtool.
Рис. 3.7. Утилита modemtool
Команда setserial
Команда
setserial применяется для установки и
настройки отдельных последовательных портов в
системе на базе ОС Linux. Каждый порт,
используемый операционной системой Linux, должен
быть настроен командой
setserial. Как видно из листинга 3.3, по
умолчанию в системе на базе ОС Linux
конфигурируются четыре стандартных
последовательных СОМ-порта. Если имеющийся у вас
модем использует нестандартные прерывания IRQ и
адреса ввода-вывода или же используется
мультипортовая плата, то для правильного
конфигурирования портов в системе необходимо
использовать программу
setserial.
Команда
setserial используется в двух форматах:
setserial [-abqvVW] device [parameter 1[arg] ] ...
setserial -g [-abv] device ...
Опция -g
используется для запроса информации об указанных
в команде устройствах. В листинге 3.5 дается
пример работы команды
setserial в ОС Linux.
1 [root@shadrach rich]$ /sbin/setserial -g /dev/ttyS0 /dev/ttyS1 /dev/ttyS2 /dev/ttyS3
2 /dev/ttyS0, UART: 16550A, Port: 0x03f8, IRO: 4
3 /dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
4 /dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
5 /dev/ttyS3, UART: 16550A, Port: 0x02e8, IRQ: 3
6 [root@shadrach rich]$
Листинг 3.5. Пример
работы команды setserial
В первой строке листинга 3.5
присутствует команда
setserial с опцией
-g, с помощью которой на экран выводится
информация о конфигурации последовательных
портов. Запускать команду
setserial следует только с правами
пользователя root.
В строках 2–5 представлена информация о
последовательных портах для данной системы на
базе ОС Linux в ответ на запрос команды
setserial. В
каждой строке представлена информация об
отдельном порте. Обратите внимание, что в строке
4 не указан тип UART (стоит "unknown") для порта
ttyS2, так как
этот порт не используется. Это может ввести вас
в заблуждение, поскольку порта просто нет
физически.
С помощью одной или нескольких
опций, введенных в командной строке с командой
setserial, можно
управлять выводом информации на экран. По
умолчанию вывод на экран с помощью команды
setserial
производится с опцией -v,
как это показано в листинге 3.5. Если задать
опцию -b, то
выводятся обобщенные данные. Например:
/dev/ttyS0 at 0x03f8 (irq = 4) is a 16550A.
Здесь та же информация
представлена в компактном виде. Опция
-a используется
для получения подробного отчета о конфигурации
порта. Например:
/dev/ttyS0, Line 0, UART: 16550A,
Port: 0x03f8, IRQ: 4
Baud_base: 115200, close_delay: 50, divisor: 0
closing_wait: 3000, closing_wait2: infinite
Flags: spd_normal skip_test auto_irq session_lockout.
Опция -a
отображает значения всех параметров,
используемых операционной системой Linux для
управления портом. Все эти параметры можно
устанавливать, задавая команду setserial в
первом формате, как было показано выше. В табл.
3.4 приведены параметры, которые можно изменять
с помощью команды setserial.
Таблица 3.4. Параметры команды
setserial
Параметр |
Описание |
port N |
Задает устройству номер порта
ввода-вывода |
irq N |
Задает устройству номер прерывания
IRQ |
uart type |
Задает устройству тип порта UART |
autoconfigure |
Автоматическое назначение параметров
последовательному устройству |
auto_irq |
Автоматически определить номер
прерывания IRQ для последовательного
устройства |
^auto_irq |
Не пытаться автоматически определять
номер прерывания IRQ для
последовательного устройства во
время автоконфигурирования |
skip_test |
Пропустить тестирование UART в
течение автоконфигурирования |
^ skip_test |
Не пропускать тестирование UART в
течение автоконфигурирования |
baud_base |
Установить базовую скорость передачи
для порта (как правило, тактовая
частота, деленная на 16) |
spd_hi |
Работать со скоростью 57600 бит/с
при запросе приложением 38400 бит/с |
spd_vhi |
Работать со скоростью 115200 бит/с
при запросе приложением 38400 бит/с |
spd_cust |
Использовать наибольший общий
делитель при запросе приложением
38400 бит/с; установить
baud_base,
деленное на делитель |
spd_normal |
Работать со скоростью 38400 бит/с
при запросе приложением 38400 бит/с |
divisor |
Устанавливает значение
spd_cust |
sak |
Использовать клавишу "Break" в
качестве секретной |
^sak |
Запретить использование клавиши
"Break" в качестве секретной |
fourport |
Конфигурировать устройство в
качестве адаптера (платы) AST
Fourport |
^fourport |
Запретить конфигурировать устройство
в качестве адаптера (платы) AST
Fourport |
close_delay D |
Устанавливает интервал времени, в
течение которого сигнал DTR должен
оставаться низким после закрытия
порта, в сотых долях секунды (по
умолчанию 50) |
closing_wait
D |
Устанавливает интервал времени, в
течение которого ядро должно ожидать
пока данные поступят с
последовательного порта после его
закрытия, перед тем как приемник
будет отключен, в сотых долях
секунды. Отсутствует значение по
умолчанию, ожидать до бесконечности |
closing_wait2
D |
Устанавливает интервал времени, в
течение которого ядро должно ожидать
пока данные поступят с
последовательного порта после его
закрытия, после того как приемник
будет отключен, в сотых долях
секунды. По умолчанию
30 |
session_lockouot |
Блокировать доступ к порту другим
сеансам на время установки
исходящего соединения (cua) |
^session_lockouot |
Не блокировать доступ к порту другим
сеансам на время установки
исходящего соединения |
pgrp_lockout |
Блокировать доступ к порту другим
процессам на время установки
исходящего соединения |
^pgrp_lockout |
Не блокировать доступ к порту другим
процессам на время установки
исходящего соединения |
hup_notify |
Посылать уведомление о том, что
процесс ожидает установки исходящего
соединения |
^hup_notify |
Не посылать уведомление о том, что
процесс ожидает установки исходящего
соединения |
split_termios |
Воспринимать параметры портов для
входящих и исходящих соединений
отдельно |
^split_termios |
Не воспринимать параметры портов для
входящих и исходящих соединений
отдельно |
callout_nohup |
Если порт открыт для исходящего
соединения, не класть трубку при
пропадании несущей |
^callout_nohup |
Если порт открыт для исходящего
соединения, класть трубку при
пропадании несущей |
Команде
setserial всегда нужно задавать
устройство, с которым она будет работать. Если
используются значения адресов ввода-вывода и
номера прерывания IRQ по умолчанию, то их можно
не указывать в командной строке. Далее все
параметры можно вводить в командной строке в
произвольном порядке. Например:
setserial /dev/ttyS3 autoconfigure auto_irq skip_test
Этой строкой мы пытаемся
автоматически сконфигурировать последовательный
порт СОМ4.
Сценарии для setserial
Так же, как и в случае
программы ifconfig,
все настройки, сделанные программой
setserial, при
перезагрузке ядра ОС Linux стираются. Таким
образом, команду
setserial следует выполнять для
каждого СОМ-порта в системе при каждой
загрузке. Так как это довольно важная
функция, то большинство распространителей ОС
Linux включают в свои версии сценарии для
выполнения команды
setserial в процессе загрузки системы.
Сценарии загрузки для последовательных
портов
По умолчанию сценарии для
setserial
находятся в файле
/etc/rc.d/rc.setserial. В большинство
версий ОС Linux входит обобщенная версия этого
сценария, которую затем можно конфигурировать
под определенный сервер. В этом сценарии имеется
много строк для специфических ситуаций, таких
как, например, мультипортовые платы и
специальные модемные платы. В листинге 3.6
показан пример сценария из файла
rc.serial.
1 STD_FLAGS="session_lockout"
2 SETSERIAL=/sbin/setserial
3 WILD=false
4 SUMMARY=true
5
6 echo -n "Configuring serial ports...."
8 #################################################
9 #
10 # AUTOMATIC CONFIGURATION
11 #
12 # Uncomment the appropriate lines below to enable
13 # auto-configuration of a particular board.
14 #Or comment them out to disable them....
15 ################################################
16
17 # Do AUTOMATIC_IRQ probing
18 #
19 AUTO_IRQ=auto_irq
20
21 # These are the standard COM1 through COM4 devices
22 #
23 SetSerial /dev/ttyS0 ${AUTO_IRQ} skip_test autoconfig ${STD_FLAGS}
24 SetSerial /dev/ttyS1 ${AUTO_IRQ} skip_test autoconfig ${STD_FLAGS}
25 SetSerial /dev/ttyS2 ${AUTO_IRQ} skip_test autoconfig ${STD_FLAGS}
26 SetSerial /dev/ttyS3 ${AUTO_IRQ} autoconfig ${STD_FLAGS}
27
28 ###################################################
29 #
30 # MANUAL CONFIGURATION
31 #
32 # If you want to do manual configuration of one
33 # or more of your serial ports, uncomment
34 #and modify the relevant lines.
35 #
36 ###################################################
37
38 # These are the stahdard COM1 through COM4 devices
39 #
40 #SetSerial /dev/ttyS0 uart 16450 port 0x3F8 irq 4 ${STD_FLAGS}
41 #SetSerial /dev/ttyS1 uart 16450 port 0x2F8 irq 3 ${STD_FLAGS}
42 #SetSerial /dev/ttyS2 uart 16450 port 0x3E8 irq 4 ${STD_FLAGS}
43 #SetSerial /dev/ttyS3 uart 16450 port 0x2E8 irq 3 ${STD_FLASS}
44
45 echo "done."
46 ##################################################
47 #
48 # Print the results of the serial configuration process
49 #
50 ##################################################
51
52 if [ -n "$SUMMARY" ]; then
53 SetSerlal -bg /dev/ttyS?
54
55 if [ '/dev/ttyS??' != /dev/ttyS?? ]; then
56 SetSerial -bg /dev/ttyS??
57 fi
58 fi
Листинг 3.6.
Фрагмент сценария из /etc/rc.d/rc.serial
Итак, в листинге 3.6 в строках с
23 по 26 команда
setserial пытается автоматически
обнаружить и сконфигурировать четыре
последовательных порта на сервере. Если по
каким-либо причинам вы не желаете, чтобы
производилось автоматическое обнаружение портов,
просто закомментируйте эти строки и уберите
знаки комментария со строк 39–42. В этих строках
команде setserial
указывается использовать специальное прерывание
IRQ и адрес ввода-вывода для каждого
последовательного порта. Если же в системе
используется модем с нестандартными номером
прерывания IRQ и адресами ввода-вывода, то можно
установить соответствующие параметры в команде
setserial.
Конфигурирование модемов в ОС Linux
На сегодняшний день на рынке
предлагается огромное количество различных
модемов, которые могут работать с ОС Linux.
Однако следует проявить осторожность, так как
довольно много модемов пока не могут работать с
этой операционной системой. Выбирая модем,
помните, что вы балансируете между гладкой и
быстрой его установкой и ночным кошмаром для
администратора. В этом разделе мы постараемся
описать, на что необходимо обращать внимание при
покупке нового модема или при попытке установить
в ОС Linux один из модемов, который достался вам
в наследство от умершей бабушки.
Внешние модемы
В ОС Linux лучше всего
использовать стандартные внешние модемы. Модемы
этого типа подключаются к серверу на базе ОС
Linux через последовательный СОМ-порт
посредством стандартного 9- или 25-контактного
модемного кабеля, который можно приобрести в
любом компьютерном магазине. На момент выхода
курса текущим стандартом для модемов является
протокол V.90, который позволяет работать
модемам на скорости 56 Кбит/с. К сожалению, в
реальных условиях эта скорость достигается очень
редко. Скорость 56 Кбит/с достигается
применением специальных алгоритмов сжатия данных
и модуляции сигналов. В обычных линиях связи,
предназначенных для передачи речи, качество
сигнала недостаточно для работы на таких высоких
скоростях. Поэтому модемы, рассчитанные на 56
Кбит/с, работают обычно на скорости 38,4 Кбит/с.
Тем не менее использование протокола V.90
оправдано хотя бы с точки зрения использования
его возможностей по коррекции ошибок.
Если используются
высокоскоростные модемы, то с помощью внутренних
регистров модема можно установить скорость его
работы. Если скорость не определена, модем
пытается соединиться с сервером на той же
скорости, что и удаленный модем, которая, однако,
может варьироваться. Это зависит от качества
конкретной телефонной линии и удаленного модема.
Установив скорость обмена модема с портом 115200
бит/с, можно настроить последовательный порт в
ОС Linux со стандартными параметрами. Об этом
более подробно далее в этой лекции.
Внутренние модемы
Внутренние модемы намного сложнее
в работе по сравнению со своими внешними
собратьями. В использовании внутренних модемов с
операционной системой Linux имеется много
"подводных камней". Во-первых, следует напрочь
избегать модемов, маркированных как WinModem или
совместимых с ними. Эти модемы специально
разработаны для использования с операционными
системами Microsoft Windows 95 и 98. В комплект
их поставки не входит стандартный аппаратный
интерфейс и, соответственно, они не будут
работать с ОС Linux. Их принцип работы основан
на специальном программном обеспечении,
адаптированном для среды Windows 95-98.
Модемы PCI — еще одна головная
боль. Дело в том, что архитектура системной шины
PCI позволяет устройствам автоматически
конфигурироваться в процессе загрузки системы. В
зависимости от установленных в системе
устройств, каждое из них может запросить при
очередной загрузке системы любое свободное
прерывание IRQ и адрес порта ввода-вывода. К
моменту выхода курса в ядре Linux версии 2.2 еще
не была реализована поддержка модемов на шине
PCI. Однако в настоящее время в сообществе
потребителей ОС Linux ходят упорные слухи, что
уже в следующую версию ядра эта поддержка будет
включена. Если новая версия ядра уже доступна,
то можно проверить, насколько эти слухи верны.
А пока, если в системе имеется
модем на шине PCI, можно попытаться заставить
его работать с Linux вручную. В процессе
загрузки системы параметры устройств на шине PCI
отображаются базовой системой ввода-вывода BIOS.
Посмотрите, какое прерывание назначается во
время загрузки вашему модему, и вручную
запустите программу
setserial с соответствующим значением
прерывания. Хотя этот метод и не совсем
корректен, он должен сработать.
Обычные внутренние модемы,
предназначенные для работы с шиной ISA, работают
с ОС Linux вполне нормально. Чаще всего у них
имеется набор перемычек для установки их на
определенный СОМ-порт. Помните, что не следует
использовать СОМ-порт, который уже используется
в качестве внешнего порта. Также будьте
осторожны, если к этому же последовательному
порту подключены другие устройства. Все они
могут быть восприняты как модем на одном и том
же порту. Довольно часто можно столкнуться с тем,
что на порту СОМ1 имеется устройство-указатель (манипулятор
"мышь"). Помните, что порт СОМ1 использует то же
прерывание, что и порт СОМ3 (см. табл. 3.3).
Если установить внутренний модем на порт СОМ3,
то вполне можно лишиться мыши, так как вы не
сможете одновременно использовать их на одном и
том же прерывании. Чтобы избежать этого
конфликта, поставьте модем на порт СОМ4. Конечно,
если на порту СОМ2 уже имеется какое-либо
устройство, то это не решение проблемы. Все эти
проблемы подводят вас к использованию
нестандартной конфигурации для последовательных
портов. Вам нужно подобрать прерывание, которое
не используется никакими другими устройствами в
системе. Для этой цели в большинстве случаев
подходят прерывания 9, 10 и 11.
Модемы Plug-and-Play для шины ISA
Одна из необычных технологий в
IBM-совместимых ПК — использование устройств
plug-and-play для шины ISA. Эти устройства,
предшественники устройств для шины PCI, являются
как бы переходной ступенькой между технологиями
ISA и PCI. В них еще используется архитектура
шины ISA, но делается попытка автоматически
конфигурировать прерывания и адреса портов
ввода-вывода при загрузке системы. Linux
практически так же, как и в ситуации с шиной
PCI, не может автоматически определять модемы
PnP для шины ISA.
Однако существует несколько
программных утилит, которые могут помочь вам. С
целью конфигурирования модемов PnP для шины ISA
в ОС Linux Питер Фокс (Peter Fox) написал
несколько программных утилит. Так, например,
программа isapnp
может считывать конфигурационный файл, который
определяет все устройства PnP для шины ISA и
конфигурирует их соответствующим образом в ядре
ОС Linux. Если вы не знакомы с конфигурированием
устройств PnP для шины ISA, не отчаивайтесь,
программа pnpdump
может запросить все необходимые параметры и
создать файл конфигурации автоматически.
Формат
pnpdump:
pnpdump [ -- config] [ --script [=outputfile] ][ --reset] [-- ignoresum ]
[ -- showmasks] [ -- dumpregs] [ [ devs ] readport ]
По умолчанию программа
pnpdump сканирует
все PnP-платы на шине ISA и посылает
используемые ими ресурсы на стандартный вывод.
Затем pnpdump
сбрасывает все внутренние номера плат PnP и
блокирует каждую из них для тестирования.
Параметр devs,
задаваемый в командной строке, определяет
количество устройств, сканируемых программой
pnpdump. При этом
платы PnP не блокируются и не сбрасываются, но
должен быть указан соответствующий значению в
BIOS параметр readport.
По умолчанию
pnpdump отображает также ресурсы,
используемые платами PnP, но при этом отключает
строки в конфигурационном файле, отвечающие за
их настройку. Задавая параметр
--config, вы
даете, по сути, команду программе
pnpdump на
создание конфигурационного файла, который затем
программа isapnp
может использовать для настройки модема PnP на
шине ISA. В листинге 3.7 приведены фрагменты
конфигурационного файла, созданного для
PnP-модема на шине ISA командой
pnpdump -- config.
1 # $Id: pnpdump.c,v 1.16 1998/10/09 22:19:06 fox Exp $
2 # This is free software, see the sources for details.
3 # This software has NO WARRANTY, use at your OWN RISK
4 #
5 # For details of this file format, see isapnp.conf(5)
6 #
7 # For latest information on isapnp and pnpdump see:
8 # http://www.roestock.demon.co.uk/isapnptools/
9 #
10 # Compiler flags: -DREALTIME
11 #
12 #Trying port address 0203
13 # Board 1 has serial identifier 5b 10 0d 6a 0e 24 00 8c 0e
14 # Board 2 has serial identifier c5 00 00 11 11 01 00 36 10
15 #
16 # (DEBUG)
17 (READPORT 0x0203)
18 (ISOLATE PRESERVE)
19 (IDENTIFY *)
20 (VERBOSITY 2)
21 (CONFLICT (I0 FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING
22
23 #Card 2: (serial identifier c5 00 00 11 11 01 00 36 10)
24 # Vendor Id DAV0001, Serial Number 4369, checksum 0xC5.
25 # Version 1.0, Vendor version 1.0
26 # ANSI string -->DAVICOM 336PNP MODEM<--
27 #
28 # Logical device id DAV0336
29 # Device support I/O range check register
30 # Device supports vendor reserved register @ 0x39
31 # Device supports vendor reserved register @ 0x3a
32 # Device supports vendor reserved register @ 0x3d
33 #
34 # Edit the entries below to uncomment out the configuration required.
35 # Note that only the first value of any range is given, this may be changed
36 #if required. Don't forget to uncomment the activate (ACT Y) when happy
37
38 (CONFIGURE DAV0001/4369 (LD 0
39
40 #Multiple choice time, choose one only
41
42 # Start dependent functions: priority acceptable
43 # Logical device decodes 16 bit 10 address lines
44 # Minimum I0 base address 0x02f8
45 # Maximum I0 base address 0x02f8
46 # I0 base alignment 8 bytes
47 # Number of I0 addresses required: 8
48 (I0 0 (SIZE 8) (BASE 0x02f8))
49 # IRQ 3.
50 # High true, edge sensitive interrupt (by default)
51 [INT 0 (IRQ 3 (MODE +E)))
52
53 (NAME "DAV0001/4369[0]{DAVICOM 336PNP MODEM}")
54
55 # End dependent functions
56 (ACT Y)
57 ))
58 # End tag... Checksum 0x00 (OK)
59
60 # Returns all cards to the "Wait for Key" state
61 (WAITFORKEY)
Листинг 3.7. Пример
результатов работы команды pnpdump -- config
В листинге 3.7 представлена лишь
часть файла, генерируемого
pnpdump. Программа
pnpdump генерирует
все возможные комбинации настроек, но оставляет
активными лишь те, которые, с ее точки зрения,
наилучшим образом подходят для данной PnP-платы.
Результаты выполнения программы
pnpdump могут
перенаправляться в файл, где хранятся настройки
PnP-плат:
pnpdump -- config > /etc/isapnp.conf
Именно в файле
/etc/isapnp.conf
программа isapnp
попытается получить конфигурационную информацию,
если не указан какой-либо другой файл. После
того как конфигурационный файл создан,
запускается программа
isapnp. Формат команды
isapnp следующий:
isapnp conffile,
где
conffile — альтернативный путь к файлу
конфигурации. После запуска в системе на базе ОС
Linux программа isapnp
должна обнаружить модем PnP. И, наконец, для
завершения процесса настройки следует запустить
программу setserial
для порта, к которому привязан PnP-модем.
Подобно работе программы
setserial, вся
информация, которая генерируется программой
isapnp, помещается
в таблицы ядра ОС Linux и теряется при
перезагрузке системы. Эта проблема может быть
решена запуском соответствующего сценария во
время загрузки. В большинстве случаев в ОС Linux
программа isapnp
запускается при наличии файла
/etc/isapnp.conf.
Помните, что программа
setserial должна запускаться уже после
выполнения программы
isapnp для того, чтобы соответствующим
образом сконфигурировать последовательный порт с
целью использования PnP-модемом для шины ISA.
Модемы ISDN
Технология ISDN доступна уже на
протяжении нескольких лет, однако все это время
она применялась не слишком активно. Сегодня
ситуация в корне изменилась. По мере роста числа
пользователей сети Internet и ужесточения
требований к полосе пропускания модемы ISDN
стали популярны среди сервис-провайдеров
Internet и организаций, нуждающихся в
высокоскоростном доступе к этой сети.
Модемы ISDN могут организовывать
два цифровых канала передачи данных со скоростью
64 Кбит/с. Эти каналы можно объединить, получив
один канал со скоростью обмена данными 128
Кбит/с. Такое решение является идеальным для
небольших организаций, которым требуются такие
возможности сети Internet, как доступ к Web,
обмен файлами и электронной почтой.
Поддержка модемов ISDN в ОС Linux
появилась относительно недавно и еще находится в
процессе развития. В версию ядра Linux (2.2),
последнюю доступную на момент выхода этого курса,
включена базовая поддержка модемов ISDN.
Ожидается, что в последующие версии ядра будет
добавлено больше функций по поддержке ISDN.
Разработки по развитию поддержки ISDN в ОС Linux
велись главным образом в Германии. Группа
разработчиков SuSe Linux предложила набор утилит
ISDN4Linux, который помогает в установке и
настройке модема ISDN на сервере под управлением
ОС Linux. В табл. 3.5 представлен перечень
утилит из набора ISDN4Linux.
Таблица 3.5. Утилиты из набора
ISDN4Linux
Название утилиты |
Описание |
isdnctrlv |
Общая утилита для настройки
соединения |
iprofd |
Демон для выполнения команды AT&W0
на устройствах ttyI |
icnctrl |
Утилита для установки драйвера icn |
telesctrl |
Утилита для установки драйвера teles |
hisaxcrtl |
Утилита для установки драйвера HiSax |
pcbitctrl |
Утилита для установки драйвера pcbit |
avmcapictrl |
Утилита для установки драйвера avmb1 |
actctrl |
Утилита для установки драйвера
act2000 |
eiconctrl |
Утилита для установки драйвера eicon |
divertctrl |
Утилита для установки служб dss1 |
imon |
Утилита для мониторинга на базе
Ncurse |
imontty |
Утилита для мониторинга на базе tty |
isdnlog |
Протоколирование работы по ISDN-соединению |
ipppstats |
Утилита для сбора статистики по
синхронному PPP- соединению |
xisdnload |
xload-подобный монитор |
isdnmon |
Утилита для мониторинга на базе Tcl/Tk |
vbox |
Автоответчик + голосовой почтовый
ящик |
ipppd |
Демон, необходимый для работы по
синхронному PPP и MPP |
С набором утилит ISDN4Linux
предоставляются несколько документов, в которых
подробно описан процесс установки и настройки
модемов ISDN в системах на базе ОС Linux. Так
как поддержка ISDN в ОС Linux находится еще на
стадии становления, то, несомненно, следует
ожидает ее расширения в последующих версиях ОС
Linux.
Управление модемами в ОС Linux
После того как последовательный
порт сконфигурирован для использования модемом,
система Linux должна запустить специальную
программу для мониторинга телефонной линии,
наблюдающую за состоянием линии и определяющую,
используется ли она каким-либо устройством. Для
управления работой последовательного порта в ОС
Linux существует несколько программ, но чаще
всего для этой цели используется программа
getty. Программа
getty позволяет
модему осуществлять как исходящие звонки, так и
принимать входящие звонки. При установке
входящего соединения она инициирует прием
входящего звонка и передает управление программе
login, с помощью
которой производится проверка пароля и
идентификатора, введенных удаленным
пользователем.
Формат команды
getty:
getty [ -d defaults_file ] [ -a ] [ -h ] [ -r delay ] [-t timeout]
[-w waitfor] line [speed [type [lined]]]
Обычно программа
getty запускается
программой init
для управления работой модемных соединений.
Чтобы программа getty
запускалась, она должна быть прописана в файле
/etc/inittab. Файл
inittab содержит
список программ, которые должны запускаться
процессом init
после загрузки системы. Формат строки для файла
inittab следующий:
s1:345:respawn:/sbin/getty ttyS0 38400 vt100
Первое поле — это уникальная
метка, идентифицирующая точку входа для
программы getty в
файле inittab. Во
втором поле указываются уровни запуска
init, на которых
может выполняться данная программа. В нашем
случае getty может
выполняться на 3, 4 и 5 уровнях. В третьем поле
содержится информация для программы
init о режиме
запуска программы. Ключевое слово
respawn говорит
программе init о
том, что при внезапном останове программы
getty ее следует
перезапустить. Это необходимо, так как
getty должна наблюдать за состоянием
модема после завершения сеанса связи.
В четвертом поле следует команда
getty с
параметрами. В нашем примере программой
getty производится
мониторинг устройства
/dev/ttyS0 (порт СОМ1), которому
устанавливается скорость DTE 38400 бит/с. Таким
образом фиксируется скорость обмена данными
между модемом и последовательным портом ПК.
Последний параметр определяет тип эмулируемого
терминала, который будет использоваться для
данной линии. При активизации модемного
соединения программа
getty может выдавать приветственное
сообщение. Как раз для правильного
форматирования приветственного сообщения и
служит параметр типа эмулируемого терминала.
Резюме
Для связи сервера на базе ОС
Linux с другими хостами и рабочими станциями
следует установить соответствующее
телекоммуникационное оборудование. Для
взаимодействия с рабочими станциями в пределах
локальной вычислительной сети на сервере нужно
установить и сконфигурировать сетевой
интерфейсный адаптер Ethernet. Чтобы задать
соответствующие настройки IP для сетевого
адаптера, можно использовать программу
ifconfig. Имеются
также различные программы для графической среды
X-Window, с помощью которых также можно
сконфигурировать сетевой адаптер. Например, в
Red Hat- и Mandrake-версиях ОС Linux для этой
цели можно использовать программу
netcfg. Для
соединения сервера электронной почты с
провайдером услуг сети Internet требуется
наличие модема. С серверами на базе ОС Linux
могут работать различные типы модемов. Внешние
модемы с протоколом V.90 наиболее удобны в
настройке и работе, но их использование в
системе с ОС Linux возможно только при наличии
по крайней мере одного свободного СОМ-порта. С
ОС Linux можно также использовать стандартные
внутренние модемы для шины ISA. Модемы для шины
PCI сложны в настройке, но также могут работать
с ОС Linux. Программа
isapnp может использоваться также при
настройке модемов plug-and-play для шины ISA.
После установки модема следует запустить
программу setserial,
которая осуществляет настройку порта для
использования определенным устройством. После
того как ОС Linux обнаружит это устройство, для
управления установкой входящих и исходящих
соединений запускается программа
getty.
|