Подключаемый терминал должен быть описан в таблице
/etc/ttytab

ttya "/usr/etc/getty std.9600" vt100  on local secure
ttyb "/usr/etc/getty std.9600" dialup on remote

std.9600 - метка описания терминальных характеристик в файле
/etc/gettytab


Для поддержки работы модема

Отключить программное обнаружение carrier (поскольку на линии
с модемным управлением несущая опознается аппаратно)

   ttysoftcar -n ttya

Или разобраться с запуском в /etc/rc - где написано так:

   /usr/etc/ttysoftcar -a 2> /dev/null

Для всех линий из /etc/ttytab, которые local, ставит програмно,
а которые remote - ставит для них аппаратное обнаружение.

Для работы dialup (наружу) необходимо иметь cua* файл, его
минор = минор tty* + 128

 ls -al /dev/ttya /dev/cua0
crw-rw---- 1 root  uucp  12,   0  Mar 30 07:21 /dev/ttya
crw-rw---- 1 root  uucp  12, 128  Mar 30 07:21 /dev/cua0

и записать его  в /etc/ttytab
cua0 "/usr/etc/getty std.9600" unknown off remote

Звонить можно программой /usr/bin/tip
Удаленные системы должны быть описанны в файле /etc/remote
  tip [ -speed ] hostname | phone-number ]



 Оригинал этого фрагмента лежит на
http://members.tripod.com/Vitaly_Filatov/faq/faq_index.html


/dev/term/N и /dev/cua/N

В этом документе объясняется разница в использовании файлов устройства
последовательного порта /dev/term/N и /dev/cua/N, где N - одна и та-же буква или цифра.
Оба файла предназначены для доступа к одному и тому-же физическому устройству
последовательного порта.

Несмотря на то, что документ в основном предназначен для пользователей Solaris 2.x
(SVR4), он так-же может быть полезен для пользователей Solaris 1.x (BSD-UNIX).

Файлы устройств

Файлы в директориях /dev/term и /dev/cua на самом деле являются просто синонимами
(soft-links) файлов устройств последовательного порта, которые расположены в
директории /devices.

Посмотрим на вывод команды ls:

# ls -lL /dev/term/* /dev/cua/*
crw-------    1 lp     sys      29,     0 Jul  6 14:31 /dev/term/a
crw--w----    1 uucp   tty      29,     1 Mar 10 12:14 /dev/term/b
crw-rw-rw-    1 root   sys      29,131072 Jul  6 14:31 /dev/cua/a
crw-rw-rw-    1 uucp   7152     29,131073 Jul 10 12:14 /dev/cua/b
                                ^^ ^^^^^^
                                |    |
Major Device Number -------------    |
Minor Device Number ------------------

Значения, которые имеют старший номер устройства (Major Device Number) и младший
номер устройства (Minor Device Number) данного файла устройства определяют
свойства, которыми обладает физическое устройство последовательного порта, при
доступе к нему через данный файл.

Старший номер устройства - один и тот-же для каждого набора последовательных
устройств. Например, в вышеприведённом случае имеются два последовательных порта
на материнской плате, которые имеют один и тот-же старший номер устройства.
Старший номер устройства присваивается операционной системой.

Значение младшего номера устройства, однако, влияет на поведение устройства. На
поведение устройства также влияет связка (linking) файла с физическим устройством
последовательного порта.

Для файлов устройств /dev/term/N, младший номер устройства является
последовательным номером, начинающимся с нуля, и этот номер ассоциирует файл
устройства с физическим последовательным портом. Для файлов устройств /dev/cua/N,
младший номер устройства тот-же самый, что и для /dev/term/N, за исключением того,
что его наиболее значимый бит установлен в "1". Это приводит к тому, что в Solaris 2.x
(SunOS 5.x) к младшему номеру устройства добавляется 131072, а в Solaris 1.x (SunOS
4.x) добавляется 128. Причиной различия является тот факт, что длина структуры, которая
представляет младший номер устройства в Solaris 2 больше, чем в Solaris 1.

В вышеприведённом выводе команды ls на системе Solaris 2.x, видно, что устройство
/dev/term/b имеет старший/младший номера 29 и 1, и теперь мы уже знаем, что
соответствующий файл устройства /dev/cua/b будет иметь старший номер 29 и младший
номер 1 + 131072 = 131073.

Соглашения об именах файлов устройств

