от Димитър Василев(25-02-2003)

рейтинг (13)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

Глава 17: Серийни комуникации

Превод: Димитър Василев ака botzko/FreeJak

12/2002-02/2003 за нуждите на FreeBSD-BG documentation project


17.1 Предговор

Unix винаги е подържал серийните комуникации. В същност, най-първите Unix машини разчитаха на серийни кабели за въвеждане и извеждане на потребителските данни. Нещата много се промениха от времената, когато средно-статистическият терминал се състоеше от сериен принтер със скорост 10 знака в секунда и клавиатура. Тази глава ще обхване някои от случаите, в които FreeBSD ползва серийни комуникации.

След прочита на тази глава, вие ще знаете:

  1. как да свържете терминалите към вашата FreeBSD система
  2. как да използвате модем, за да се свързвате към отдалечени машини
  3. как да позволите на отдалечени потребители да влизат във вашата система чрез модем
  4. как да стартирате вашата машина през серийна конзола

Преди да продължите с четенето, вие трябва да имате познания за:

  1. това как да компилирате и инсталирате ново ядро (Глава 9);
  2. правата и процесите в Unix (Глава 3);
  3. имате достъп до упътването на серийния хардуер (модем или многопортова карта), която бихте желали да използвате под FreeBSD.

17.2.1 Терминология

bps бита в секунда - скоростта, с която данните се предават;

DTE терминално оборудване (Data Terminal Equipment ) - това е вашият компютър например;

Data Communications Equipment (оборудване за пренос на данни) - вашият модем;

RS-232 - стандарт на EIA за хардуерни серийни комуникации;

Говорейки за скорост на предаване на данни, този раздел не покрива термина ''baud rate'' (скорост на предаване. Благодаря ти за разяснението, moskov!). Той се отнася до броя на електрическите импулси, които могат да бъдат пренесени в определен период от време, докато ''bps'' (бита в секунда) е точният термин, който трябва да се ползва.


17.2.2 Кабели и портове

За да вържете модем или терминал към вашата FreeBSD система, ще ви трябва свободен сериен порт на вашата машина и кабел за свръзка. Ако сте запознати с наличния си хардуер и какви кабели ще ви трябват, можете спокойно да пропуснете тази част.

17.2.2.1 Кабели

