Руководство FreeBSD
Пред. | Глава 22. Последовательные соединения | След.

# 22.3. Терминалы

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

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

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

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

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

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

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

- Простые (dumb) терминалы

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

- X терминалы

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

### 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  "/usr/libexec/getty std.38400"  wy50  on  insecure
    ttyd5   "/usr/libexec/getty std.19200"  vt100  on  insecure

  Первое поле, как правило, указывает имя специального файла терминала, в соответствии с его именем в `/dev`.
  Второе поле -- это команда, исполняемая для этого терминала, обычно 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.

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

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

  Четвертое поле определяет должен ли порт быть включен. Размещение здесь `on` укажет процессу `init` запустить программу, указанную во втором поле, `getty`. Если вы поместите `off` в это поле, команда `getty` не будет запущена и вход на этот порт станет невозможен.
  Последнее поле используется, чтобы указать, является ли порт безопасным. Пометка порта безопасным означает, что вы доверяете ему достаточно для того, чтобы разрешить учетной записи `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/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.