В действительности, имена файлов устройств условны, важны только старший и младший
номера устройств. Однако, не рекомендуется изменять имена файлов устройств в Solaris
2.x, так как можно нарушить выполнение процедуры автоконфигурации системы (boot -r).

Разница между Solaris 2.x и Solaris 1.x в присвоении имён
файлам устройств

Соглашения о присвоении имён файлам устройств в Solaris 2.x и Solaris 1.x слегка
отличаются. Эквивалентом для /dev/term/[0123...] в Solaris 1.x являются имена
/dev/tty[abcd...], а для /dev/cua/[0123...] имена /dev/cua[abcd...].

Как создаются файлы устройств?

В Solaris 2.x как /dev/term/N так и /dev/cua/N обычно создаются во время загрузки
операционной системы по команде "boot -r".

В Solaris 1.x только файлы /dev/term/tty* создаются операционной системой. Системный
администратор должен создать соответствующие файлы /dev/cua* используя команду
mknod(8). Смотри раздел "Adding a Modem to your System" в главе 11 книги "Solaris 1.x
System and Network Administration Guide".

В чём-же разница между /dev/term/N и /dev/cua/N?

Если процесс для доступа к последовательному порту использует файл /dev/term/N, то
вначале операционная система проверяет: присутствует ли сигнал Data Carrier Detect
(DCD). Сигнал DCD соответствует контакту номер 8 25-контактного разъёма
последовательного порта. Если сигнал не присутствует, то попытка доступа процесса к
последовательному порту блокируется до появления сигнала DCD. Как только
появляется сигнал DCD, выполнение процесса возобновляется и ему разрешается доступ
к порту. Такое поведение известно как ожидание "аппаратной несущей" (hardware
carrier): процесс ждёт появление сигнала "несущей" выставляемого аппаратурой
присоединённой к последовательному порту.

Это особенно полезно для модемов. Процессы ttymon/getty блокируются на порту (это
можно увидеть с помощью команды truss) до того момента, когда приходящий звонок
становится причиной появления сигнала DCD. В этот момент ttymon получает доступ к
порту и выдаёт подсказку "login: " и запускает процесс login. Когда пользователь выходит
и модем отсоединяется, сигнал DCD больше не выдаётся модемом и, в результате,
когда несколько мгновений спустя запустится новый процесс ttymon/getty он также будет
заблокирован до установки нового модемного соединения.

Если, с другой стороны, для доступа к последовательному порту будет использован файл
/dev/cua/N, процесс немедленно получит доступ к порту невзирая на состояние сигнала
DCD. Такое поведение обычно называют "программная несущая" (software carrier), так
как сигнал DCD моделируется программой драйвера последовательного порта,
входящей в состав ядра системы.

Это означает, что модем может использоваться как для звонка в систему, так и для
звонка из системы. В этом случае процесс ttymon/getty может "висеть" на /dev/term/N и
ждать ответ модема на входящий звонок, а в это время локальные пользователи
системы могут использовать устройство /dev/cua/N для того, чтобы звонить из системы в
те периоды времени, когда модем не используется для входящих звонков (устройство
dev/cua/N не может быть доступно в то время когда используется устройство
/dev/term/N и наоборот).

Программное управление сигналом "аппаратная несущая"

Устройство /dev/term/N может быть программно выставлено так, что в дальнейшем
состояние сигнала DCD от устройства будет игнорироваться.

Для этого можно воспользоваться программой, написанной на С или на другом языке
программирования, однако системный администратор имеет утилиту для того, чтобы
сделать это во время выполнения стандартной процедуры установки терминала/модема.
Программная генерация сигнала несущей "software carrier" может быть задана в
процедуре установки устройства /dev/term/N, при использовании Serial Port Manager из
утилиты admintool, входящей в состав Solaris версий 2.3 и выше. Обычно программная
генерация сигнала несущей используется при подсоединении к последовательному порту
терминала вместо модема, хотя некоторые типы терминалов могут быть по желанию
сконфигурированы так, чтобы использовать аппаратный сигнал DCD.

Эквивалентной процедурой в Solaris 1.x является установка флага "local" для устройства в
файле /etc/ttytab.

Однако невозможно сконфигурировать файл устройства /dev/cua/N так, чтобы
использовать сигнал "аппаратной несущей", то есть, чтобы поведение этого устройства
было таким-же, как поведение по умолчанию устройства /dev/term/N - блокирование
доступа к порту до момента появления сигнала DCD от аппаратуры (контакт номер 8
25-контактного разъёма последовательного порта).

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