Има няколко различни вида серийни кабели. Двата най-често срещани типа за нашите цели са null-modem (четирижични кабели с единица и нула) и стандартните (''прави") RS-232 кабели. Документацията към вашия хардуер би трябвало да описва какъв кабел ви е нужен.

17.2.2.1.1 Null-modem кабели

Един null-modem кабел предава някои сигнали директно, като задейства други сигнали. Например, крачето за изпращане на информацияв единия край се връзва към крачето за получаване на информация в другия край. Ако желаете да си правите сам кабелите, може да си спретнете един такъв за терминали. Таблицата по долу показва имената на сигналите на протокола RS-232C и броя на крачетата върху DB-25 конектор.

Сигнал

Номер на изпращащото краче (pin #)

Номер на приема-щото краче (pin #)

Сигнал

TxD

2

3

RxD

RxD

3

2

TxD

DTR

20

6

DSR

DSR

6

20

DTR

SG

7

7

SG

DCD

8

4

RTS

RTS

4

5

CTS

CTS

5

8

DCD


Забележка: За DCD към RTS, свържете краче 4 към 5 вътрешно в основата на конектора и след това към 8-мо краче в основата на отдалечения конектор.

17.2.2.1.2 Стандартни RS-232C кабели

Нормален сериен кабел предава всичките RS-232C сигнали директно.Така крачето за изпращане на данни се връзва към същото на другия край на кабела. Такъв тип са кабелите с които се връзват модемите към FreeBSD и някои видове терминали.

17.2.2.2 Портове

Серийните портове са устройствата през които се пренасят данните между терминала и машината. Тази част описва видовете портове и техните съответствия във FreeBSD.

17.2.2.2.1 Видове портове

Съществуват няколко вида серийни портове. Преди да купите или направите кабел, трябва да сте сигурни че ще пасне с портовете на вашия терминал и на вашата FreeBSD машина. Повечето терминали имат DB25 портове. Персоналните компютри, включително PC-тата вървящи под FreeBSD, ще имат DB25 или DB9 портове. Ако имате мултипортова серийна карта за вашето PC, вероятно ще имате RJ-12 или RJ-45 портове. Обърнете се към документацията, съпровождаща вашия хардуер за характеристиките на използваните портове. Поглед отзад често върши същата работа.

17.2.2.2.2 Имена на портовете

Във FreeBSD, вие имате достъп до всеки сериен порт чрез специален файл в /dev директорията. Съществуват два вида портове:

  1. Входящите (call-in), са обозначени с /dev/ttydN, където N е номера на порта, започващ от нула. Като цяло, те се използват за терминалите. Входящите портове изискват серийния кабел да пропуска сигнала за пренос на данни (DCD - data carrier detect ), за да работят.
  2. Изходящите (call-out) портове са обозначени с /dev/cuaaN. Обикновено те не се ползват за терминали, а само за модеми. Може да използвате изходящите портове, ако серийният кабел или терминала не подържа сигнала за откриване на данни. Ако сте свързали терминал към първия сериен порт (COM1 под MS-DOS), неговото съответствие под FreeBSD e /dev/ttyd0. Ако е на втория сериен порт (познат също като COM2), то той се нарича /dev/ttyd1 и така натататък.

17.2.3 Конфигурация на ядрото

FreeBSD подържа четири серийни порта по подразбиране. В света на MS-DOS, те са познати като COM1, COM2, COM3 и COM4. FreeBSD в момента подържа ''прости" многопортови серийни карти, като BocaBoard 1008 и 2016, а също така по-интелигентни карти от същия тип, като тези произведени от Digiboard и Stallion Technologies. За съжаление, подразбиращото се ядро единствено търси стандартните COM портове. За да видите дали вашето ядро разпознава който и да е сериен порт, наблюдавайте съобщенията по време на зареждане на ядрото, или използвайте командата /sbin/dmesg за да повторите съобщенията на ядрото по време на зареждане на ядрото. В частност, гледайте за редове, стартиращи с низа ''sio".

Съвет: За да видите само низовете ''sio", използвайте командата:

#/sbin/dmesg | grep 'sio'

Например, на машина с четири серийни порта, специфичните низове за серийните портове са:

sio0 at 0x3f8-0x3ff irq 4 on isa

sio0: type 16550A

sio1 at 0x2f8-0x2ff irq 3 on isa

sio1: type 16550A

sio2 at 0x3e8-0x3ef irq 5 on isa

sio2: type 16550A

sio3 at 0x2e8-0x2ef irq 9 on isa

sio3: type 16550A

Ако ядрото ви не разпознава всичките ви портове, вероятно ще трябва да компилирате ново за вашия хардуер. За подробна информация относно компилирането на ядро, моля вижте Глава 9.

Съответните редове в конфигурационния файл на новото ядро за настройка на серийните портове биха изглеждали по следния начин за FreeBSD 4.X:

device sio0 at isa? port IO_COM1 irq 4

device sio1 at isa? port IO_COM2 irq 3

device sio2 at isa? port IO_COM3 irq 5

device sio3 at isa? port IO_COM4 irq 9

и за FreeBSD 5.x:

device sio

Можете да закоментирате или напълно да изтриете редове за устройства, които нямате за FreeBSD 4.X; за FreeBSD 5.X трябва да редактирате вашия файл /boot/device.hints, за да настроите серийните портове. Моля прочетете man sio(4) за повече информация относно серийните портове и настройката на многопортови дъна. Бъдете много внимателни, ако използвате конфигурационен файл от предходни версии на FreeBSD, понеже параметрите (флаговете) на устройствата и синтаксисът са променени в по-следващите издания.

Порт IO_COM1 е заместитител на порт 0x3f8, IO_COM2 на 0x2f8, IO_COM3 на 0x3e8 и IO_COM4 на 0x2e8. Това са често срещани адреси на съответните портове; както прекъсванията 4, 3, 5 и 9 са често разпространени. Моля имайте в предвид, че обикновените серийни портове не могат да споделят едно и също прекъсване на PC-та с ISA шини (многопортовите дъна имат вградена електроника позволяваща всички устройства, ползващи интерфейса 16550A да споделят едно или две прекъсвания).

17.2.4 Достъп до комуникационните устройства

Повечето устройства в ядрото са достъпни чрез специални файлове, намиращи се в диресторията /dev. Комуникационните устройства са достъпни чрез /dev/ttydN (dial-in) и /dev/cuaaN (call-out) устройства. FreeBSD осигурява също инициализиращи устройства /dev/ttyidN и /dev/cuai0N; заключващи устройтсва /dev/cual0N. Инициализиращите устройства се използват за подаване на параметрите и сигналите на комуникационните портове, всеки път щом влязат в употреба, като crtscts за модемите, използващи RTS/CTS сигналите за контрол на потока данни. Заключващите устройства са използвани да заключат маркерите на устройствата, да предотвратят други програми или потребители да сменят определени параметри. Вижте man termios(4), sio(4) и span(1) за информация относно настройките на терминалите, заключващи и инициализиращи устройства, задаване на терминалните опции.

17.2.4.1 Създаване на устройствата

FreeBSD от версия 5.0 нагоре включва файловата система devfs(5), която автоматично създава устройствата при нужда. Ако сте разрешили devfs на вашето FreeBSD, тогава можете спокойно да пропуснете този раздел. Шел скриптът MAKEDEV в /dev директорията се грижи за създаването на устройствата. За да създадете файла COM1 (порт 0) за дайъл-ъп, отидете в директорията /dev и въведете командата MAKEDEV ttyd0. По подобен начин се създават файловете за COM2 (порт 1): MAKEDEV ttyd1. MAKEDEV създава не само /dev/ttydN файловете, но също и /dev/cuaaN, /dev/cuaiaN, /dev/cualaN, /dev/ttyldN, /dev/ttyidN устройствата.

След създаването на новите устройства, проверете правата им (особено на /dev/cua*), за да бъдете сигурни, че само техните потребители имат права да четат и пишат върху тях - вероятно няма да искате да позволите на средния потребител да ползва модемите, за да набира отдалечени машини. Правата по подразбиране върху файловете /dev/cua* би трябвало да бъдат достатъчни:

crw-rw---- 1 uucp dialer 28, 129 Feb 15 14:38 /dev/cuaa1

crw-rw---- 1 uucp dialer 28, 161 Feb 15 14:38 /dev/cuaia1

crw-rw---- 1 uucp dialer 28, 193 Feb 15 14:38 /dev/cuala1

Тези права позволяват на потребителя uucp и групата dialer да ползват устройствата за изходящо набиране.

17.2.5 Настройка на серийните портове

Устройствата ttydN или cuaaN обикновено е обичайното устройство, което ще искате да отворите за вашите приложения. Когато процес отвори устройството, то ще има под-разбиращ се набор от входно-изходни настройки. Можете да ги видите с командата:

# stty -a -f /dev/ttyd1

Когато променяте настройките на това устройство, те са в сила до неговото затваряне. При ново отваряне, то приема параметрите си по подразбиране. За да направите промени към подразбиращите се настройки, можете да отворите и настроите параметрите на ''първоначалното състояние". Например, за да включите режима CLOCAL, 8 битовата комуникация и XON/XOFF контрола по подразбиране на ttyd5, напишете:

# stty -f /dev/ttyid5 clocal cs8 ixon ixoff

Инициализирането на серийните устройтва в цялата система се контролира от файла /etc/rc.serial. Този файл засяга настройките по подразбиране на упоменатите устройства. Ако искате да предотвратите смяната на някои настройки от програми, направете настройки към ''заключващото" устройство. Например, ако искате да ''заковете" скоростта на ttyd5 на 57600 bps, напишете:

# stty -f /dev/ttyld5 57600

Така ако някое приложение, което отвори ttyd5 и се опита да смени скоростта на порта ще остане ''заковано" на 57600 bps. Естествено, вие трябва да ограничите писането върху инициализиращите и заключващи устройства единствено до root потребителя.

17.3 Терминали

написано от Sean Kelly

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

17.3.1 Видове терминали. Употреба

Оригиналните Unix системи нямаха конзоли. Вместо това, хората се логваха и стартираха програми чрез терминали, които бяха свързани към серийните портове на ком-пютъра. Това доста наподобява употребата на модем и терминален софтуер за набирането на отдалечена машина с цел да извършите някаква текстообработка.

Днешните PC-та имат конзоли, способни да показват висококамествена графика, но възможността да бъде установена връзка чрез сериен порт все още съществува в наши дни в почти всяка Unix-подобна операционна система; FreeBSD не е изключение. Използвайки терминал, закачен към свободен сериен порт, можете да влезете и стартирате коя да е текстообработваща програма в конзолен режим или в терминален емулатор под X11.

Бизнес потребителите могат да закачат множество терминали към FreeBSD система и да ги разпределят по работните места на техните служители. За домашните потребители, излишен компютър като стар модел на IBM PC или Macintosh може да бъде терминал, свързан към по-мощна машина вървяща под FreeBSD. Можете да преобразувате тази железария, която вероятно е машина за един потребител в мощна многопотребителска система.

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

  1. обикновени терминали
  2. PC-та, действащи като терминали
  3. Х терминали

Остатъкът от подсекцията ще разгледа именно тези три типа устройства.

17.3.1.1 Обикновени терминали

Обикновените терминали са специализирано хардуерно оборудване, позволяващо ви да се свързвате към компютри през серийни линии. Ето защо те се наричат още ''прости" терминали - разполагат единствено с изчислителна мощ да показват, пращат и получават текст. Не можете да подкарате никакви програми върху тях. Това е работата на компютъра към който се свързвате - да стартира текстови редактори, компилатори, електронна поща, игри и прочие.

Съществуват хиляди марки обикновени терминали направени от много производители, включително VT-100 на DEC и WY-75 на Wyse. Почти всеки такъв терминал ще работи под FreeBSD. Някои висококачествени терминали могат дори да показват графики, но само определени софтуерни пакети могат да се възползват от тези характеристики.

Обикновените терминали са популярни в работни среди, където работниците нямат нужда от достъп до графични приложения, като тези осигурени от X Window System.

17.3.1.2 PC-та, действащи като терминали

Ако обикновения терминал има единствено възможност единствено да показва, праща и получава текст, тогава определено всеки свободен персонален компютър може да бъде обикновен терминал. Всичко което ви е нужно е подходящ кабел и някакъв софтуер за терминална емулация на вашата машина.

Такова решение е популярно в домашни условия. Например, ако вашата половинка работи по системната конзола на FreeBSD машината, можете да извършвате отдалечена текстообработка по същото време от по-слаб компютър, служещ като терминал към FreeBSD машината.

17.3.1.3 Х терминали

X терминалите са най-елегантния тип. Вместо да се връзват към сериен порт, те обикновено се връзват към мрежа като Ethernet. В състояние са да показват произволно X приложение.

Представяме X терминалите само за пълнота. Тази част не покрива тяхната инсталация, настройка или употреба.

17.3.2 Настройка

Този раздел описва какво е нужно да настроите на вашата FreeBSD машина, за да разрешите логин сесия през терминал. Предполага се, че вече сте настроили ядрото си да подържа серийните портове към които терминалът е свързан и сте вързали самия терминал към машината.

Спомнете си от глава 7, че процеса init е отговорен за контрола на процеси и инициализацията на системата. Една от задачите на init е да чете файла /etc/ttys и стартира getty процес за наличните терминали. Getty процесът от своя страна е отговорен за прочитането на потребителското име и стартирането на програмата login. Следователно, за да настроите терминалите за вашето FreeBSD, стъпките по-долу трябва да бъдат изпълнени като root:

  1. Добавете ред към /etc/ttys за съответния файл в /dev директорията за сериен порт, ако вече не е там.
  2. Задайте /usr/libexec/getty да върви върху порта и определете подходящият getty тип от файла /etc/gettytab.
  3. Задайте вида терминал по подразбиране
  4. Включете порта (от ''off" на ''on")
  5. Задайте дали root може/ не може да се логва от този порт (''secure"/"insecure").
  6. Накарайте init да прочете наново файла /etc/ttys.

Като допълнителна стъпка, може да желаете да създадете собствена getty дефиниция за употреба в стъпка 2 чрез въвеждане на данни в /etc/gettytab. Тази глава не обяснява как да направите това; за повече информация вижте man gettytab(5) и man getty(8).

17.3.2.1 Добавяне на ред към /etc/ttys

Файлът /etc/ttys изброява всички портове а вашата FreeBSD система, от които искате на разрешите влизане. Например, първата виртуална конзола ttyv0 присъства в този файл. Можете да влезете в конзолата, използвайки реда за нея в този файл. /etc/ttys съдържа също описания на другите виртуални конзоли, серийните портове и псевдо терминалите. За свързан терминал, просто избройте файлчето в /dev директорията без префикса /dev (/dev/ttyv0 в /etc/ttys ще бъде описан като ttyv0).

Подразбиращата се FreeBSD инсталация включва файл /etc/ttys с подръжка за първите четири серийни порта: от ttyd0 до ttyd3. Ако закачате терминал към един от тези портове, не е нужно да добавяте друг ред.

Пример 17-1 Описване на терминали в /etc/ttys

Да предположим, че бихме искали да свържем два терминала към системата: Wyse-50 и старо 286 IBM PC, вървящо с Procomm терминален софтуер, емулиращ VT-100. Връзваме Wyse на втория сериен порт и 286-цата към шестия сериен порт към шестия сериен порт (порт на мултипортова серийна карта). Съответните редове в /etc/ttys би изглеждало така:

ttyd11 ''/usr/libexec/getty std.38400''2 wy503 on4 insecure5

ttyd5 ''/usr/libexec/getty std.19200'' vt100 on insecure

Накарайте init да прочете отново /etc/ttys

След направените промени във файла /etc/ttys, вие трябва да изпратите SIGHUP (сигнал за ''затваряне") сигнал към процеса init, за да го принудите да прочете наново конфигурационния си файл. Например:

# kill -HUP 1

Забележка: init е винаги първият процес в системата, следователно винаги ще има идентификационен номер (PID) 1. Ако всичко е настроено правилно, кабелите са на място и терминалите са включени, тогава getty (чете се гети, бел. прев.) процес ще бъде задействан за всеки терминал и би трябвало да видите на тях логин промпт на този етап.

17.3.3 Елимиране на терминални проблеми

Дори с най-фанатично внимание по отношение на подробностите, нещо може да се обърка по време на настройката на терминала. Ето списък на симптомите и някои примерни решения.

  1. Не се появява логин промпт
  2. Появяват се ''маймуни" вместо логин промпт
  3. Буквите се появявят двойни, паролата се вижда при въвеждане

17.3.3.1 Не се появява логин промпт

Уверете се, че терминалът е вързан и включен. Ако използвате PC, проверете дали софтуерът за терминална емулация върви на правилния сериен порт.

Проверете още:

  1. дали кабелът е вързан здраво от двете страни
  2. дали това е правилният тип кабел
  3. дали терминалът и FreeBSD системата са с еднакви настройки относно скоростта на предаване на информацията и паритета. Ако разполагате с терминал, способен да предава образи, погрижете се копчетата за контраст и яркост да са приведени в действие. За печатащи терминали, осигурете достатъчно хартия и мастило.
  4. Проверете дали има действащ 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 след промяна на /etc/ttys файла.

Ако има стартиран getty процес, но терминалът все още не показва логин промпт или показва такъв, но не ви позволява да пишете, вероятно той или кабелът кам него не подържат ''хардуерно ръкостискане" (hardware handshaking).

Опитайте се да смените реда в /etc/ttys от std.38400 на 3wire.38400. Запоменете да въведете kill -HUP 1, след промяната на /etc/ttys. Низът 3wire е подобен на std, с разликата че елиминира ''хардуерното ръкостискане". Може да ви се наложи да намалите скоростта или да разрешите софтуерния контрол при използването на 3wire, за да предотвратите препълване на буферите.

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

Уверете се, че терминалът и FreeBSD са ''съгласни" по отношение скоростта на обмен на информацията и паритета. Проверете getty процесите, за да сте сигурни че правилният тип от тях е в употреба. Ако това не е така, редактирайте /etc/ttys и стартирайте kill -HUP 1.

17.3.3.3 Буквите се появяват двойни, паролата се вижда при въвеждане

Превключете терминала или емулиращият софтуер от ``half duplex'' или ``local echo'' на ``full duplex.''

17.4 ''Dial-in" услуги

Написано от Guy Helmer. Добавки от Sean Kelly.

Настройката на вашата FreeBSD system за входящо набиране (dial-in) е много сходно на връзването на терминалите, с разлика че се занимавате с модеми вместо с терминали.

17.4.1 Вътрешни срещу външни модеми

Външните модеми изглеждат по-удобни за дайъл-ъп, понеже често могат да бъдат настроени полупрозрачно чрез параметри, съхранявани в обикновената памет. Обикновено имат и светлинни индикатори, отразяващи състоянието на важни RS-232 сигнали. Мигащите лампички впечатляват посетителите, а също така са много полезни за диагностициране дали модемът работи както трябва.

Вътрешните модеми обичайно ползват настройките от BIOS, така че тяхната настройка може да се ограничи до подаване на DIP параметри. Ако вашият вътрешен модем има лампички, вероятно ще бъде трудно да ги гледате, когато капакът на компютъра е на мястото си.

17.4.1.1 Модеми и Кабели

Ако използвате външен модем, ще ви трябва подходящ кабел. Стандартен RS-232С сериен кабел напълно ще удовлетвори нуждите ви, ако в него са заложени нормалните сигнали:


  • Предадени данни (TD)
  • Получени данни (RD)
  • Заявки за изпращане (RTS)
  • Готово за изпращане (CTS)
  • Подготвени данни (DSR)
  • Терминалът за данни готов (DTR)
  • Откриване на преносна среда (CD)
  • Нулев сигнал (SG)

FreeBSD се нуждае от RTS и CTS сигналите за контролиране на потоците от информация, надхвърлящи скорост от 2400 bps; CD сигнала за откриване на отговор на заявката или прекъсване, и DTR за връщане на модема в състояние на покой след завършване на обменната сесия. Някои кабели са направени без наличието на всички необходими сигнали. При наличие на трудности, като продължаваща логин сесия след прекъсване на линията, причината вероятно е в кабела.

Подобно на други Unix-производни операционни системи, FreeBSD използва хардуерните сигнали, за да открие кога е отговорено на обаждането, линията е била прекъсната или да разкачи и върне модема в състояние на покой след обаждане. FreeBSD избягва изпращането на команди към модема и не наблюдава отчетите за статуса, които той подава. Ако сте запознати със свързването на системи за обмен на файлове (BBS), базирани на PC платформата, това може да ви изглежда странно.

17.4.2 Избор на сериен интерфейс

FreeBSD подържа NS8250, NS16450, NS16550 и NS16550A базирани EIA RS-232C (CCITT V.24) интерфейси за комуникация. Устройствата, подържащи 8250 and 16450 базирани интерфейси имат буфер от един знак. Устройствата разработени за 16550 базирания интерфейс, разполагат с 16 значен буфер, даващ по-добра производителност. (Грешки в обикновените 16550-базирани стандарти пречат на употребата на 16 значния буфер, така че използвайте 16550A-базирани устройства ако е възможно). Понеже устройствата с еднозначен буфер изискват повече работа от страна на операционната система в сравнение с 16-значните буфери, 16550A-базираните серийни карти са за предпочитане. Ако сървърът ви има многобройни активни серийни портове или ще поеме голям трафик, картите базирани на 16550A протокола са по-добри и дават по-малко грешки.

17.4.3 Бърз преглед

Както при терминалите, init процеса задейства getty такъв за всеки настроен сериен порт за входящи връзки (dial-in. Например, ако е закачен модем към /dev/ttyd0, резултът от ps ax, вероятно ще бъде този:

4850 ?? I 0:00.09 /usr/libexec/getty V19200 ttyd0

Когато потребител набере линията, на която е модема и се установи връзка, се отчита сигнал CD (открита преносна среда) от модема. Ядрото забелязва откриването на носителя и завършва отварянето на порта от getty. Getty процесът пък изпраща логин промпт на предварително зададената му начална скорост. Getty наблюдава дали се получават правилните знаци и в типичната си конфигурация е заложена възможността да пренастрои скоростта си, ако си, ако открие нещо нередно в преноса (дължащо вероятно на различия между скоростите на модема и неговата). Това продължава, докато нещата не се оправят.

След въвеждане на потребителско име, getty изпълнява командата /usr/bin/login, завършваща процеса на влизане в системата чрез запитване за паролата на потребителя и стартиране на неговия команден интерпретатор (шел).

17.4.4 Конфигурационни файлове

Съществуват три конфигурациони файла в директорията /etc, които вероятно ще трябва да редактирате, за да разрешите дайл-ъп достъп до вашата FreeBSD система.Първият файл - /etc/gettytab, съдържа настройките за демона /usr/libexec/getty. Вторият, /etc/ttys съдържа параметрите, които ''казват" на /sbin/init на кои терминални устройства (tty) да се стартира getty процес. Накрая, можете да поставите настройката на серийните портове в /etc/rc.serial.

Има две мисловни школи по отношение на дайъл-ъпа в Юникс. Едната обича да настройва модемите и сървърите си така,че независимо от скоростта с която отдалеченият потребител влиза, скоростта между сървъра и модема към него е фиксирана. Ползата от този подход е, че потребителят вижда логин промпт незабавно. Недостатъкът е, че сървърът не знае какъв е истинският капацитет на потребителя, така че програми като Emacs няма да пренастроят техните методи на запълване на екрана и така да подобрят производителността си при по-бавни връзки.

Другата школа настройва модемите на променлива скорост в зависимост от възможностите на отдалечения потребител. Например, връзки от протокол V.32bis (14.4 Kbps), могат да накарат модема да подава информация на 19.2 Kbps, докато при 2400 битовите връзки ще се подават данни на 2400 bps. Понеже getty не разбира каквито и да било отчети за скоростта на модема, той подава login: промпт на първоначалната си скорост и гледа знаците, идващи като отговор. Ако потребителят вижда маймуни, предполага се че им е известен фактът да натискат клавиша Enter, докато видят ясен ред за влизане. Ако скоростите не съвпадат, getty не вижда нищо, опитва да отиде на следващата скорост и подава реда login: отново. Тази процедура може да продължи до пълно отчаяние на потребителя, но обикновено се иска едно-две чуквания по клавиатурата преди да се види добър промпт. Очевидно, тази последователност на влизане не изглежда толкова чиста както предишния метод на ''фиксирана скорост", но потребителите с бавни връзки ще получат по-добро взаимодействие с приложенията, заемащи цял екран.

Тази секция ще се опита да даде балансирана информация за настройка, но има предпочитания към втория метод.

17.4.4.1 Настройване на фиксирана скорост

Ако ще фиксирате скоростта на вашия модем, вероятно няма да ви се налага да правите никакви промени в /etc/gettytab.

17.4.4.2 Настройка според скоростта на потребителя

Ще се наложи да направите описание на желаната скорост в /etc/gettytab, за да може getty да получи информация за желаните параметри относно вашия модем. Ако разполагате с 2400 битов такъв, можете да използвате съществуващият D2400 низ.

#

#Fast dialup terminals, 2400/1200/300 rotary (can start either way)

D2400|d2400|Fast-Dial-2400:\

:nx=D1200:tc=2400-baud:

3|D1200|Fast-Dial-1200:\

:nx=D300:tc=1200-baud:

5|D300|Fast-Dial-300:\

:nx=D2400:tc=300-baud:

Ако имате по-бърз модем, ще се нуждаете от низ в /etc/gettytab. Ето един, който бихте могли да използвате за 14.4 килобитов модем с максимална скорост от 19.2 Kbps:

# Additions for a V.32bis Modem

um|V300|High Speed Modem at 300,8-bit:\

:nx=V19200:tc=std.300:

un|V1200|High Speed Modem at 1200,8-bit:\

:nx=V300:tc=std.1200:

uo|V2400|High Speed Modem at 2400,8-bit:\

:nx=V1200:tc=std.2400:

up|V9600|High Speed Modem at 9600,8-bit:\

:nx=V2400:tc=std.9600:

uq|V19200|High Speed Modem at 19200,8-bit:\

:nx=V9600:tc=std.19200:

Резултатът е 8 битови връзки без паритет. Горният пример започва предаването със скорост 19.2 Kbps (за V.32 протокол), после преминава през 9600 bps (отново при V.32 протокол), 2400 bps, 1200 bps, 300 bps и накрая отново към 19.2 Kbps. Цикличното преминаване е постигнато с възможностите на функцията nx=(''следваща таблица"). Всеки ред използва ред tc=('' продължителност на таблицата"), за да подбере останалите ''стандартни" настройки за всяка скорост.

Ако имате 28.8 K модем и/или желаете да се възползвате от компресията на данни, ще трябва да настроите по-високо съотношение на предаване на данни. Ето пример за низ в /etc/gettytab, започващ с 57.6 Kbps:

# Additions for a V.32bis or V.34 Modem

# Starting at 57.6 Kbps

vm|VH300|Very High Speed Modem at 300, 8-bit:\

:nx=VH57600:tc=std.300:

vn|VH1200|Very High Speed Modem at 1200, 8-bit:\

:nx=VH300:tc=std.1200:

vo|VH2400|Very High Speed Modem at 2400, 8-bit:\

:nx=VH1200:tc=std.2400:

vp|VH9600|Very High Speed Modem at 9600, 8-bit:\

:nx=VH2400:tc=std.9600:

vq|VH57600|Very High Speed Modem at 57600, 8-bit:\

:nx=VH9600:tc=std.57600:

Ако имате бавен процесор или натоварена система и нямате серийни портове базирани на 16550A интерфейса, може да получите ''sio"/"silo" грешки при 57.6 Kbps.

17.4.4.2 /etc/ttys

Настройката на файла /etc/ttys беше показана в пример 17-1. Конфигурацията за модеми е подобна, но ние трябва да подадем различен параметър към getty и определим различен вид терминали. Общият формат за модеми с фиксирана скорост и за такива с променлива е:

ttyd0 ''/usr/libexec/getty xxx dialup on

Първият аргумент в горният ред е файлът на устройството - в този случай с ttyd0 се означава /dev/ttyd0 файла, който getty ще наблюдава. Вторият - ''/usr/libexec/getty xxx'' (xxx ще бъде заменено от първоначалната способност на gettytab да открива терминала), е процесът init, който ще върви над устройството. Третият аргумент dialup е типа терминал по подразбиране. Четвъртият параметър on указва на init, че линията е функционираща. Може да има и пета опция secure, но тя трябва да се използва единствено за физически сигурни терминали (като системната конзола). Подразбиращият се тип терминал (dialup в горния пример) може да зависи от местните предпочитания. dialup е традиционният тип терминал за дайъл-ъп линии, така че потребителите да нагодят техните логин скриптове да засичат кога терминалът е dial-up и автоматично да настройват своя тип терминал. Авторът обаче, смята за по-лесно да зададе vt102 параметъра на неговия сайт, тъй като потребителите му използват VT102 емулация на техните машини.

След като сте променили /etc/ttys, трябва да пратите на init HUP сигнал, за да си прочете наново анстройките. Може да използвате

# kill -HUP 1

да изпратите сигнала. Ако това е първата настройка на сървъра, добре е да изчакате модемите да бъдат конфигурирани и свързани правилно преди да пратите на init HUP сигнал.

17.4.4.2.1 Конфигурация с фиксирана скорост

За машини с постоянна скорост на модемите, вашият низ в ttys трябва да има аргумент за константна скорост подавана на getty. За модем, чийто порт е ''закован" на 19.2 Kbps, описът в ttys вероятно ще изглежда така:

ttyd0 ''/usr/libexec/getty std.19200'' dialup on

Ако вашият модем е заключен на различно съотношение на скоростта, заменете с подходящата скорост std.вашата скорост вместо std.19200. Бъдете сигурни, че използвате валиден тип модем, описан в /etc/gettytab.

17.4.4.2.2 Настройка според скоростта на потребителя

При конфигурации, адаптиращи се към скоростта на потребителя, вашият низ в ttys трябва да сочи към подходящото начало - низа ''автоматична скорост" (auto-baud) в /etc/gettytab. Например, ако бяхте добавили горното решение за модем с променлива скорост, стартиращ с 19.2 Kbps ( ред в gettytab, съдържащ израза V19200 като първи аргумент), то настройката в ttys вероятно ще изглежда така:

ttyd0 ''/usr/libexec/getty V19200'' dialup on

17.4.4.3 /etc/rc.serial

Високоскоростните модеми, ползващи протоколите V.32, V.32bis и V.34, трябва да използват хардуерен (RTS/CTS) контрол върху потока от информация. Може да добавите stty команди към /etc/rc.serial, за да подадете параметрите за хардуерен контрол върху СОМ портовете на ядрото.

Например, за да настроите инициализационните устройства на COM2 портовете с опции termios и crtscts за dial-in and dial-out услуги, следните редове могат да бъдат добавени към /etc/rc.serial:

# Serial port initial configuration

stty -f /dev/ttyid1 crtscts

stty -f /dev/cuai01 crtscts

17.4.5 Параметри на модема

Ако имате модем, чийто параметри могат да бъдат постоянно съхранени в обикновената памет, ще се нуждаете от терминално-емулираща програма (като Telix под MS-DOS или tip под FreeBSD), за да ги настроите. Свържете се с модема, използвайки началната скорост на getty и настройте обикновената памет на модема спрямо тези изисквания за налични сигнали:

  • подаване на CD сигнала при свързване
  • DTR се подава за начало на работа; прекъсването на DTR спира трансфера и реинициализира модема
  • контрол върху готовите за пренос данни (CTS)
  • Забранете софтуерния контрол (XON/XOFF)
  • контрол върху получените данни
  • Тих режим
  • Командите не се повтарят

Моля прочетете документацията към вашия модем, за да откриете кои команди и/или DIP параметри трябва да му бъдат добавени.

Например, за да настроите външен USRobotics Sportster 14400 Kbps съгласно горните изисквания, може да се въведат следните AT команди:

ATZ

AT&C1D2&H1I0R2W

Може да настроите и другите парамети, като дали да използва V.42bis и/или MNP5 компресия.

Външните USR Sportster 14400 Kbps имат някои DIP опции, които трябва да се зададат; за останлите марки и модели може да използвате алгоритъма по-долу като пример:

  • Опция 1: Включен - Обикновен DTR
  • Опция 2: неизвестен статус - (Отговор с думи/с цифри)
  • Опция 3: Включен - Подтиснати кодове за резултат
  • Опция 4: Изключен - Без ехо, команди в offline режим
  • Опция 5: Включен - Автоматично отговоряне
  • Опция 6: Включен - Обикновен сигнал за открита преносна среда
  • Опция 7: Включен - Зареди настройките по подразбиране в обикновената памет
  • Опция 8: неизвестен статус (Интуитивен/Обикновен режим)

Кодовете за резулататите трябва да бъдат забранени/подтиснати при dial-up, за да бъдат избегнати проблеми, които могат да се появят ако getty по погрешка даде login: промпт на модем намиращ се в команден режим. Модемът ще отвърне със същата команда или ще даде код за резултат. Получава се продължителен, глупав разговор между getty и модема.



Страници: [1] 2

<< Още по-добър Red Hat 8.x | Често задавани въпроси за Squid (част 3) >>