Porty szeregowe
15.1. Wstęp
UNIX od zawsze wspomagał komunikację z portami szeregowymi. Faktem jest iż pierwsze komputery w środowisku UNIX korzystały z portów szeregowych jako wyjść i wejść dla użytkowników. Rzeczy jednak bardzo się zmienily od czasu gdy "średni" terminal składał się z drukarki szeregowej pracującej z prędkością 10-ciu znaków na sekundę i klawiatury.
15.2. Podstawy
Ta sekcja powinna dać Ci podstawowe informacje na temat portów szeregowych. Jeżeli nie znajdziesz tutaj wystarczającej informacji na interesujące Cię tematy sprawdź w sekcji "TERMINAL i połączenia Dial'up" tego dokumentu. Urządzenie ttydX lub cuaaX jest używane do otwierania przez Ciebie aplikacji. Gdy proces otwiera urządzenie, przyjmuje ono swoje podstawowe ustawienia wejścia/wyjścia. Zobaczyć je możesz wydając z lini poleceń następującą komendę: Gdy zmienisz ustawienia tego urządzenia będą one działały do chwili gdy urządzenie nie zostanie zamknięte. Z chwilą jego pomownego otwarcia powróci ono do ustawień podstawowych. Aby wprowadzić zmiany w ustawieniach podstawowych, powinienneś otworzyć i dostosować "stan pierwotny" (initial state) urządzenia. Dla przykładu aby załączyć urządzenie w konfiguracji: CLOCAL mode, 8 bitów i XON/XOFF flow controll jako podstawowe ustawienia dla ttyd5, powinienneś wydać następujące polecenie: Dobrym miejscem na umieszczenie takich konfiguracji jest plik /etc/rc.serial . Gdy w nim umieścimy zmiany, uruchamiane aplikacje będą z niego pobierały ustawienia dla poszczególnych urządzeń (czyli w tym przypadku ttyid5) i przyjmowały je jako standartowe. Możesz także oczywiście zapobiegać zmianom ustawień przez inne aplikacje wprowadzając urządzenie w stan blokady. Dla przykładu, aby zablokować prędkość urządzenia ttyd5 na 57600 bps, należało by wykonać następujące polecenie: Teraz aplikacja która otworzy urządzenie ttyd5 i będzie próbowała zmienić prędkość na porcie zostanie zablokowane na 57600 bps. Oczywiście powinienneś tworzyć ustawienia stanu początkowego i stanu blokady danego urządzenia z możliwościa zapisu tylko przez root'a. Skrypt MAKEDEV nie robi tego z chwilą tworzenia wpisów ustawień danego urządzenia.
15.3. Terminale
Terminale dostarczają wygodniej i taniej drogi dostępu do Twojego systemu, gdy nie jesteś przy konsoli serwera ale jesteś podłączony do sieci. Ten rozdział opisuje jak używać terminali w FreeBSD.
15.3.1. Używanie i typy terminali
Pierwotny system UNIX nie posiadał konsoli. Zamiast tego, ludzie wchodzili i uruchamiali programy za pomocą terminali, które były połączone z komputerem-serwerem za pomocą portów szeregowych. Jest to całkiem podobnie jak gdybyśmy używali modemu i jakiegokolwiek terminala programowego to wdzwonienia się to innego zdalnego systemu w którym możemy pracować jedynie w trybie textowym.
Dzisiejsze komputery klasy PC posiadaja konsole zdolne do wysokiej jakości grafiki, ale zdolność do utrzymania połączenia na porcie szeregowym nadal instenije jak w przypadku wszystkich systemów UNIX w dniu dzisiejszym. FreeBSD nie stanowi tutaj żadnego wyjątku. Używając terminala podłaczonego do nieużywanego portu szeregowego możesz zalogować się i uruchomić każdy program który mogłbyś normalnie uruchomić na konsoli lub w okienku programu xterm w X Window.
Dla dużych użytkowników, możesz podłączyć wiele terminali w systemie FreeBSD i umieścić je na biurkach pracowników. Dla "domowych użytkowników" mogą służyć komputery takie jak starsze IBM PC lub Macintosh które będą podpięte jako sieciowy terminal do mocniejszego komputera na którym działać będzie FreeBSD. Możesz zamienić coś co byłoby jednoużytkownikowym komputerem w potężny wielodostępowy system.
W systemie FreeBSD są trzy rodzaje terminali:
Opisane one są w następnych sekcjach.
15.3.1.1. Głupie terminale
Głupie terminale są wyspecjalizowanymi częściami sprzętu które możesz podłączyć do serwera poprzez porty szeregowe. Nazywają się głupie ponieważ mają tylko moc obliczeniową wystarczającą do wyświetlania, wysyłania i otrzymywania tekstu. Nie możesz uruchomić na niech żadnego programu.Komputer do którego podłączamy "głupie" terminale ma całą potrzebną moc obliczeniową potrzebną do uruchamiania edytorów tekstu, kompilatorów, klienta poczty, gier i wielu innych narzędzi.
Jest wiele rodzaji głupich terminali, tworzonych przez wiele różnych firm takich jak naprzykład Digital Equipment Corporation's (DEC) i jeko terminal VT-100 i Wyse's WY-75. Prawie każdy z nich będzie działał w systemie FreeBSD. Niektóre z terminali wyższej klasy mogą nawet wyświetlać grafikę, ale nieliczne pakiety oprogramowania mogą kożystać z tych zaawansowanych cech.
Głupie terminale są bardzo popularne w sieciach gdzie ich urzytkownicy nie potrzebują dostępu do aplikacji graficznych, jak te dostępne w systemie X Windows.
15.3.1.2. Komputery PC pracujące jako terminale
Jeżeli głupie terminale maja tylko zdolność do wyświetlania, wysyłania i przyjmowania tekstu, to z pewnością każdy "niepotrzebny" komputer może pracować jako głupi terminal. Wszystko czego potrzebujesz to odpowiedni kabel i programową emulację terminala do uruchomienia na komputerze.
Taka konfiguracja jest najpopularniejsza w domu. Dla przykładu : jeśli ktoś aktualnie pracuje na konsoli Twojego FreeBSD, to Ty możesz pracować w tym samym czasie będąc podłączonym z komputera o mniejszej mocy ale pracującego jedynie w trybie tekstowym do Twojego komputera z FreeBSD.
15.3.1.3. Terminale systemy X Windows
Terminale systemu X Windows są najbardziej wyrafinowane z dostępnych terminali. Zamiast podłączania ich poprzez porty szeregowe, zwykle są podłączone do sieci poprzez Ethernet. Mogą one używać aplikacji systemu X a nie tylko tekstowych.
W tym rozdziale nie znajduje sie opis instalacji, konfiguracji lub też używania X terminali. Wprowadzilismy X terminale tylko ze względu na kompletność tego rozdziału.
15.3.2. Kable i porty
Do podłączenia terminala do systemu FreeBSD potrzebujesz właściwego kabla i portu szeregowego do którego się podłączysz. Ta sekcja powie Ci co musisz zrobić. Jeżeli jesteś już obeznany z tematu terminali i posiadasz właściwy kabel możesz od razu przejść do rozdziału KONFIGURACJA.
15.3.2.1. Kable
Ponieważ terminale używają portów szeregowych, będziesz musiał użyć kabla szeregowego (RS-232C) do połączenia się z komputerem na którym pracuje FreeBSD.
Są 2-a rodzaje kanbla szeregowego. Którego z nich użyjesz zależy od od tego który terminal chcesz podłączyć
Także port szeregowy którego używasz w terminalu i w FreeBSD musi mieć odpowiednii wolny port abyś mógl użyć danego kabla.
15.3.2.1.1. Kabel typu Null-modem
Zerowy kabel modemowy przepuszcza niektóre sygnały wprost a niektóre przełącza. Dla przykładu wysyłanie danych odbywa się poprzez jeden pin w komputerze wysyłającym a jest odbierane przez inny pin w komputerze na koncu transmisji.
Jeżeli chciałbyś samemu zrobić sobie swój własny kabel, poniżej jest tablica pokazująca rekomendowane drogi do zbudowania swojego wlasnego kabla do połączenia null-modem. Pokazuje ona złącze typy RS-323C, typy sygnałów i numery pinów w wtyczce DB-25.
15.3.2.1.2. Standard kabla RS-232C
Standartowy kabel RS-232C przesyła sygnały jeden do jednego. To znaczy że pin wysyłający dane na jednym koncu kabla idą do pinu wysyłającego dane na drugim końcu. To jest właśnie typ kabla do łączenia modemu i niektórych terminali do FreeBSD.
15.3.2.2. Porty
Porty szeregowe są bezpośrednimi urządzeniami przez które dane są transferowane pomiędzy serwerem FreeBSD a terminalem. Ta sekcja opisze jakie typy portów możemy używać i jak są one adresowane w FreeBSD.
15.3.2.2.1. Rodzaje portów
Kilka zdań na temat istniejących portów szeregowych. Zanim kupisz lub zbudujesz kabel, powinienneś mieć pewność że będzie on pasować to portu w Twoim terminalu i w komputerze na którym działa FreeBSD.
Większość terminali posiada port typu DB-25. Komputery osobiste, włączając w to komputery klasy PC działające z systemem FreeBSD posiadają porty DB-25 lub DB-9. Jeżeli posiadasz wieloportową kartę w swoim komputerze możesz mieć także porty typu RJ-12 lub RJ-45.
Najlepiej sprawdzić w dokumentacji dołączonej do sprzętu i w niej poszukać specyfikacji używanych portów. Niekiedy jednak wystarczy dokładnie oglądnać sprzęt aby znaleść odpowiednie porty.
15.3.2.2.2. Nazewnictwo portów
W FreeBSD dostep do portów szeregowych znajduje sie w katalogu /dev. Możesz z nich korzystac na 2-a różne sposoby.
Zobacz także strone manual'a sio(4) celem uzyskania większej ilości informacji.
Jeżeli masz podpiety terminal do pierwszego portu szeregowego (COM1 w systemie DOS), powinienneś używać /dev/ttyd0 aby komunikować się z terminalem. Jeżeli jest to drugi port szeregowy (COM2) powinienneś używać /dev/ttyd1 itd.
Nota. Sprawdź czy Twój kernel jest przystosowany do wspomagania komunikacji po portach szeregowych, zwłaszcza gdy pracujesz z kartą wieloportową. Zobacz do rozdziału Konfiguracja kernela FreeBSD w celu uzyskania większej ilości informacji.
15.3.3. Konfiguracja
Ta sekcja opisuje co potrzebujesz skonfigurować w swoim systemie aby umożliwić otwieranie sesji dla terminali. Zakładam że masz już poprawnie skonfigurowanego kernela który wspomaga połączenia z portami szeregowymi poprzez które terminale łączą się.
W skrócie, musisz przekazać procesowi init'a, który jest odpowiedzialny za kontrolę procesów i ich inicjalizacje, aby wystartowal proces getty, który jest odpowiedzialny za uruchomienie programu login.
Aby to wykonać musisz wyedytować plik /etc/ttys. Musisz wykonywać to oczywiście z poziomu root'a, aby móc wprowadzać zmiany w tym pliku.
Opcjonalnie możesz stworzyć własny getty który później wykorzystasz w kroku 2-gim, robiąc odpowiedni wpis w /etc/gettytab. Ten dokument jesnak nie powie ci jak to zrobić. Wiecej informacji uzyskasz czytając manuale gettytab(5) oraz getty(8).
W poniższych sekcjach opiszemy szczegółowo jak wykonać te kroki. Użyjemy działającego przykładu aby zilustrować co jest potrzebne aby to zrobić. W naszym przykładzie będziemy podłączać 2-a terminale do systemu: Wyse-50 i stary 286 IBM PC i działający na nim Procomm terminal programowo emulujący vt-100. Połączymy terminal Wyse-50 do drugiego potru szeregowego i 286 to szóstego portu szeregowego (w karcie wieloportowej).
Jeżeli chcesz znaleść więcej informacji o pliku /etc/ttys, przeczytaj manuala ttys(5) .
15.3.3.1. Dodawanie wpisu do pliku /etc/ttys
Pierwsze co musisz zrobić to dodać odpowiedni wpis do pliku /etc/ttys, o ile jeszcze go tam nie ma.
Plik /etc/ttys zawiera listę wszystkich portów poprzez które możesz się zalogować do systemu. Dla przykładu pierwsza wirtualna konsola ttyv0 ma swój wpis w tym pliku. Dzięki temu możesz sie przez nią zalogować na konsole. Plik zawiera wpisy także o innych wirtualnych konsolach, portach szeregowych i pseudo terminalach. Dla wbudowanych terminali, takich jakimi są porty szeregowe wpisy dokonujemy pomijając ich dokładną lokalizację (/dev).
Gdy instalujesz system FreeBSD, plik /etc/ttys zawiera wpisy dla pierwszych czterech portów szeregowych: od ttyd0 do ttyd3. Jeżeli podłączasz terminal pod jeden z tych portów nie musisz wprowadzać żadnych zmian.
W naszym przypadku, podłączaliśmy Wyse-50 do 2-giego portu szeregowego, ttyd1, który jest już w tym pliku. Musieliśmy dodać jednak wpis dla 286 PC podłączanego do szóstego portu na karcie wieloportowej. Poniżej jest fragment pliku /etc/ttys po tym jak dadaliśmy do niego nowy wpis:
15.3.3.2. Określanie programu getty
Następne co musimy zrobić to określić program który będzie używany do obsługi procesu logowania się na terminalu. Dla FreeBSD standatdowym programem służącym do tego jest /usr/lib/getty. Wyświetla on linie poleceń login: .
Program getty pobiera (opcjonalnie) jeden paramatr z lini poleceń używanej przez getty. Rodzaj getty mówi nam o charakterystyce danego połączenia z terminalem, tzn. o predkości połączenia, i parzystości. Program getty pobiera swoje ustawienia z pliku /etc/gettytab .
Plik /etc/gettytab zawiera wiele juz zdefiniowanych usatwień dla nowych i starych typów połączenia z terminalem. W prawie wszystkich przypadkach wpisy zaczynające sie od std , będą pracowały dla z terminalami na stałe przyłączonymi do serwera. Wpis ten ignoruje parzystość. W pliku tym znajdują sie linie z określeniami prędkości dla std od 110 do 115,200 bps. Oczywiście nie ma żadnych przeszkód abyś dodał tam swoje własne wpisy. Aby jednak dowiedzieć się o tym więcej przeczytaj w manualu stronę gettytab(5).
Gdy ustawiasz rodzaj getty dla pliku /etc/ttys, upewnij się czy połączenia komunikacyjne na terminalu zgadzają si.
Dla przykładu, Wyse-50 ma następujące ustawienia : brak parzystości i połączenie 38400 bps. PC 286 ustawione także na brak pażystości ale prędkość określimy jako 19200bps. Poniżej są linie w pliku /etc/ttys w których określamy właśnie te 2-a terminale. Uwaga. Drugie pole, w którym określamy program który ma być używany do uruchamiania terminala, zamykamy w cydzysłowiach. Jest to ważne, ponieważ gdybyśmy nie ujęli tego w cudzysłowia argumenty dla getty mogłyby być potraktowane jako następne pole.
15.3.3.3. Określanie podstawowego typu terminala
Trzecie pole w pliku /etc/ttys określa domyślny typ terminala dla danego portu. Dla portów dial-up'owych, będziesz wpisywał unknown lub dialup w tym miejscu ponieważ większość użytkowników posiada dial-up z praktycznie każdym rodzajem terminala lub softwerowego terminala. Dla komputerów na stałe przyłączonych do serwera, type terminala nie zmienia sie, więc możesz umieścić tam prawdziwy typ terminala.
Użytkownicy powinni stosować polecenie tset w ich plikach konfiguracyjnych dla ich kont (.login i .profile lub inne w zależności od specyfikacji serwera) do sprawdzenia typu terminala i wyświetlenia odpowiedniego znaku zachęty jeżeli jest to wymagane. Ustawiając typ terminala w /etc/ttys powinniśmy tak to zrobić aby użytkownicy nie mieli problemów z zalogowaniem się.
Aby znaleść odpowiedni typ terminala wspieranego przez FreeBSD, musisz przeglądnać plik /usr/share/misc/termcap. Jest tam lista okolo 600-set typów terminali. Możesz oczywiście dodać więcej jeżeli tego potrzebujesz. Aby jednak dowiedzieć się o tym więcej przeczytaj w manualu strone gettytab(5).
Dla przykładu, Wyse-50 jest typem terminala Wyse-50 (pomimo iż może on emulować inne typy pozostawimy go w trybie Wyse-50) . PC 286 jest uruchamiany z Procomm który emuluje terminal vt-100. Poniżej jest odpowiednie ale jeszcze nie ukończony wpis z pliku /etc/ttys dla naszego przykładu.
15.3.3.4. Odblokowywanie portów
Następnym polem z pliku /etc/ttys, czyli czwartym w kolejności, jest pole które decyduje czy otworzyć port portu. Wstawiając w nie on uruchomimy proces init dla drugiego wpisu z pliku /etc/ttys, czyli getty, który wywoła dla nas proces logowania. Jeżeli wstawisz tam off, nieuruchomi sie getty i nie będzie można się zalogować na tym porcie.
Naturalnie, ustawia się to pole w przeważającej ilości przypadków na wartość on. Poniżej znowu wycinek pliku /etc/ttys z naniesioną konfiguracją. My w obydwu przypadkach ustawilismy wartość tego pola na on.
15.3.3.5. Określanie bezpiecznych portów
Doszliśmy już do ostatniego pola (no, prawie do ostatniego, jest jeszcze opcjonalne pole window, ale opuścimy je). A więc ostatnie pole mówi nam czy dany port jest bezpieczny.
Co znaczy bezpieczny port?
To znaczy że możemy sie z tego portu zalogować na konto root'a (lub każde inne o UID=0). Na porty nie określone jako secure, żaden użytkownik o UID=0 nie będzie mógł się zalogować.
Jak używać bezpiecznych i niezabezpieczonych portów?
Markując port jako niezabezpieczony, terminal na który się połączymy nie bedzie nam pozwalał na zalogowanie sie jako użytkownik z UID=0. Użytkownicy którzy znają hasło root'a na twój serwer będą najpierw musieli zalogować się jako normalni użytkownicy. Aby otrzymać prawa root'a będą musieli użyć komendy su.
I właśnie dlatego będą dwa zapisy aby pomóc wyśledzić ścieżkę uzyskania praw root'a, obie komendy login i su są zapisywane w logach systemowych (i loginy są również zapisywane w pliku wtemp).
Markując oprt jako bezpieczny, damy możliwość zalogowania się na niego użytkownikowi z prawami root'a. Będzie on (bądź inne osoby znające hasło na root'a) zalogować bezpośrednio jako użytkownik root. Niebędzie musiał wtedy używać komendy su aby uzyskać prawa root'a.
Którego typu powinienneś użyć?
Używaj "insecure". Typu "secure" używaj tylko dla terminali które nie są w sieci publicznej i najlepiej aby znajdowały się za "zamknietymi drzwiami" lub ścianą ognia.
I oto kompletne wpisy dla pliku /etc/ttys, wraz z komentarzem gdzie znajdują się dane terminale.
15.3.3.6. Wymuszenie restartu init aby przeładować ustawienia /etc/ttys
Gdy uruchamiasz FreeBSD, pierwszy proces, init, czyta zawartość pliku /etc/ttys i zgodnie z nim uruchamia programy zgodnie z listą dla każdego wpisu w którym pole czwarte miało wartość on, pozwalając na zalogowanie sie na dany terminal.
Po tym jak wyedytujesz i dokonasz zmian w pliku /etc/ttys, nie musisz restartować systemu aby init zobaczył zmiany w tym pliku. Więc, init ponownie odczyta plik /etc/ttys, gdy otrzyma sygnał SIGHUP.
Po tym jak zapiszesz wprowadzone zmiany do pliku /etc/ttys, wyślij sygnal SIGHUP do procesu init wpisując: (Proces init zawsze ma ID 1)
Jeżeli wszystko skonfigurowało się poprawnie, i wszystkie kable są wpięte w odpowiednie porty komunikacyjne, i terminal jest załączony, powinienneś zobaczyć linie logowania. Twój terminal jest gotowy do pierwszego zalogowania.
15.3.4. Usuwanie błędów
Nawet jeżeli całą operacje przeprowadzamy z najdrobniejszymi szczegółami, ciągle coś może pojść nie tak. Poniżej lista symoptomów i sugerowanych możliwości rozwiązania problemu.
Nie pokazuje się okno logowania
Upewnij się że terminal jest podłączony i załączony do prącu. Jeżeli jest to osobisty komputer pracujący jako terminal, upewnij się że jest na nim uruchomiona programowa emulacja na dobry port komunikacyjny.
Upewnij się że kable są poprawnie wpięte do obydwu komputerów.
Upewnij się że są to dobre kable.
Upewnij się że terminal i FreeBSD mają ustawioną taką samą prędkość transmisji (bps) i parzystość. Jeżeli masz terminal graficzny, upewnij się że kontrast i jasność nie są wyzerowane. Jeżeli jest to drukarka pracująca jako terminal upewnij się że jest w niej papier i tusz w odpowiednich ilościach i miejscach.
Upewnij się że uruchomiony zostal proces getty i obsługuje terminal. Wpisz
aby otrzymać listę uruchomionych procesów getty. Powinienneś w niej zobaczyć wpis dla Twojego terminala. Dla przykładu :
pokazuje że proces getty jest uruchomiony na drugim porcie komunikacyjnym ttyd1 i używa wpisu std.38400 z /etc/gettytab. Jeżeli nie ma uruchomionego takiego procesu getty sprawdź czy odblokowałeś port w pliku /etc/ttys. Upewnij się żę napewno wykonałeś polecenie kill -HUP 1
Dziwne znaczki występujące zamiast lini login: Upewnij się że terminal i FreeBSD są zgodne ze sobą jeżeli chodzi o ustawienia prędkości (bps) i parzystości. Sprawdz proces getty i miej pewność że używasz dobrego typu getty. Jeżeli nie wyedytuj /etc/ttys i ponownie wykonaj polecenie kill -HUP 1
Znaki są wyświetlane podwójnie, a hasło nie jest ukrywane
Przełącz terminal (lub programową emulację terminala) z "half duplex" lub "local echo" na "full duplex"
15.4. Obsługa połączeń wychodzących
Ten dokument dostarczy Ci sugestii odnośnie skonfigurowania FreeBSD jako systemu do przyjmowania połączeń typu dial-up. Ten dokument jest napisany w oparciu o doświadczenia autora (Guy Helmer
15.4.1. Wymagania
Aby zacząć pracę nad tym rozdziałem potrzebna jest podstawowa wiedza na temat systemu FreeBSD. Autor zakłada że: masz zainstalowany system FreeBSD, wiesz jak edytować w nim pliki oraz jak korzystać z manuali systemowych. Jako omówienie opisane poniżej, dla określonej wersji systemu FreeBSD, znajduje się podstawowa wiedza na temat terminologi, modemów oraz okablowania.
15.4.1.1. Wersja systemu FreeBSD
Pierwsze co zakładamy to to że używasz FreeBSD w wersji 1.1 lub wyższej (włączając wersję 2.X). FreeBSD w wersji 1.0 zawiera dwa różne sterowniki sieciowe, co komplikuje sytuację. Więc, sterownik urządzenia szeregowego (sio) jest udoskonalany w każdym wydaniu FreeBSD, więc w nowszej wersji FreeBSD będzie udoskonalony i bardziej efektywny sterownik niż w wcześniejszej wersji systemu.
15.4.1.2. Terminologia
Szybkie wyjaśnienie terminologii:
Jeżeli potrzebujesz więcej informacji na ten temat terminologi i tematu komunikacji, autor poleca do przeczytania pozycję "The RS-232 Bible" (niestety brak numeru ISBN), która jest warta odwołania.
Gdy mówimy o prędkości przesyłu danych, autor nie używa terminu "baud". "Baud" odnosi się do ilości elektrycznych zmian stanu, który może być uzyskany w okresie czasu, podczas gdy "bps" jest poprawnym terminem którego należy używać.
15.4.1.3. Zewnętrzne modemy kontra modemy wewnętrzne
Zewnętrzne modemy są mniej kłopotliwe do połączeń dial-up, ponieważ często mogą być konfigurowane na stałe poprzez parametry przechowywane w nie kasującej się pamięci RAM, i dostarczają nam informacji o sygnałach RS-232 poprzez migające diody. Migające diody imponują oglądającym, ale mogą nam także pokazywać co obecnie modem robi.
Wewnętrzne modemy zwykle nie posiadają niekasującej się pamięci RAM, dlatego ich konfiguracje może odbywać się tylko poprzez ustawianie zworek. Jeżeli modem wewnętrzny posiada nawet jakies diody, to i tak kożystanie z nich jest dość małowygodne ponieważ znajdują sie one w tylniej częsci komputera lub są przysłonięte obudową.
15.4.1.4. Modemy i kable
Za podstawową wiedzę na ten temat przyjmuje się:
Pierwsze co należy zrobić to podłączyć modem, przeważnie jest do proste, wiekszość szeregowych kabli działa bez problemów. Będziesz także potrzebował kabla z odpowiednią wtyczką (DB-9 lub DB-25 żeński lub męski) na każdym końcu, a kabel musi być typu DCE-to-DTE z następującymi kablami syngałowymi:
FreeBSD wymaga sygnałów RTS i CTS dla sterowania strumieniem danych przy prędkościach powyżej 2400 bps, sygnał CD do wykrycia kiedy nadchodzi odpowiedź lub linia się podnosi, i sygnału DTR do resetowania modemu po zakończeniu sesji. W niektórych kablach jest więcej lini niż wymaga się do przesyłania sygnałów, więc jeżeli masz problem , jak naprzykład zalogowana sesja nie kończy się gdy linia "podnosi się", problem może wynikać z winy kabla.
Drugim wymogiem jest to abyś umiał posługiwać się modemem którego używasz. Jeżeli nie znasz poleceń lini komend swojego modemu, bedziesz potrzebował podręcznika modemu lub podręcznego poradnika użytkownika.
Ostatnią żeczą która musisz wiedzieć to jak ustawić swój modem aby dobrze pracował z systemem FreeBSD. Jak i inne UNIX'owe systemy operacyjne, FreeBSD używa sygnałów sprzętowych do znajdywania nadchodzących połączeń, lub odpowiedzi na wywołanie połączenia, lub też resetowania modemu po połączeniu. FreeBSD unika wysyłania komend do modemu lub sprawdzania statusu z modemu. Jeżeli jesteś obeznany z podłączaniem modemów do bazujacych na PC BBS'ów, może się to kłopotliwe.
15.4.1.5. Szeregowe interfejsy brane pod uwagę
FreeBSD obsługuje NS8250-, NS16450-, NS 16550- i NS 16550A-based EIA RS-232C (CCIT V.24) interfejsy komunikacyjne.Urządzenia 8250 i 16450 mają jedno znakowy bufor. Urządzenie 16550 posiada 16-sto znakowy bufor, który zwiększa wydajność systemu. Błąd w planowaniu 16550 przeszkadza w używaniu 16-sto znakowego bufora, więc jeżeli to możliwe staraj się używać 16550A. Ponieważ jedno-znakowy bufor urządzenia wymaga większej pracy systemu operacyjnego niż 16-sto znakowy bufor, karta 16550A jest bardziej wygodna i preferowana. Jeżeli system ma wiwle aktywnych portów szeregowych lub duże load'y, karta 16550A jest lepsza dla uzyskania niskiej ilości błędów transmisji.
15.4.2. Szybki przegląd
Poniżej jest proces w jakim FreeBSD postępuje aby zalogować połączenie Dial'up. Proces getty uruchomiony przez init, czeka aby otworzyć określony port szeregowy (dla przykładu /dev/ttyd0). Komenda ps ax powinien pokazać:
Gdy urzytkownik dzwoni modemem i modemy nawiązą połączenie, sygnał CD jest potwierdzeniem modemu. Kernel zauważy ze połączenie zostało odkryte i getty zostało otwarte dla portu. getty wysyła linię logowania login: na określonej prędkości lini. getty sprawdza czy otrzymywane znaki są dopuszczalne, i , w standardowej konfiguracji, jeżelie znajduje śmieci (prawdopodobnie połącznenie modemów ma inną prędkość niż getty), getty stara się dostosować predkość tak aby otrzymywane znaki były czytelne.
Mamy nadzieję że getty znajdzie poprawną prędkość i urzytkownik zobaczy słowo login: . Po tym jak wprowadzi on swoją nazwę urzytkownika, getty wykona program /usr/bin/login, który dokonczy logowanie pytając o hasło a następnie uruchomi shell.
Przyglądnijmy się głębiej konfiguracji.
15.4.3. Konfiguracja kernela
Typowy kernel FreeBSD jest przygotowany do obsługi czterech portów szeregowych, znanych w DOS'ie pod nazwami : COM1:, COM2:, COM3: i COM4:. FreeBSD może obecnie pracować także z "głupimi" wieloportowymi kartami szeregowymi jak naprzykład Boca Boeard 1008 i 2016 (proszę przeczytaj manuala sio(4) aby dowiedzieć się więcej o konfiguracji kernela z wieloportową kartą szeregową). Standardowy kernel szuka jedynie standardowych portów COM.
Aby zobaczyć czy Twój kerel rozpoznał któryś z Twoich portów szeregowych, obserwuj komunikaty podczas procesu botowania sie kernela, lub użyj polecenia /sbin/dmesg aby powtórzyć te komunikaty. W szczególności szukaj lini zaczynających się od słowa sio. Hint: aby zobaczyć tylko komunikaty zawierające w sobie słowo sio użyj polecenia :
Dla przykładu, w systemie z czterema portami szeregowymi, są to następujące porty:
Jeżeli Twój kernel nie rozpoznał wszystkich portów szeregowych, prawdopodobnie będziesz musiał stworzyć kernel z określonymi parametrami specjalnie dla Twojej konfiguracji sprzętowej.
Proszę przeczytaj w BSD System Menager's Manual rozdział "Building Kernels with Config" [tekst znajdziesz także w /usr/src/share/doc/smm] i "FreeBSD Configuration Options" [ z /sys/conf/options i /sys/arch/conf/options.arch z arch zaczynającym się dla przykładu od i386 ] aby dowiedzieć się więcej na temat konfiguracji i tworzenia kernela. Może będziesz musiał rozpakować źródła dystrybucji kernela, jeżeli nie masz tych źródeł obecnie w systemie *srcdist/srcsys.?? w FreeBSD 1.1, srcdist/sys.?? w FreeBSD 1.1.5.1, lub wewnątrz dystrybucji w FreeBSD 2.0) aby móc (umieć) skonfigurować i stworzyć kernel.
Stwórz konfiguracje kernela dla własnego systemu (jeżeli takowej jeszcze nei posiadasz) wejdź do katalogu /sys/i386/conf. Jeżeli tworzysz nowy plik konfiguracyjny, skopij plik GENERICAH (obecnie GEENRIC, albo LINT) do YOURSYS, gdzie YOURSYS jest nazwą Twojego systemu, ale pisaną z dużych liter. Wyedytuj go i zmień następujące linie:
Możeszy odkomentować lub calkowicie usunąć linie dla użądzeń których nie masz. Jeżeli masz wieloportową kartę szeregową, jak Boca Board BB2016, przeczytaj manuala sio(4) jeżeli chcesz mieć kompletne informacje na temat jak wpisać linie dla wieloportowej karty. Bądź ostrożny jeżeli używasz pliku konfiguracyjnego z innej wersji systemu, ponieważ flagi użądzeń różnią się w niektórych wersjach.
NOTA: port "IO_COM1" jest substytutem dla port 0x3f8, IO_COM2 dla 0x2f8, IO_COM3 dla 0x3e8 i IO_COM4 dla 0x2e8, które mają wspólne adresy portów dla respektowanych portów szeregowych; przerwania 4,3,5,9 są wspólnymi przerwaniami dla lini. Tak więc regularne porty szeregowe nie mogą wspólnie kożystać z przerwań na ISA-bus (wieloportowe karty mają wbudowaną na płycie elektronikę, która pozwala wszystkim urządzeniom typu 16550A na płycie dzielić jedno albo dwa przerwania lini zgłoszeniowej).
Gdy skończysz korygować swój plik kernela, użyj programu config jak w dokumentacji "Building Berkeley Kernels with Config" i przeczytaj manuala config(8) aby przygotować strukturę kernela, później go stworzyć i zainstalować a następnie przetestować.
15.4.4. Pliki specjalne urządzeń
Większość urządzeń w kernelu jest dostępna jako "pliki specjalne urządzeń", które znajdują się w katalogu /dev . Urządzenie sio jest dostępne jako użądzenie /dev/ttyd? (wdzwaniania) i /dev/cuaa? (połączeń wychodzących). W FreeBSD versji 1.1.5 i wyższych są tam także urządzenia inicjalizujące (/dev/ttyid? i /dev/cuai0?) i urządzenia blokujące (/dev/ttyld i /dev/cual0). Urządzenia inicjalizujące są używane do zainicjowania portu szeregowego za każdym razem gdy port ten jest otwierany, tak jak polecenie crtcts dla modemów które używają sygnalizacji CTS/RTS do sterowania przepływem danych. Urządzenia blokujące sa używane aby nadać flagę zablokowane co chronić będzie programy lub użytkowników przed zmianą parametrów, przeczytaj manuala termios(4), sio(4) i stty(4) aby dowiedzieć się o ustawieniach terminala, blokowaniu i inicjowaniu urządzeń i i ustawianiu opcji terminala.
15.4.4.1. Tworzenie plików specjalnych urządzeń
Skrypt shell'owy o nazwie MAKEDEV w katalogu /dev zarządza plikami specjalnymi urządzeń. Aby użyc skryptu MAKEDEV do stworzenia pliku specjalnego dla urządzenia do dial'up dla portu COM1: (port 1) użyj MAKEDEV ttyd1 .
MAKEDEV tworzy nie tylko pliki specjalne urządzenia /dev/ttyd? , ale także /dev/cuaa? (i wszystkie pliki do urządzeń inicjalizujących i blokujących w systemie) i usuwa usuwa plik specjalny terminala podpietego na sztywno (/dev/tty0?) jeżeli takowy istnieje.
Po stworzeniu nowych plików specjalnych urządzeń, sprawdź uprawnienia tych plików (a zwłaszcza /dev/cua* ) aby mieć pewnie że jedynie uzytkownicy którzy powinni mieć do niech dostęp moga czytać i zapisywać na nich -- najprawdopodobniej nie będziesz chciał dopuścić wszystkich swoich użytkowników aby używali Twoich modemów do łączenia się. Standardowe uprawnienia dla plików /dev/cua* powinny być wystarczające: Te uprawnienia dopuszczają do używania użytkownika uucp oraz innych użytkowników z grupy dialer aby mogli korzystać z urządzenia.
15.4.5. Plik konfiguracyjny
Są trzy pliki konfiguracyjne w katalogu /etc które najprawdopodobniej będziesz musiał zmodyfikować aby dopuścić połączenia dial-up do twojego systemu. Pierwszy , /usr/gettytab, zawiera informacje o konfiguracji dla deamona /usr/libexec/getty. drugi, /etc/ttys, zawiera informacje które mówią /sbin/init jakie urządzenie tty powienien posiadać proces getty uruchamiany dla niego. Na końcu możesz umieścić polecenie inicjalizacji portów w skrypcie /etc/rc.serial jeżeli posiadasz system w wersji 1.5.1.1 lub wyższej, lub możesz inicjalizować porty z skryptu /etc/rc.local .
Są dwie szkoły konfigurowania modemów Dial-up w UNIX'ie. Jedna grupa konfiguruje swoje modemy i system tak że nei ma znaczenia z jaką prędkościa użytkownik wdzwania się do ich systemu, interfejs portu RS-232 uruchamia sie z zablokowaną prędkością. Kożyść wynikająca z takiej konfiguracji jest taka że użytkownik wdzwaniający się zawsze uzyska połączenie. Problemem jest to że system nie wiem jaka jest prawdziwa prędkość połączenia, wiec pełnoekranowe programy jak Emacs nie rozszerzą swoich metod 'screen-painting' aby stworzyć lepsze odpowiedzi dla niższych prędkości.
Druga szkoła to konfiguracja swoich modemow na interfejsach RS-232 tak aby prędkość bazowa jest uzależniona od prędkości zdalnego użytkownika. Połączenie w standardzie V.32bis (14,4 Kbps) z modemem uruchomionym na interfejsie RS-232 z prędkościa 19,2 Kbps, gdy połączenie 2400bps uruchamia interface RS-232 w tej właśnie prędkości. Ponieważ getty nie zrozumie żadnego szczególnego raportu z połączenia modemów, getty wyświetli login: w prędkości zgodnej z prędkościa inicjalizującą i będzie sprawdzał wracające do niego znaki. Jeżeli użytkownik zobaczy u siebie śmieci, powinien naciskać
Autor będzie próbował dać pośrednie informacje pomiedzy tymi dwoma sposobami, ale jest uprzedzony do posiadania konfiguracji w której prędkość połączenia modemów jest zależna od prędkości połącznia.
15.4.5.1. /etc/gettytab
/etc/gettytab jest stylem termacap(5) plikiem konfiguracyjnym dla informacji o getty. Proszę zobaczyć w manual'u gettytab(5) w celu uzyskania kompletnych informacji na ten temat.
15.4.5.1.1. Konfiguracja z stała prędkością
Jeżeli blokujesz swoją prędkość komunikacji z modemem, prawdopodobnie nie będziesz musiał dokonywać żadnych zmian w pliku /etc/gettytab .
15.4.5.1.2. Konfiguracja z dopasowywaną prędkością
Będziesz musiał ustawić wpis w /etc/gettytab aby przekazywał on procesowi getty informacje na o prędkości jaką chcesz używać dla swojego modemu. Jeżeli masz modem 2400bps, będziesz prawdopodobnie używał istniejącego wpisu D2400. Ten wpis istnieje w FreeBSD 1.1.5.1. w pliku gettytab, więc nie będziesz potrzebował dodawać nic chyba że jest to inna wersja FreeBSD.
Jeżeli masz modem o większej prędkości, będziesz prawdopodobnie potrzebował dodać wpis w plik /etc/gettyrab; poniżej jest przykładowy wpis pozwalający używać Ci modemu 14.4 Kbps z górnym interfejsem ustawionym na 19.2 Kbps.
w FreeBSD 1.1.5 i późniejszych taki wpis zaowocuje połączeniem z ustawieniami 8-bit, bez parzystości. W wersjach FreeBSD poniżej 1.1 dodaj parametr :np: do wpisu std.xxx na początki pliku dla 8-smio bitowych, bez parzystości, inaczej, standardowo połączenie ma parametry 7bit, parzystość.
Powyższy przykłąd startuje z prędkościa 19.2 Kbps (dla połącznień V.32bis), następnie przełącza się na 9600bps (dla V.32), 2400 bps, 1200 bps, 300bps i wróci do 19.2 Kbps. Przełączanie połączeń jest zdefiniowane w nx=("następny w tablicy"). Każda z lini używająca wpisu tc=("kontynuacja tablicy") podnosi resztę z "standardowych" ustawień dla konkretnej prędkości połączenia.
Jeżeli posiadasz modem 28.8 Kbps i/lub chcesz skorzystać z kompresji na modemie 14.4 Kbps, będziesz musiał użyć większych prędkości połączenia niż 19.2 Kbps. Poniżej jest przykład wpisu w gettytab startującego od prędkości 57600 Kbps:
Jeżeli masz wolny procesor lub duże load'y systemowe i nie masz portu szeregowego 16550-based, możesz otrzymywać blędy sio "silo" przy połączeniu 57.6 Kbps.
15.4.5.2. /etc/ttys
/etc/ttys jest listą ttys dla init do monitorowania. /etc/ttys także dostarcza bezpiecznych informacji do login: (użytkownik root może logować się jedynie na ttys oznaczone jako secure). Zobacz w manualu ttys(5) aby dowiedzieć się więcej.
Będziesz musiał wcześniej zmodyfikować istniejące linie w /etc/ttys lub dodać nowe aby init mógł uruchomić proces getty automatycznie dla nowego portu dial-up. Ogólny format lini będzie taki sam, czy używasz blokowanej prędkości czy też ustawianej w konfiguracji:
Pierwszy atrybut na poczatku lini określa urządzenie specjalne, dla tego wpisu -- ttyd0 znaczy /dev/ttyd0 jest plikiem który getty będzie obserwować. Drugi atrybut, "/usr/libexec/getty xxx" (xxx jest powtórzone w ustawieniach inicjalizacyjnych gettytab) jest procesem init uruchamianym na urządzeniu. Trzecim atrybutem, dialup, jest standardowy typ terminala. Czwartym parametrem , on, wskazującym na init że ta linia jest opcjonalna. Może istnieć także piąty parametr, secure, ale ale powinien on być używany tylko dla terminali fizycznie bezpiecznych (jak naprzyklad konsola).
Standardowym typem terminala (dialup dla powyższego przykładu) może różnić się w lokalnych preferencjach. dialup jest tradycyjnym standardowym typem terminala dla lini dial-up, więc użytkownicy mogą tworzyć swój własny skrypt z ustawieniami aby zauważyć że terminal jest jako dialup i automatycznie zmienić go na inny typ. Aczkolwiek autor znalazł wygodniejszy sposób, jego strona ustawia vt100 jako standardowy terminal, ponieważ użytkownicy używają emulacji VT100 an swoich zdalnych systemach.
Po tym jak dokonasz zmian w /etc/ttys, bedziesz musiał do procesu init sygnał HUP aby go ten zczytał na nowo ustawienia w pliku. Możesz użyć komendy:
aby wysłać ten sygnał. Jeżeli jest to pierwszy raz gdy zmieniasz ustawienia systemu, pomimo to, byćmoże będziesz musiał zaczekać dopóki twój modem nie zostanie odpowiednio skonfigurowany i podłączony zanim wyślesz HUP do init.
15.4.5.2.1. Plik konfiguracyjny z blokowaną prędkością
Dla konfiguracji z blokowaną prędkością, twoje wpisy w ttys będą potrzebować wpisu z poprawną prędkością aby go dostarczyć do getty. Dla modemu którego prędkość na porcie jest zablokowana na 19200 Kbps, wpis ttys powinien wyglądać mniejwięcej tak:
Jeżeli modem jest zablokowany na innej prędkości przesyłania danych, zastąp wpis std.19200 odpowiednim dla prędkości wg schamatu std.speed z /etc/gettytab.
15.4.5.2.2. Konfiguracja z ustawianą prędkością
W konfiguracji z ustawianą prędkością, twoje wpisy ttys będą wymagały właściwego początku "auto-baud" (sic) wpisu w /etc/gettytab. Dla przykładu, jeżeli dodasz powyższe wpisy dla modemów z negocjowaną prędkością która startuje od 19.2 Kbps (wpisy w gettytab zawierają punkt startowy na V19200), twój ttys powinien wyglądać tak:
15.4.5.3. /etc/rc.serial lub /etc/rc.local
Modemy wysokich prędkości, jak V.32, V.32bis i V.34, wymagają używania sprzetowego sterowania przepływem danych. Możesz dodać komende stty do /etc/rc.serial w FreeBSD 1.1.5.1. i wyżej lub w /etc/rc.local w FreeBSd 1.1, aby ustawić flagę sprzętowej kontroli transmisji danych w kernelu FreeBSD dla portu modemowego.
Dla przykładu, w FreeBSD 1.1.5.1, /etc/rc.serial czyta:
Te ustawienia flagi crtscts dla termios napierwszy port szeregowy (COM2:) są dla inicjalizacji urządzeń dial-in i dial-out.
W starszych systemach jak FreeBSD 1.1, te wpisy dodawaliśmy do pliku /etc/rc.local aby ustawić te flagę na urządzeniu jako crtscts:
Ponieważ w FreeBSD 1.1 nie ma plików specjalnych urządzeń, jeden poprostu wyłącznie ustawia flagi na urządzeniach, i należy mieć nadzieję że nie zostaną one zmienione.
15.4.6. Ustawienia modemu
Jeżeli posiadasz modem który pozwala na trwłe ustawienia parametrów w nieulegającym resetowaniu RAM'ie, będziesz musiał użyć programu terminala (jakim jest naprzykład Telix pod PC-DOS lub tip pod FreeBSd) aby ustawić parametry. Podłącz modem używając tej samej prędkości początkowej jaką używa getty i skonfiguruj RAM modemu zgodnie z następującymi wymaganiami:
Proszę przeczytaj dokumentację do swojego modemu by znaleść komendy i/lub zworki które do tego służą.
Dla przykładu aby ustawić powyższe ustawienia na modemie USRobotics Sportster 14,400 zewnętrznym, jedną z możliwości jest wpisanie takiej komendy do modemu:
Będziesz prawdopodobnie także potrzebował to zrobić aby zmienić inne ustawienia w modemie jak naprzykład wtedy gdy chcesz używać V.42bis i/lub kompresji MNP5.
Zewnętrzny modem USR Sportster 14,400 ma także kilka zworek, które muszą zostać usatwione, dla innych modemów możesz posłużyć się poniższym przykładem:
Wyświetlenie kodu wynikowego powinno być zablokowane dla modemów dial'upowych aby uniknąć problemów które mogą wystąpić gdy getty poda omyłkowo linię login: do modemu, jest to w lini poleceń i modem wyświetli echo lub zwróci kod wynikowy. Słyszałem że taka sekwencja może prowadzić do "głupiej" rozmowy getty z modemem.
15.4.6.1. Plik konfiguracyjny z blokowaną prędkością
Dla konfiguracji z blokowaną prędkością, będziesz musiał skonfigurować modem tak aby utrzymywał stałą prędkość przesyłania danych pomiędzy modemem a komputerem, niezależną od prędkości komunikacji między nimi. W zewnętrznym odemie USR Sportster 14,400, poniższe komendy zablokują prędkość przesyłania danych pomiędzy modemem a komputerem do wielkości podanej w komendzie:
15.4.6.2. Konfiguracja z ustawianą prędkością
Dla konfiguracji różnoprędkościowych , będziesz musiał skonfigurować tak swój modem aby podnosił on prędkość na porcie szeregowym do wielkości z jaką otrzymuje on dane. W modemie zewnętrznym USR Sportster 14,400 poniższe komendy blokują błędy modemu, poprawna prędkość przesyłania danych zawarta jest w poleceniu, ale dopuszczalna prędkość portu szeregowego będzie dostosowywana do połączenia pozbawionego błędów.
15.4.6.3. Sprawdzania konfiguracji modemu
Większość modemów oferujących nam wyrzsze prędkości posiada komendy pozwalające nam na sprawdzenie nam obecnych parametrów działania modemu, w postaci czytelnej dla człowieka. W zewnętrznym modemiem USR Sportster 14,400, komenda ATI5, wyświetli ustawienia które są przetrzymywane w niekasowanej pamięci RAM. Aby zobaczyć prawdziwe operacyjne parametry modemu wpisz komendę ATZ a następnie ATI4.
Jeżeli posiadasz modem innej firmy sprawdź instrukcję modemu, jak podwójnie sprawdzić paarmetry konfiguracujne modemu.
15.4.7. Rozwiązywanie problemów
Poniżej znajdziesz kilka porad jak sprawdzić twój modem.
15.4.7.1. Sprawdź swój system
Podłącz swój modem do komputera z FreeBSD, uruchom go, i jeżeli na modemie zaświecą się diody (DST i PWR) zobacz czy dioda DTR świeci gdy na konsoli pojawia sie login: . Jeżeli się zaświeciła znaczy to że system uruchmił proces getty i przygotował port komunikacyjny i czeka na połączenie z modemem.
Jeżeli dioda DTR nie zapaliła się, zaloguj się na konsoli i wpisz komendę ps ax aby zobaczyć czy system próbuje uruchomić proces getty na właściwym porcie. Powinienneś zobaczyć linie takie jak poniżej spośród wyświetlanych : Jeżeli zobaczysz coś innego jak naprzykład
i modem nie będzie akceptował połącznia, znaczyć to będzie że proces getty jest uruchomiony poprawnie i czeka na otwarcie portu komunikacyjnego. Będzie to wtedy prawdopodobnie problem z kablem lub konfiguracją modemu, ponieważ getty nie jest w stanie otworzyć portu komunikacyjnego dopóki CD (Carrier Detect) has been asserted by the modem.
Jeżeli nie widzisz żadnego procesu getty czekającego na otwarcie przeznaczonego portu ttydX, sprawdź ponownie wpisy w /etc/ttys czy nie popełniłeś tam jakiegoś błędu. Sprawdź także plik z logami (/var/log/messages) czy mie ma tam jakiś wpisów z init lub getty określających problem. Jeżeli nie ma tam żadnych logów, sprawdź jeszcze raz /etc/ttys i /etc/gettytab czy dobrze wpisane są wymagane pliki urządzeń specjalnych ttydX, czy nie popełniłeś jakiejś innej literówki.
15.4.7.2. Spróbuj wdzwonić się
Spróbuj wdzwonić się do systemu, upewnij się że masz ustawione: 8 bits, brak parzystości, 1 bit stopu, na zdalnym systemie. Jeżeli nie otrzymasz znaku zachęty, lub też otrzymasz ``śmieci'', spróbuj naciskać
Jeżeli nadal nie zobaczysz lini login:, sprawdź ponownie zawartość pliku /etc/gettytab zwracając uwagę na
Nazwa inicjacyjna wyszczególniona w /etc/ttys zgadza się z tą samą linią w /etc/gettytab
Każdy wpis nx= pasuje do innej nazwy z gettytab
Każdy wpis tc= pasuje do inneh nazwy z gettytab
Jeżeleli dzwonisz a modem na systemie FreeBSD nie odpowiada, upewnij się że modem jest skonfigurowany tak aby odpowiadać na telefon gdy sygnał DTR jest zapewniony. Jeżeli mogem wygląda na skonfigurowany poprawnie, sprawdź czy modem dostaje sygnał DTR sprawdzając czy na modemie pali się odpowiednia dioda(jeżeli modem posiada jakąś).
Jeżeli sprawdziłeś już wszystko kilka razy i nadal nie możesz się wdzwonić, zrób sobie przerwę i spróbuj później. Jeżeli i to nie pomoże, może powinienneś wysłać mail'a na główną grupę newsową FreeBSD
15.4.8. Podziękowania
Dziękuje tym ludziom za komentaż i porady:
Sean Kelly kelly@ad1440.net
15.5. Dial-out Service
Informacje scalone FAQ.
Poniżej znajdują sie podpowiedzi dzięki którym twój komputer będzie mógl połączyć się używając modemu z innym komputerem. Są one odpowiednie aby ustanowić sesję terminala z zdalnym hostem.
Jest to użyteczne do logowania się do BBS.
Ten rodzaj połączeń może być niezmiernie pomocny podczas pobierania plików z Internetu, jeżeli masz problemy z PPP. Jeżeli potrzebujesz czegoś z FTP a nie masz połączenia FTP, użyj sesji terminala. Później użyj zmodem aby przesłać je na swój komputer.
15.5.1. Dlaczego nie mogę uruchomić tip lub cu?
Na twoim systemie, prawdopodobnie programy tip i cu mają prawa wykonywania tylko dla użytkownika uucp i grupy dialer. Możesz używaj tej grupy do kontrolowania kto może kożystać z twojego modemu lub zdalnych systemów. Poprostu dodaj swojego użytkownika do drupy dialer.
Możesz także udostępnić wszystkim użytkownikom możliwość uruchamiania programów tip i cu wpisując:
Nie musisz wydawać tego polecenia dla cu, ponieważ cu jest tylko linkiem do programu tip.
15.5.2. Mój zapasowy modem Hayes nie ma wsparcia, co mogę zrobić? Obecnie, strona manuala dla programu tip jest nieaktuala. Ogólny dialer jest już wbudowany. Wystarczy użyć polecenia at=hayes w twoim pliku /etc/remote. Sterownik dla Hayes nie jest na tyle rozbudowany aby rozpoznać niektóre bardziej zaawansowane komunikaty z modemu jak naprzykład BUSY, NO DIALTONE lub CONNECT 115200 i poprostu je odrzuci. Powinienneś wyłączyć te komunikaty gdy używasz programu tip (używając ATX0&W). A więc, przekroczenie czasu nawiązywania połączenia dla tip wynosi 60 sekund. Twój modem powinien używać czegoś mniejszego, w przeciwnym razie tip będzie informował nas o problemach w komunikacji. Spróbuj ATS7=45&W. Aktualnie, jako dostraczony tip nie posiada pełnego wsparcia. Rozwiązaniem jest wyedytowanie pliku tipconf.h w katalogu /usr/src/usr.bin/tip/tip. Oczywiście potrzebujesz źródeł dystrybucji. Zmień linie #define HAYES 0 na #define HAYES 1. Następnie wykonaj polecenia make i make install. Wszystko będzie działąć lepiej po wykonaniu tych czynności.
15.5.3. Jak mam oczekiwać na wpisanie tych komend AT?
użyj maksymalnej wielkości bps którą obsługuje twój modem w zmiennej br. Następnie, wpisz tip cuaa0, dzięki czemu połączysz się z modemem.
Jeżeli w twoim systemie nie ma urządzenia /dev/cuaa0, wykonaj następujące czynności:
Lub użyj z poziomu root'a cu z następującymi opcjami:
line jest portem szeregowym (np. /dev/cuaa0) a speed jest prędkością (np. 57600). Gdy skończysz wpisywać komendy AT wpisz ~. aby wyjść z cu.
15.5.4. Znak @ dla zmiennej pn nie działa! Znak @ przy określaniu zmiennej numeru telefonu (tł. z ang. phone number czyli pn) mówi programowi tip żeby sprawdzał plik /etc/phones w poszukiwaniu tego numeru. Niestety @ jest także specjalnym znakiem w zmiennych plików takich jak /etc/remote. Aby go użyć musisz poprzedzić go backslash'em:
15.5.5. Jak mogę wybierać numer telefonu z lini komend?
Wpisz to co nazwane jest ``generic'' w pliku /etc/remote. Dla przykładu:
Następnie możesz wpisać:
Jeżeli wolisz cu od tip, użyj standardowego wpisu cu:
a następnie:
15.5.6. Czy muszę za każdym razem wpisywać prędkość bps? Umieść ją w wpisie dla tip1200 lub cu1200, ale idź do przodu i użyj dla każdej prędkości bps odpowiednią wartość br. Dla tip domyślną prędkością jest 1200 bps, której wpis z ustawieniami jest szukany. Niemusisz przecież używać 1200bps.
15.5.7. Mogę przekazać numer hosta bezpośrednio do terminala serwera? Chętniej niż czekać dopóki nie połączysz się i wpiszesz CONNECT
pozwolą Ci wpisać tip pain lub tip muffin i połączyć się z tymi hostami; oraz tip deep13 aby dostać się do terminalu serwera.
15.5.8. Czy tip może próbowac więcej niż jedną linię dla każdej strony? Jest to częsty problem gdy uniwersytet ma kilkanaście lini modemowych i kilkunastuset studentów próbujących się na nie łączyć...
Stwórz wpis dla twojego uniwersytetu w /etc/remote i użyj @ jako wartości zmiennej pn:
Póżniej, umieść listę numerów telefonów dla uniwersytetu w pliku /etc/phones:
tip będzie próbował każdego telefonu z listy, po czym zakończy pracę. Jeżeli chcesz aby ciągle próbował się połączyć, uruchom tip w pętli while.
15.5.9. Dlaczego musze dwukrotnie wciskać CTRL+P aby wysłać pojedyńcze CTRL+P? CTRL+P jest standardowo ``wymuszającym'' znakiem, używanym do informowania tip że następny znak jest daną. Możesz ustawić wymuszający znak dla każdego innego znaku używając ~s escape, które znaczy ``ustaw zmienną''. Typ ~sforce=single-char (tł. pojedyńczy znak) następuje w nowej lini. single-char jest pojedyńczym znakiem. Jeżeli wykluczasz pojedyńcze znaki, wtedy znak wymuszający jest znakiem pustym, które możesz otrzymać używając CTRL+2 lub CTRL+SPACJA. Dobrą wartością dla pojedyńczego znaku jest SHIFT+CTRL+6, które jest używany w niektórych serwerach terminali. Możesz ustawić wymuszający znak na cokolwiek zechcesz, definiując go w pliku $HOME/.tiprc:
15.5.10. Nagle wszystko co wpisuję jest pisane DUŻYMI LITERAMI?? Musisz użyć CTRL+A, ``podniesione znaki'' zostały zaprojektowane dla osób z zepsutym klawiszem caps-lock. Użyj ~s jak powyżej i ustaw zmienną raisechar na odpowiadającą tobie. Oczywiście możesz ustawić ją tak samo jak znak wymuszający, jeżeli uważasz że nie będziesz którejkolwiek używał.You must have pressed CTRL+A, tip's ``raise character,'' specially designed for people with broken caps-lock keys. Use ~s as above and set the variable raisechar to something reasonable. In fact, you can set it to the same as the force character, if you never expect to use either of these features.
Oto prosty plik .tiprc doskonały dla użytkowników Emacs którzy często kożystając z kombinacji CTRL+2 i CTRL+A:
^^ odpowiada kombinacji SHIFT+CTRL+6.
15.5.11. Jak mogę używać tip do trancferu plików? Jeżeli rozmawiasz z innym systemem UNIX, możesz wysłać i otrzymać pliki używając ~p (upuść, wyślij) i ~t (przyjmij). Komendy te uruchamiają cat i echo na zdalnym systemie aby otrzymywać i wysyłać pliki. Składnia to:
Niestety nie ma tutaj sprawdzania błędów, więc prawdopodobnie powinienneś użyć innego protokołu, jak naprzykłąd zmodem.
15.5.12. Jak mogę uruchomić zmodem z tip'em? Aby otrzymywać pliku, uruchom program wysyłający na zdalnym końcu. Następnie wpisz ~C rz aby rozpocząc odbieranie ich lokalnie. Aby wysłać pliki, uruchom program odbierający na zdalnym końcu. Następnie wpisz ~C sz pliki aby wysłać je do zdalnego systemu. Tłumaczenie: paolo.
Ten rozdział pokaże Ci niektóre z dróg którymi FreeBSD kożysta z portów szeregowych.
#stty -a -f /dev/ttyd1
#stty -f /dev/ttyid5 clocal cs8 ixon ixoff
Oczywiście nadal będziesz mógł zmieniać te wartości z lini poleceń.
#stty -f /dev/ttyld5 57600
signal pin pin signal
TxD 2 połączony z 3 RxD
RxD 3 połączony z 2 TxD
DTR 20 połączony z 6 DSR
DSR 6 połączony z 20 DTR
SG 7 połączony z 7 SG
DCD 8 połączony z 4 RTS
RTS 4 połączony z 5 CTS
CTS 5 połączony z 8 DCD
Nota. Dla DCD do RTS, połącz piny 4 i 5 wewnętrznie w
gniazdku, i dopiero z pinem 8-smym po 2-giej stronie.
ttyd1 "/usr/libexec/getty std.9600" unknown off secure
ttyd5
ttyd1 "/usr/libexec/getty std.38400" unknown off secure
ttyd5 "/usr/libexec/getty std.19200"
ttyd1 "/usr/libexec/getty std.38400" wy50 off secure
ttyd5 "/usr/libexec/getty std.19200" vt100
ttyd1 "/usr/libexec/getty std.38400" wy50 on secure
ttyd5 "/usr/libexec/getty std.19200" vt100 on
ttyd1 "/usr/libexec/getty std.38400" wy50 on insecure
# Kuchnia
ttyd5 "/usr/libexec/getty std.19200" vt100 on insecure
# Gościnna Łazienka
#kill -HUP 1
#ps -axww|grep getty
22189 d1 Is+ 0:00.03 /usr/libexec/getty std.38400 ttyd1
bps
Bits per Second -- prędkość z jaką dane są przesyłane
(bitów na sekundę)
DTE
Data Terminal Equipment -- dla przykładu Twój
komputer
DCE
Data Communications Equipment -- Twój modem
RS-232
Standard agencji EIA dla komunikacji z portami
szeregowymi dla hardwar'u
- Transmitted Data (SD)
- Recived Data (RD)
- Request to Send (RTS)
- Clear to Send (CTS)
- Data Set Ready (DSR)
- Data Terminal Ready (DTR)
- Carrier Detect (CD)
- Signal Ground (SG)
4850 ?? I 0:00:09 /usr/libexec/getty V19200 ttyd0
#/sbin/dmesg | grep 'sio'
sio0 at 0x3f8-0x3ff irq 4 on isa
sio0: type 16550A
sio1 at 0x2fe-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
device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr
device sio1 at isa? port "IO_COM2" tty irq 3 vector siointr
device sio2 at isa? port "IO_COM3" tty irq 5 vector siointr
device sio3 at isa? port "IO_COM4" tty irq 9 vector siointr
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
#
# Fast dialup terminals, 2400/1200/300 rotary
# (can start either way)
D2400|d2400|Fast-Dial-2400:\
:nx=D2400:tc=2400-baud:
3|D1200|Fast-Dial-1200:\
:nx=D300:tc=1200-baud:
5|D300|Fast-Dial-300:\
:nx=D2400:tc=300-baud:
#
# Additioooons 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:
um|V19200|High Speed Modem at 19200,8-bit:\
:nx=V9600:tc=std.19200:
#
# Additions for V.32bis or V.34 Modem
# Starting at 57.6 Kbps
#
vm|VH300|Very High Speed Modem at 300,8bit:\
:nx=VH57600:tc=std.300:
vn|VH1200|Very High Speed Modem at 1200,8bit:\
:nx=VH300:tc=std.1200:
vo|VH2400|Very High Speed Modem at 2400,8bit:\
:nx=VH1200:tc=std.2400:
vp|VH9600|Very High Speed Modem at 9600,8bit:\
:nx=VH2400:tc=std.9600:
vq|VH57600|Very High Speed Modem at 57600,8bit:\
:nx=VH9600:tc=std.57600:
ttyd0 "/usr/libexec/getty xxx" dialup on
# kill -HUP 1
ttyd0 "/usr/libexec/getty std.19200" dialup on
ttyd0 "/usr/libexec/gettty V19200" dialup on
#!/bin/sh
#
# Serial port initial configuration
stty -f /dev/ttyid1 crtscts
stty -f /dev/cuai01 crtscts
# Set serial ports to use RTS/CTS flow control
stty -f /dev/ttyd0 crtscts
stty -f /dev/ttyd1 crtscts
stty -f /dev/ttyd2 crtscts
stty -f /dev/ttyd3 crtscts
ATZ
AT&C1&D2&H1&I0&R2&W
- Przełącznik 1: Góra - DTR Normal
- Przełącznik 2: Nieważny (Verbal Result Codes/Numeric
Result Codes)
- Przełącznik 3: Góra - Suppress Result Codes
- Przełącznik 4: Dół - Bez echo, offline commands
- Przełącznik 5: Góra - Auto Answer
- Przełącznik 6: Góra - Carrier Detect Normal
- Przełącznik 7: Góra - Załaduj standardowy NVRAM
- Przełącznik 8: Nieważny (Smart Mode/Dumb Mode)
ATZ
AT&B1&W
ATZ
AT&B2&W
114 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd0
115 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd1
114 d0 I 0:00.10 /usr/libexec/getty V19200 ttyd0
za dużą ilość dobrych sugestii
# chmod 4511 /usr/bin/tip
Zrób to co jest nazwane ``direct'' w twoim pliku /etc/remote. Dla przykładu jeżeli twój modem podpięty jest do pierwszego portu komunikacyjnego, /dev/cuaa0, umieść w lini:
cuaa0:dv=/dev/cuaa0:br#19200:pa=none
# cd /dev
# MAKEDEV cuaa0
# cu -lline -sspeed
pn=\@
tip115200|Dial any phone number at 115200 bps:\
:dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du:
tip57600|Dial any phone number at 57600 bps:\
:dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:
# tip -115200 5551234
cu115200|Use cu to dial any number at 115200bps:\
:dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:
# cu 5551234 -s 115200
pain|pain.deep13.com|Forrester's machine:\
:cm=CONNECT pain\n:tc=deep13:
muffin|muffin.deep13.com|Frank's machine:\
:cm=CONNECT muffin\n:tc=deep13:
deep13:Gizmonics Institute terminal server:\
:dv=/dev/cuaa2:br#38400:at=hayes:du:pa=none:pn=5551234:
big-university:\
:pn=\@:tc=dialout
dialout:\
:dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:
big-university 5551111
big-university 5551112
big-university 5551113
big-university 5551114
force=
force=^^
raisechar=^^
~p lokalny-plik [zdalny-plik]
~t zdalny-plik [lokalny-plik]
Id: Aleksander Fafuła 2004-02-16
mlodszy, pt., 18/07/2008 - 22:18