Copyright © 1996 Sun Microsystems, Inc., 2550 Garcia Ave., Mtn. View, CA 94043-1100 USA.
All rights reserved.
Перевод: Copyright © 1996 Виталий Филатов All Rights Reserved.



Начальная инициализация Sun

1. Подключите модем к Sun. Используйте либо порт A либо B и убедитесь, что
подключение будет произведено "модемным" кабелем c задействованными контактами
1-8 и 20. Если Ваша система имеет разъём на который выведены оба порта A и B
одновременно (например, это SPARC Station 10, Classic/LX и т. д.) и Вы хотите
использовать для подключения модема порт B, то в этом случае необходим разветвитель
(p/n X985A).

2. Войдите как root и установите следующие значения eeprom:

        eeprom ttya-ignore-cd=false  (дл порта A)

или

        eeprom ttyb-ignore-cd=false  (дл порта B)

Подайте команду halt и, после останова системы, проверьте правильность установки
eeprom с помощью команды printenv. Загрузите систему командой boot или b. Войдите
как root.

3. Убедитесь, что процесс getty не выполняется на порту к которому Вы подключили
модем. Для этого используйте команду:

        ps -aux | grep getty

Вы можете получить строку вида:

        root  308  0.0 0.0 40 0  a IW 13:38 0:00  - cons8 ttya (getty)

Если процесс присутствует, редактируйте файл "/etc/ttytab" и вставьте знак "#" в начало
соответствующей строки файла, например:

        #ttya   "/usr/etc/getty cons8"  wyse50  on local secure

затем подайте команду "kill -HUP 1", чтобы уничтожить процесс. Убедитесь, что процесс
не выполняется с помощью команды ps, как было описано выше.

4. Добавьте следующие строки в файл "/etc/gettytab". Это будет использовано системой
для настройки скорости порта:

        #
        # Modem dial-in getty entries
        #
        D38400|Fast-Dial-38400: :sp#38400:p8:ms=crtscts:
        D19200|Fast-Dial-19200: :sp#19200:p8:ms=crtscts:
        D9600|Fast-Dial-9600:   :sp#9600:p8:ms=crtscts:

Здесь "p8" устанавливает для принимаемых данных следующие параметры: размер 8
бит, 1 стоповый бит, без контроля четности, как принято в большинстве случаев. Если Вы
уберёте "p8", то будут взяты значения, принятые в Sun по умолчанию: размер 7 бит, 1
стоповый бит, контроль чётности even. Параметр "ms=crtscts" устанавливает аппаратный
режим управления потоком данных между модемом и последовательным портом.
Имейте в виду, что Sun поддерживает только следующие значения скорости
последовательного порта: 2400, 9600, 19200 и 38400.

5. Редактируйте файл "/etc/ttytab":

        ttya    "/usr/etc/getty D9600"  dialup  on remote secure
           ^                      ^
           |                      |_____Измените на D9600, D19200, D38400
           |                            в зависимости от желаемой скорости
           |                            модема. Это ссылка на метку в файле
           |                            "/etc/gettytab"/
           |____Измените на ttyb, если модем подключён к порту B.

6. Создайте устройства для доступа к модему (dialout), если они ещё отсутствуют:

        cd /dev
        mknod cua0 c 12 128
        mknod cua1 c 12 129
        chmod 666 cua0 cua1
        chown uucp cua0 cua1

Этими устройствами будут "/dev/cua0" для ttya (порт A) и "/dev/cua1" для ttyb (порт B).

7. Подайте команду:

        /usr/etc/ttysoftcar -n ttya

Эта команда запрещает программную генерацию сигнала несущей. Впоследствии
монитор последовательного порта getty будет реагировать на наличие аппаратного
сигнала Carrier Detect. Если после выдачи команды система "зависнет" и приглашение не
появится, то это означает, что процесс getty всё-ещё выполняется. Уничтожьте его, как
описано в пункте 3.

Настройка модема

Вы должны внимательно проанализировать документацию на модем и настроить его
согласно требованим Sun. Если у Вас возникают вопросы, касающиеся процедуры
настройки модема - обратитесь в службу поддержки производителя модема.
Приложение A содержит примеры инициализации и установки регистров модема. Так
как, необходимые настройки могут меняться при модификации модема, то эти примеры
Вы можете использовать только как руководство к действию. Настройку модема
производите по следующей процедуре:

1. Подготовьтесь к связи с модемом при помощи команды tip. Дл этого:

a. Модифицируйте файл "/etc/remote" и добавьте следующие строки после раздела,
начинающегося с "hardwire:\"

