getty_ps? Skonfiguruj modem w taki sposób, aby prawidłowo wybierał numery. Jeśli nie czytałeś rozdziału Jak mogę zadzwonić z mojego modemu? zrób to teraz! Podałem tam bardzo ważne informacje. Nie musisz czytać tego rozdziału, jeśli zamiesza jedynie dzwonic ze swojego modemu.
Aby mieć wyjście przez modem i jednocześnie obsługiwać
przychodzące połączenia, musisz skonfigurować modem w
specjalny sposób (znów za pomocą poleceń AT.):
E1 wyświetlane wprowadzanych poleceń
Q0 wyświetlanie kodów rezultatów
V1 bądź bardziej rozgadany, podawaj więcej informacji
S0=0 nigdy nie odpowiadaj na połączenie (uugetty obsługuje
przychodzące połączenia, za pomocą opcji waitfor).
Jeśli nie ustawisz tych opcji, ciąg znaków inicjujący modem, może nie wykonać poprawnie swej pracy, niwecząc całą procedurę. Lecz o plikach konfiguracyjnych później.
&C1 DCD włączone tylko po nawiązaniu połączenia
&S0 DSR zawsze włączone
Przełączenie DTR resetuje modem (w zależności od producenta - RTFM).
Powyższe ustawienia mają wpływ na zachowanie modemu podczas nawiązywania i zakańczania połączenia.
Jeśli twój modem nie potrafi zapamiętać konfiguracji, możesz wcześniej opisane ustawienia zapamiętać w tzw. "INIT string". Zaraz o tym napiszemy. Niektóre modemy posiadają mikroprzełączniki służące do zmiany konfiguracji modemu (zmiany wartości rejestrów). Upewnij się że są poprawnie ustawione.
Zacząłem zbierać listę sprawdzonych konfiguracji, dla różnych
typów modemów. Jeśli masz ochotę przysłać mi swoją, proszę
bardzo. Jeśli chciałbyś otrzymać jedną z konfiguracji, po
prostu przyslij list. Posiadane przez mnie informacje są
dostępne pod adresem
ftp://ftp.cc.gatech.edu/pub/people/gregh/modem-configs.
Uwaga: aby zmusić mój Courier V.34 do poprawnego zerowania po
spadku DTR musiałem ustawić &D2 i S13=1
(ustawienie bitu 0 rejestra S13). Otrzymałem potwierdzenia, że
ten sposób działa również w przypadku USR Sportster V.34.
Uwaga: Niektóre modele Supra traktują DCD inaczej niż inne
modemy. Jeśli używasz Supry spróbuj ustawić &C0, a
nie &C1. Aby poprawnie obsługiwać DTR trzeba również
ustawić &D2.
getty_ps.
Pobież najnowszą wersję z
sunsite.unc.edu:/pub/Linux/system/serial. Jeśli
planujesz korzystać z wysokich prędkości (57600 i 115200bps),
musisz zdobyć wersję 2.0.7j lub nowszą. Muszisz mieć również
libc 5.x lub nowszą.
getty_ps jest domyślnie skonfigurowane zgodnie ze
standardem FSSTND (FileSystem
STaNDard). To znaczy, że programy binarne będą w
katalogu /sbin, a pliki konfiguracyjne będą się nazywały
/etc/conf.{uu}getty.ttySN. Pliki blokady (lock
files) będą umieszczane w katalogu /var/lock. Upewnij
się, że katalog /var/lock istnieje.
Jeśli nie chesz zgodności z FSSTND, programy binarne zostaną
umieszczone w /etc, pliki konfiguracyjne zostaną
nazwane /etc/default/{uu}getty.ttySN, a pliki
blokady będą umieszczane w katalogu
/usr/spool/uucp. Jeśli korzystasz z UUCP, zaleceamy
ten drugi sposób, ponieważ Taylor UUCP napotka na problemy,
jeśli przeniesiesz pliki blokady w miejsce, które nie bedzie
sprawdzane (przez uucp w poszukawaniu plików blokady).
W
celu rejestracji komunikatów getty_ps korzysta z
syslogd. Jeśli chesz skonfigurować syslogd
przeczytaj strony podręcznika dla syslogd(1) i
syslog.conf(5). Komunikaty są rejestrowane z priorytetem
LOG_AUTH, błędy wykorzystują LOG_ERR, a informacje
odpluskwiające LOG_DEBUG. Jeśli nie chcesz korzystać z
syslogd tylko chesz aby komunikaty były zapisywane do
pliku (domyślnie będzie to /var/adm/getty.log) , to
musisz zmodyfikować plik tune.h w zrodłach getty_ps.
Zastanów się i zdecyduj się czy chcesz zachować zgodność ze
standardem FSSTND i czy chesz korzystać z syslogd,
zmodyfikuj odpowiednio pliki Makefile, config.h i
tune.h znajdujące się w katalogu źródłowym pakietu
getty_ps. Następnie zainstaluj programy zgodnie z
instrukcjami.
Od tej chwili, wszystkie odwolania do getty należy
traktować jako odwołania do getty_ps. Natomiast
uugetty będzie odnosiło się do uugetty pochodzącego
z pakietu getty_ps.
uugetty.
Dla przychodzących i wychodzących połączeń modemowych, chcemy
zastosować uugetty. uugetty sprawdza czy odpowiednie
pliki nie są zablokowane. Trzeba poprawić plik
/etc/gettydefs, aby zawierał pozycje dotyczące modemu
(pamiętaj, że te pozycje wzajemnie na siebie wskazują (są od
siebie zależne), jednak nie mają zastosowania do połączeń z
ustaloną prędkością - między każdą pozycją konieczny jest
pusty wiersz):
# Modem entries
115200# B115200 CS8 # B115200 SANE -ISTRIP HUPCL #@S @L @B login: #57600
57600# B57600 CS8 # B57600 SANE -ISTRIP HUPCL #@S @L @B login: #38400
38400# B38400 CS8 # B38400 SANE -ISTRIP HUPCL #@S @L @B login: #19200
19200# B19200 CS8 # B19200 SANE -ISTRIP HUPCL #@S @L @B login: #9600
9600# B9600 CS8 # B9600 SANE -ISTRIP HUPCL #@S @L @B login: #2400
2400# B2400 CS8 # B2400 SANE -ISTRIP HUPCL #@S @L @B login: #115200
Jeśli posiadasz modem 9600 bps lub szybszy, z kompresją
danych, wtedy możesz zablokować prędkość portu szeregowego i
pozwolić aby modem sam wykonywał przejścia na inne prędkości
bps. W takim przypadku zamiast wypróbowywania poszczególnych
pozycji pliku /etc/gettydefs, wystarczy aby była
tylko jedna pozycja opisujaca ustawienia modemu:
# 115200 fixed speed
F115200# B115200 CS8 # B115200 SANE -ISTRIP HUPCL #@S @L @B login: #F115200
Jeśli tój modem obsługuje sprzętowe sterowanie RTC/CTS, możesz
do pliku /etc/gettydefs dodac opcję CRTSCTS:
# 115200 fixed speed with hardware flow control
F115200# B115200 CS8 CRTSCTS # B115200 SANE -ISTRIP HUPCL CRTSCTS #@S @L @B login: #F115200
Jeśli chcesz możesz zmusic uugetty do wyświetlania
ciekawych informacji w nagłówku (login banner). W dalszych
przykładach pokazuję jak wyświetlić nazwę systemu (komputera),
numer portu, prędkość bps. Możesz dodać własne informacje:
@B Aktualna (sprawdzona w momencie napotkania @B ) prędkość bps.
@D Aktualna data w formacie MM/DD/YY.
@L Linia szeregowa do któej przyłączone jest getty.
@S Nazwa systemu (komputera).
@T Aktualny czas, w formacie HH:MM:SS (24-godziny).
@U Liczba aktualnie przcujących użytkowników. Jest to liczba
pozycji w pliku /etc/utmp o niezerowym polu ut_name.
@V Warość stałej VERSION, zdefiniowanej w plkiku ustawień
standardowych.
Aby wyświetlić pojedynczy znak @ musisz napisac '\@\ lub '@@'.
Następnie upewnij się, że istnieją odpowiednie pliki urządzeń
wejściowych i wyjściowych, i że modem jest włączony. Jeśli
twoj modem jest podłączony do portu ttyS3 muszą istnieć
pliki /dev/cua3 i /dev/ttyS3. Jeśli
odpowiendnie pliki urządzeń nie istnieją wróć do rozdziału
Tworzenie plików urządzeń w katalogu <tt>/dev</tt> i utwórz niezbędne pliki urządzeń. Jeśli
chcesz mieć możliwość dzwonienia, podczas gdy uugetty
czeka na nadejscie połączeń z zewnątrz, skorzystaj z urządzeń
/dev/cua zamiast /dev/ttyS.
Po zakończeniu edycji /etc/gettydefs możesz
sprawdzić, czy składnia pliku jest poprawna wydając polecenie:
linux# getty -c /etc/gettydefs
uugetty.
Istniej mnóstwo parametrów, które możesz modyfikować
oddzielnie dla każdego posiadanego portu. Przechowywane są w
odzielnych plikach, każdy port może miećswój plik. Program
uugetty zawsze wpierw sprawdza zawartość pliku
/etc/conf.uugetty zawierajacego wspólne parametry dla
wszystkich portów, a dopiero później wczytuje z
/etc/conf.uugetty.ttySN konfiguracje konkretnego
portu. Przykładowe pliki konfiguracyjne można znaleźć w
zródłach pakietu. Zwykle są w każdej dystrybucji Linux-a. Nie
przedstawiamy ich tutaj ze wzgledu na ich objętość. Jeśli
używasz starszych wersji getty_ps (tzn. wcześniejszych od
2.0.7e) lub nie korzystasz ze schematu FSSTND, domyślnym
plikiem konfiguracyjnym będzie
/etc/default/uugetty.ttySN. Mój plik
/etc/conf.uugetty.ttyS3 wygląda tak:
# przykładowy plik konfiguracyjny modemu standardu Hayes
# umożliwiający przyjmowanie połączeń z zewnątrz
#
# alternatywny plik blokaty, który należy sprawdzać. Jeśli istnieje,
# wtedy uugetty jest uruchamiane ponownie, a więc modem jest
# równiez powtórnie inicjowany
ALTLOCK=cua3
ALTLINE=cua3
# uzywana linia
INITLINE=cua3
# czas po jakim przerywamy, jeśli brak reakcji użytkownika
TIMEOUT=60
# Ciag znaków zaierające polecenia inicjujące modem
# format: (oczekiwane) (wysyłane) ... (sekwencja)
INIT="" AT\r OK\r\n
WAITFOR=RING
CONNECT="" ATA\r CONNECT\s\A
# istawiamy opóżnienie przez pokazaniem nagłówka Loginu.
DELAY=1
#DEBUG=010
Aby uugettty było uruchomione i nasłuchiwało na porcie,
musisz do pliku /etc/initab dopisać wiersz
(wstawiając odpowiednie informacje typu port,prędkość,typ terminala):
S3:456:respawn:/sbin/uugetty ttyS3 F38400 vt100
Zrestartuj proces init:
linux# init q
Parametr podany w pliku /etc/inittab określający
predksość w bps powinien wskazywać możliwie jak największą
prędkość.
Teraz Linux będzie oczekiwał na połączenia przychodzące przez port szeregowy. Zadzwoń z innego komputera i wejdź do swojego systemu.
uugetty posiada mnóstwo opcji. Zobacz stronę podręcznika
dla getty(1m). Prócz innych ciekawych cech dostępne są
funkcje ringback i udostępnianie modemu w zależnośći od pory
dnia/nocy. RTFM :-).