22.3. Терминалы

Предоставил Sean Kelly.

Терминалы предоставляют удобный и дешевый способ доступа к системе FreeBSD, когда вы не сидите за консолью компьютера и не подключены к сети. Этот раздел описывает использование терминалов в FreeBSD.

22.3.1. Пользователи и типы терминалов

В первых системах UNIX® не было консолей. Вместо этого, пользователи входили и запускали программы через терминалы, которые были подключены к последовательным портам компьютеров. Это очень похоже на использование модема и программного обеспечения терминала для дозвона до удаленной системы и выполнения только-текстовой работы.

Консоли современных PC поддерживают высококачественную графику, но возможность входа по последовательному порту на сегодняшний день все еще доступна почти в каждой UNIX подобной операционной системе; FreeBSD не исключение. Используя терминал, подключенный к неиспользуемому последовательному порту, вы можете войти и запустить текстовую программу, которую обычно запускаете в текстовой консоли или в окне xterm системы X Window.

Для корпоративных пользователей, вы можете подсоединить множество терминалов к системе FreeBSD и поставить их на столы пользователей. Для домашнего пользователя, устаревший IBM PC или Macintosh® может быть подключен в качестве терминала к более мощному компьютеру под управлением FreeBSD. Вы можете превратить однопользовательский компьютер в мощную многопользовательскую систему.

В FreeBSD три вида терминалов:

В оставшейся части раздела описывается каждый вид.

22.3.1.1. Простые терминалы

Простые терминалы это специализированное оборудование, позволяющее соединять компьютеры через последовательные линии. Они называются ''простыми'', поскольку их вычислительных возможностей хватает только для отображения, отправки и получения текста. Вы не сможете запустить на них никаких программ. Компьютер, к которому подсоединяется терминал, предоставляет все возможности для запуска текстовых редакторов, компиляторов, почтовых программ, игр и так далее.

Есть сотни видов простых терминалов, изготовленных различными производителями, включая DEC VT-100 и Wyse WY-75. Почти любой терминал может работать с FreeBSD. Некоторые high-end терминалы даже могут отображать графику, но только отдельные программные пакеты могут получить преимущество от этих расширенных возможностей.

Простые терминалы популярны в рабочей среде, где не требуется доступ к графическим приложениям, например тем, которые предоставляет система X Window.

22.3.1.2. PC, работающие в качестве терминалов

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

Это популярная домашняя конфигурация. Например, когда ваша вторая половина занята работой на системной консоли FreeBSD, вы можете одновременно выполнять только-текстовую работу с менее мощного персонального компьютера, подключенного к системе FreeBSD.

22.3.1.3. X терминалы

X терминалы это наиболее сложный тип существующих терминалов. Вместо подключения к последовательному порту, они обычно подключаются к сети, например Ethernet. Вместо работы только с текстовыми приложениями, они могут отображать любое X приложение.

Мы представляем X терминалы только ради полноты описания. Тем не менее, эта глава не охватывает установку, настройку или использование X терминалов.

22.3.2. Настройка

Этот раздел описывает, что нужно сделать для настройки системы FreeBSD и включения входа в систему через терминал. Предполагается, что вы уже подключили терминал и настроили ядро для включения поддержки последовательного порта, к которому он подключен.

Обратитесь к главе Гл. 12 за информацией о процессе init, отвечающем за контроль над всеми процессами и за инициализацию системы во время загрузки. Одна из задач, выполняемых init -- чтение файла /etc/ttys и запуск процесса getty на доступных терминалах. Процесс getty отвечает за чтение имени пользователя и запуск программы login.

Таким образом, для настройки терминалов в системе FreeBSD необходимо выполнить следующие действия под root:

  1. Добавить строку к /etc/ttys для файла из каталога /dev, представляющего последовательный порт, если этой строки еще нет.

  2. Настроить запуск команды /usr/libexec/getty на этом порту и указать соответствующий тип getty в файле /etc/gettytab.

  3. Указать тип терминала по умолчанию.

  4. Переключить порт в состояние ''on'' (''включен'')

  5. Указать, должен ли порт быть ''secure'' (''безопасным'')

  6. Заставить init перечитать файл /etc/ttys.

Опционально, вы можете настроить свой тип getty для использования на шаге 2, добавив описание в файл /etc/gettytab. За описанием обратитесь к страницам справочника gettytab(5) и getty(8).

22.3.2.1. Добавление строки в /etc/ttys

В файле /etc/ttys находится список всех портов системы FreeBSD, на которые возможен вход. Например, там находится первая виртуальная консоль ttyv0. Вы можете войти на консоль с помощью этой записи. Файл содержит записи и для других виртуальных консолей, последовательных портов, и псевдо-терминалов. Название файла последовательного порта из каталога /dev приводится без префикса /dev (например, устройство /dev/ttyv0 будет записано как ttyv0).

Установка FreeBSD по умолчанию включает файл /etc/ttys с поддержкой первых четырех последовательных портов: от ttyd0 до ttyd3. Если вы подключаете терминал к одному из этих портов, добавлять записи терминалов не потребуется.

Пример 22-1. Добавление записей терминалов в /etc/ttys

Предположим, вы хотите подключить два терминала к системе: Wyse-50 и старый 286 IBM PC с эмулятором терминала VT-100. Мы подключаем Wyse к второму последовательному порту и 286 к шестому последовательному порту (порт на мультипортовой карте). Соответствующие строки в /etc/ttys будут выглядеть так:

ttyd1(1)  "/usr/libexec/getty std.38400"(2)  wy50(3)  on(4)  insecure(5)
ttyd5   "/usr/libexec/getty std.19200"  vt100  on  insecure
     