Для порта A:
hardwire:\
        :dv=/dev/cua0:br#9600:el=^C^S^Q^U^D:ie=%$:oe=^D:
modem1:\                        <---добавьте эту и следующую строку
      :dv=/dev/cua0:br#9600:
                       ^
                       |_____скорость передачи порта*
                             Должна быть той-же самой, что и скорость,
                             установленная для getty. Если в ttytab
                             использовалось D9600, то здесь Вы должны
                             использовать br#9600.
Для порта B:
hardwire:\
        :dv=/dev/cua0:br#9600:el=^C^S^Q^U^D:ie=%$:oe=^D:
modem1:\                        <---добавьте эту и следующую строку
      :dv=/dev/cua1:br#9600:
                       ^
                       |_____скорость передачи порта*
                             Должна быть той-же самой что и скорость,
                             установленная для getty. Если в ttytab
                             использовалось D9600, то здесь Вы должны
                             использовать br#9600.

* Если Вы используете модем на 28.8k, используйте для скорости передачи порта 38400;
для модема на 14.4k используйте 19200, а для модема на 9600 используйте 9600.

b. После модификации файла "/etc/remote" и смены прав доступа к порту, запустите
shelltool и подайте из него следующую команду:

        tip modem1      (Используйте только shelltool у которого запрещена прокрутка!)

Вы должны получить сообщение "connected". Если же Вы получили другое сообщение,
например, "all ports busy" - проверьте правильность информации в файле "/etc/remote".

c. Проверьте, что модем отвечает на команды. Напечатайте:

        AT

и Вы должны увидеть ответ от модема "OK".

Внимание: Еще раз подчеркнём, что Вы должны вызывать tip только в shelltool у которого
запрещена прокрутка. В противном случае в модем может быть не послан необходимый
для него символ возврата каретки (CR).

2. Инициализируйте модем. Для этого:

a. Обратитесь к приложению A и найдите тип используемого Вами модема. Если Вам
повезло, то установите dip переключатели так, как описано, и используйте приведённую
строку для инициализации модема. Например, для модема US Robotics Courier
напечатайте:

        AT&F1&B1&C1&D2X0S0=1&W

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

c. После установки модема, выйдите из программы "tip" напечатав последовательность:

        ~.

("возврат каретки", за которым следуют символы "~" и ".")

Запуск процесса Login

Последующие операции запускают процесс getty, что позволяет получить login от модема.

1. Стартуйте новый процесс getty (login service), напечатав следующую команду:

        kill -HUP 1

2. Проверьте, что процесс getty выполняется:

        ps -aux | grep getty

Ответ может быть, например, таким:

        root  557  0.0 0.0  40    0  co IW 09:02  0:00 - cons8 console (getty)
        root  558  0.0 0.0  40    0  a  IW 09:02  0:00 - D9600 ttya (getty)
        root  596  0.0 1.6  32  196  p1 IW 09:51  0:00 grep getty

Процесс 558 - это getty для обслуживания login service для модема.

Требования Sun к модему

Убедитесь, что модем поддерживает сигнал DTR (Data Terminal Ready). Когда система
сбрасывает DTR, модем должен вешать трубку. Если DTR сигнал не предъявляется -
модем не должен отвечать.

Используйте аппаратный сигнал CD (Carrier Detect). Модем активизирует линию CD
только если имеется активный сигнал Carrier Detect от телефонного соединения. Если
несущая исчезнет, из-за обрыва связи или завершения телефонного звонка, система
будет уведомлена и будет действовать соответствующем образом.

Модем либо должен возвращать код ответа только при ответе, либо не слать его совсем.

Скорость последовательного порта модема должна быть постоянной. Если модем не
поддерживает это свойство - его нельзя использовать для Sun/UNIX системы.

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

Приложение A

Строки инициализации модемов

Приведены примеры строк инициализации модемов для работы в обе стороны
одновременно (dialin и dialout).

Hayes Optima/Acura:

        AT&FN0Q2X0&C1&D2S0=1&W

US Robotics Courier:

        AT&F1&B1&C1&D2X0S0=1&W

        Установка dip-переключателей:
                Switch          Settings
                1               OFF
                2               OFF
                3               ON
                4               OFF
                5               ON
                6               OFF
                7               ON
                8               ON
                9               OFF
                10              OFF

