Библиотека сайта rus-linux.net
Последовательное оборудование и запрос login:
Когда-то очень распространенным вариантом Unix-систем был такой: одна мощная машина, а вокруг нее много тупых ("dumb") символьных терминалов или модемов. Сейчас такая схема очень редкая, что очень радует. А вот модемы сейчас очень распространены, хотя они используются обычно для сервисов SLIP и PPP (описаны в главе 7 и главе 8). Однако, каждая из этих конфигураций может использовать простую программу, названную getty.
Термин getty сокращение от "get tty"
Программа getty открывает последовательное устройство,
конфигурирует его, факультативно конфигурирует модем и ждет подключение,
которое будет сделано. Активное подключение на последовательном устройстве
обычно указывается Data Carrier Detect (DCD) штырьком в последовательном
шнуре. Когда происходит соединение, getty выдает
приглашение login:
и затем вызывает программу
login, чтобы обработать вход в систему. Каждый из
виртуальных терминалов (устройств /dev/tty1
) в
Linux имеет свою копию программы getty, запущенную
именно для него.
Имеется ряд различных версий getty, каждая разработанная, чтобы удовлетворить некоторые конфигурации лучше, чем другие. Версия getty, которую я опишу, названа mgetty. Она ориентирована на работу с модемами, что и принесло ей солидную популярность, включая поддержку для автоматических факсимильных программ и речевых модемов. При конфигурировании mgetty я сконцентрируюсь на ответах на стандартные вызовы для обмена данными.
Настройка mgetty Daemon
mgetty daemon доступен в исходных кодах с
ftp://alpha.greenie.net/pub/mgetty/source
и почти во всех дистрибутивах Linux. Демон mgetty
отличается от большинства других версий getty, которые
были разработаны для Hayes-совместимых модемов. Он поддерживает прямые
подключения терминала, но лучше всего подходит для dialup прикладных
программ. Вместо DCD-линии для определения входного подключения, эта версия
слушает сообщение RING
, генерируемое современными
модемами, когда они обнаруживают входящее обращение и не сконфигурированы для
автоответа.
Главный исполняемый модуль назван /usr/sbin/mgetty
, а основной файл настройки
/etc/mgetty/mgetty.config
. Имеется ряд других программ и файлов
конфигурации, которые покрывают другие свойства mgetty
.
Для большинства инсталляций настройка сводится к правке
/etc/mgetty/mgetty.config
и добавлении
соответствующих записей в файл /etc/inittab
, чтобы
выполнять mgetty автоматически.
Пример 4-6 показывает
очень простой файл настройки mgetty. Этот пример
определяет два последовательных устройства. Первое,
/dev/ttyS0
, поддерживает Hayes-модем со скоростью 38,400 bps. Второе,
/dev/ttyS0
, поддерживает терминал прямого доступа
VT100 со скоростью 19,200 bps.
Пример 4-6. Простой файл /etc/mgetty/mgetty.config
# mgetty configuration file # # this is a sample configuration file, see mgetty.info for details # comment lines start with a "#", empty lines are ignored # # ----- global section ----- # In this section, you put the global defaults, per-port stuff is below # # access the modem(s) with 38400 bps speed 38400 # # set the global debug level to "4" (default from policy.h) debug 4 # # ----- port specific section ----- # # Here you can put things that are valid only for one line, not the others # # # Hayes modem connected to ttyS0: don't do fax, less logging # port ttyS0 debug 3 data-only y # # direct connection of a VT100 terminal which doesn't like DTR drops # port ttyS1 direct y speed 19200 toggle-dtr n |
Файл конфигурации поддерживает глобальные и специфические для порта
параметры. В нашем примере мы использовали глобальную опцию, чтобы установить
быстродействие в 38,400 bps. Это значение унаследовано портом
ttyS0
. mgetty применяет
именно это значение, если в секции специфической информации для порта не
задано другое, как это сделано для ttyS1
.
Ключевое слово debug
управляет уровнем
детализации отчетов mgetty. Ключевое слово
data-only
в конфигурации ttyS0
предписывает mgetty игнорировать любые свойства
факс-модема, чтобы функционировать только как модем данных. Ключеове слово
direct
в конфигурации ttyS1
предписывает mgetty не делать попытку
инициализации модема на этом порте. Наконец, toggle-dtr
предписывает mgetty не делать попытку повесить
трубку при получении на линии сигнала DTR (Data Terminal Ready).
Вы можете также оставить пустым файл mgetty.config
и использовать параметры командной строки, чтобы определить те же самые
параметры. Документация, сопровождающая программу, включает полное описание
параметров командной строки и файла конфигурации mgetty
.
Мы должны добавить две записи в файл /etc/inittab
, чтобы активизировать эту конфигурацию. Файл
inittab
файл конфигурации команды init. Команда
init является ответственной за инициализацию системы.
Она автоматически выполняет программы при начальной загрузке и перезапускает
их, когда они завершаются. Это идеально для целей работы программы
getty.
T0:23:respawn:/sbin/mgetty ttyS0 T1:23:respawn:/sbin/mgetty ttyS1 |
Каждая строка файла /etc/inittab
содержит 4
поля, разделяемые двоеточиями. Первое поле является идентификатором. Оно
уникально маркирует запись в файле. Традиционно это два символа, но
современные версии позволяют четыре. Второе поле содержит список уровней
выполнения, на которых эта запись должна быть активна. Уровни выполнения
являются средством обеспечения альтернативных конфигураций системы. Они
связаны с наборами скриптов в каталогах /etc/rc1.d
,
/etc/rc2.d
и т.д. Третье поле описывает, когда
принять меры. Для работы программы getty оно должно
быть определено как respawn
. Это означает, что при
завершении программы, она будет запущена вновь. Имеется еще несколько
параметров, но они не важны для наших целей в данный момент. Четвертое поле
задает команду, которая будет выполнена. Именно здесь надо определить команду
mgetty и все необходимые ее параметры. В нашем простом
примере мы запускаем и перезапускаем mgetty, когда
система действует на уровнях выполнения 2 или 3 и передаем в качестве
аргумента только имя устройства для работы. Команда mgetty
подразумевает каталог /dev
, так что задавать
его явно в имени устройства не нужно.
Эта глава дает только общее представлдение о mgetty. Подробные сведения можно найти в Serial-HOWTO.
После правки файла конфигурации, надо перезапустить процесс init, чтобы изменения вступили в силу. Пошлите сигнал hangup процессу init. Он всегда имеет ID процесса равный единице, так что можно использовать команду:
#
|
Назад | Глобальное оглавление | Вперед |
Использование программ настройки | Локальное оглавление | Настройка сети TCP/IP |