(1)
Первое поле, как правило, указывает имя специального файла терминала, в соответствии с его именем в /dev.
(2)
Второе поле -- это команда, исполняемая для этого терминала, обычно getty(8). getty инициализирует и открывает линию, устанавливает ее скорость, приглашает пользователя к вводу имени пользователя, а затем выполняет программу login(1).

Программа getty принимает один (опциональный) параметр в командной строке, тип getty. Тип getty определяет характеристики терминальной линии, такие как значение bps и четность. Программа getty считывает эти характеристики из файла /etc/gettytab.

Файл /etc/gettytab содержит множество записей для терминалов, как для старых так и для новых. Почти во всех случаях запись, начинающаяся с текста std, предназначена для работы с аппаратными терминалами. Эти записи игнорируют четность. Запись std есть для каждого значения bps от 110 до 115200. Конечно, вы можете добавить собственные записи в этот файл. Страница справочника gettytab(5) содержит дополнительную информацию.

При установке типа getty в файле /etc/ttys убедитесь в наличии соответствующей записи терминала.

Например, Wyse-50 не использует четность и соединяется на 38400 bps. 286 PC не использует четность и соединяется на 19200 bps.

(3)
Третье поле определяет тип терминала, обычно подключаемого к этой линии tty. Для портов входящих соединений обычно используется значение unknown или dialup, поскольку пользователь может подключить практически любой тип терминала или программу. Для аппаратных терминалов тип не меняется, поэтому вы можете поместить в это поле определенный тип терминала из базы данных termcap(5).

Например, Wyse-50 использует реальный тип терминала, а 286 PC, работающий с Procomm, настроен на эмуляцию VT-100.

(4)
Четвертое поле определяет должен ли порт быть включен. Размещение здесь on укажет процессу init запустить программу, указанную во втором поле, getty. Если вы поместите off в это поле, команда getty не будет запущена и вход на этот порт станет невозможен.
(5)
Последнее поле используется, чтобы указать, является ли порт безопасным. Пометка порта безопасным означает, что вы доверяете ему достаточно для того, чтобы разрешить учетной записи root (или любой учетной записи с UID 0) входить с этого порта. Небезопасные порты не разрешат вход root. На небезопасном порту пользователи должны войти с через непривилегированную учетную запись, а затем использовать su(1) или подобный механизм для получения привилегий суперпользователя.

Настоятельно рекомендуется использовать ''insecure'' даже для терминалов, находящихся за закрытыми дверями. Довольно легко использовать su после входа, если вам потребуются привилегии суперпользователя.

22.3.2.2. Заставьте init перечитать /etc/ttys

После выполнения необходимых изменений в файле /etc/ttys, вам потребуется отправить сигнал SIGHUP (hangup) процессу init, чтобы заставить его перечитать его файл настройки. Например:

# kill -HUP 1

Замечание: init это всегда первый из запущенных в в системе процессов, поэтому его PID всегда 1.

Если все установлено правильно, все кабели на месте и терминалы включены, процесс getty должен быть запущен на каждом терминале и вы увидите приглашение ко входу на каждом терминале.

22.3.3. Решение проблем с соединением

Даже при самом внимательном отношении к деталям, при настройке терминала все же могут возникнуть проблемы. В этом разделе приведен список симптомов и предлагается несколько решений.

22.3.3.1. Не появляется приглашение ко входу

Убедитесь, что терминал подключен и его питание включено. Убедитесь, что эмулятор терминала запущен на соответствующем порту.

Убедитесь, что кабель хорошо подключен и к терминалу и к компьютеру с FreeBSD. Убедитесь, что правильно выбран тип кабеля.

Убедитесь, что терминал и FreeBSD имеют одинаковые установки значения bps и четности. Если у вас видео терминал, убедитесь, что контраст и яркость включены. Если это принт-терминал, убедитесь, что бумага и чернила в порядке.

Убедитесь, что процесс getty запущен и обслуживает терминал. Например, для получения списка запущенных процессов getty с помощью ps, выполните:

# ps -axww|grep getty

Вы должны увидеть строку для соответствующего терминала. Например, если getty запущена на втором последовательном порту ttyd1 и использует запись std.38400 из файла /etc/gettytab, отобразится следующее:

22189  d1  Is+    0:00.03 /usr/libexec/getty std.38400 ttyd1

Если процесс getty не запущен, убедитесь, что вы включили порт в /etc/ttys. Не забудьте также запустить kill -HUP 1 после изменения файла ttys.

Если процесс getty запущен, но на терминале по-прежнему не отображается приглашение ко входу, или если приглашение отображается, но войти невозможно, терминал или кабель, возможно, не поддерживают квитирование связи. Попробуйте изменить поле в /etc/ttys с std.38400 на 3wire.38400. Запись 3wire похожа на std, но игнорирует квитирование связи. Вам может потребоваться уменьшить скорость соединения или включить программный контроль передачи при использовании 3wire для предотвращения переполнений буфера.

22.3.3.2. Вместо приглашения ко входу на экране появляется ''мусор''

Убедитесь, что терминал и FreeBSD имеют одинаковые установки значения bps и четности. Проверьте процесс getty, чтобы убедиться, что используется подходящий тип getty. Если это не так, отредактируйте /etc/ttys и запустите kill -HUP 1.

22.3.3.3. Символы появляются дважды, пароль отображается при вводе

Переключите терминал (или программу эмулятора терминала) с ''half duplex'' или ''local echo'' на ''full duplex''.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.