US Robotics Sportster:

        AT&F1&B1&C1&D2X0S0=1&W

        Установка dip-переключателей:
                Switch          Settings
                1               OFF
                2               OFF
                3               ON
                4               OFF
                5               OFF
                6               OFF
                7               OFF
                8               ON

Telebit:

        Модемы WorldBlazer, T3000 или T1600:
                AT &F3 E1 X0 &S0 S2=255 S45=255 S48=0 S58=2 &W
                AT S0=1 S59=15 S68=255 S111=255 S180=2 &C1 &W

        Модемы T2500, TrailBlazer Plus, T2000 или T1000:
                AT &F X0 Q4 S45=255 S48=1 S51=254 S52=2 S54=3 &W
                AT S0=1 S58=2 S64=1 S66=1 S95=2 S97=1 S106=1 S131=1 &W

GVC 288 V.34:

        AT&F2E0Q1S0=1&C1&D2&W&W1

Black Box Corporation, Modem 144FX:


        ATN0S37=0S0=1Q1&C1&D2&K3&W

Приложение B

Возможные неисправности и методы их устранения

1. При попытке войти в Sun с удалённой системы на экране удалённой системы
виден "мусор"

Это обычно является индикатором того, что скорость физического порта модема и
скорость сконфигурированного монитора порта в Sun не совпадают. Проверьте скорость
порта модема и убедитесь, что она соответствует скорости Sun. Подсоединитесь к
модему из локальной системы с помощью tip и проверьте конфигурацию модема.
Попытайтесь снова послать строку инициализации. Используйте для команды tip точно
такую-же скорость какая установлена в ttytab для getty.

2. При звонке на удалённую систему модем отвечает, слышны переговоры
модемов, затем один из модемов кладёт трубку и появлется CALL FAILED

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

3. Что означает сообщение "all ports busy" из программы tip?

Какой-то другой процесс открыл порт. Это может быть либо другая сессия tip,
программа lp, процесс getty или, не до конца уничтоженный, процесс tip/cu. Кроме этого,
например:
a. Кто-то звонит Вам, поэтому модем активен.
б. Модем постоянно получает сигнал DCD. Модем должен быть сконфигурирован так,
чтобы Data Carrier Detect появлялся только тогда, когда несущая от удалённого модема
зарегистрирована. Посмотрите в документации на модем как это сделать.
Уничтожьте процесс getty и пошлите на модем строку инициализации.

4. Что означает сообщение "permission denied or link down" из программы tip?

Убедитесь, что Вы имеете строки с "dv=/dev/cua0" или "dv=/dev/cua1" в файле /etc/remote.
Проверьте наличие файла блокировки *.LCK в директории /var/spool/locks и уничтожьте
этот файл. Проверьте права доступа к устройствам /dev/cua0 или /dev/cua1 и их хозяина.

5. Модем не отсоединяется или пользователь остаётся в системе даже после
рассоединения

Модем сконфигурирован неправильно. Модем должен быть сконфигурирован так, чтобы
сигнал Data Carrier Detect появлялся только тогда, когда несущая от удалённого модема
зарегистрирована. Посмотрите в документации на модем как это сделать.

6. Невозможно обратиться к модему по команде tip

Проверьте кабель модема. Убедитесь, что Вы используете нужный порт. Также важно,
чтобы tip был выдан из shelltool с запрещенной прокруткой, а не из cmdtool, где прокрутка
разрешена.

7. При звонке на Sun модем не снимает трубку

Модем сконфигурирован неправильно. Проверьте, что модем установлен в режим
автоответа (обычно это S0=1). Убедитесь, что лампочка модема DTR или TR горит, что
указывает что сигнал Data Terminal Ready выдаётся из Sun.

8. Приглашение "Login:" искажено

Если приглашение искажено и, например, выглядит как "Logn:" или "Logi" и ничего не
происходит при нажатии клавиши , но происходит при нажатии  или
"Control-J". Переконфигурируйте модем удаленного компьютера, чтобы установить
размер данных 8 бит, 1 стоповый бит, без контроля чётности.

9. Невозможно войти: кажется что пароль неверен

Это проблема связана с контролем чётности. Порождённая сессия terminal/tip использует
чётность, которая отличается от используемой getty.

10. Нет приглашения "login:"

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



Copyright © 1996 Sun Microsystems, Inc., 2550 Garcia Ave., Mtn. View, CA 94043-1100 USA.
All rights reserved.
Перевод: Copyright © 1996 Виталий Филатов All Rights Reserved.


Популярность: 16, Last-modified: Tue, 18 Sep 2001 19:04:29 GmT