LINUX-BG Адрес : http://www.linux-bg.org |
FreeBSD: Серийни комуникации |
От: Димитър Василев Публикувана на: 25-02-2003 Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=advices&key=348722532 |
Глава 17: Серийни комуникацииПревод: Димитър Василев ака botzko/FreeJak 12/2002-02/2003 за нуждите на FreeBSD-BG documentation project 17.1 ПредговорUnix винаги е подържал серийните комуникации. В същност, най-първите Unix машини разчитаха на серийни кабели за въвеждане и извеждане на потребителските данни. Нещата много се промениха от времената, когато средно-статистическият терминал се състоеше от сериен принтер със скорост 10 знака в секунда и клавиатура. Тази глава ще обхване някои от случаите, в които 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 конектор.
Забележка: За 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 директорията. Съществуват два вида портове:
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 има три вида терминали:
Остатъкът от подсекцията ще разгледа именно тези три типа устройства. 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:
Като допълнителна стъпка, може да желаете да създадете собствена 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 Елимиране на терминални проблемиДори с най-фанатично внимание по отношение на подробностите, нещо може да се обърка по време на настройката на терминала. Ето списък на симптомите и някои примерни решения.
17.3.3.1 Не се появява логин промптУверете се, че терминалът е вързан и включен. Ако използвате PC, проверете дали софтуерът за терминална емулация върви на правилния сериен порт. Проверете още:
# 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С сериен кабел напълно ще удовлетвори нуждите ви, ако в него са заложени нормалните сигнали:
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 и настройте обикновената памет на модема спрямо тези изисквания за налични сигнали:
Моля прочетете документацията към вашия модем, за да откриете кои команди и/или DIP параметри трябва да му бъдат добавени. Например, за да настроите външен USRobotics Sportster 14400 Kbps съгласно горните изисквания, може да се въведат следните AT команди: ATZ AT&C1D2&H1I0R2W Може да настроите и другите парамети, като дали да използва V.42bis и/или MNP5 компресия. Външните USR Sportster 14400 Kbps имат някои DIP опции, които трябва да се зададат; за останлите марки и модели може да използвате алгоритъма по-долу като пример:
Кодовете за резулататите трябва да бъдат забранени/подтиснати при dial-up, за да бъдат избегнати проблеми, които могат да се появят ако getty по погрешка даде login: промпт на модем намиращ се в команден режим. Модемът ще отвърне със същата команда или ще даде код за резултат. Получава се продължителен, глупав разговор между getty и модема.
<< Още по-добър Red Hat 8.x | Често задавани въпроси за Squid (част 3) >> |
Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук,
но те са copyleft т.е. могат свободно да бъдат копирани и разпространявани с изискването изрично да се упоменава името на автора,
както и да се публикува на видно място, че те са взети от оригиналния им URL-адрес на този сървър (http://www.linux-bg.org). Авторските права на преводните материали принадлежат на техните автори. Ако с публикуването тук на някакъв материал неволно са нарушени нечии права - след констатирането на този факт материалът ще бъде свален.
All trademarks, logos and copyrights mentioned on this site are the property of their respective owners.
|