Następna strona Poprzednia strona Spis treści

10. Połączenie PLIP między DOS-em a Linux-em

Po pierwszym wydaniu tego mini-HOWTO wiele ludzi pisało z prośbą o inforamcję o połączeniu pomiędzy Dos-em a Linux-em. To doprowadziło mnie do dodania tego paragrafu.

Ten fragment pochodzi z artykułu James'a McDuffie'go mcduffie@scsn.net, który znalazłem w Linux Gazette. Traktuje on o szybkiej instalacji polączenia PLIP między Linuxem i DOS-em przy użyciu Windows i Trumpet Winsock i podaje adreswspaniałego programu umożliwiającego uruchamianie programów pracujących pod X-Windows na MS-Windows.

Następna sekcja jest dodatkiem przysłanym przez James'a Vahn'a jvahn@short.circuit.com, gdzie opisuje on jak zestawić połączenie i jak rozwiązać niektóre problemy.

Zakładam, że już zestawiłeś poprawnie połączenie PLIP po stronie Linuxa i masz odpowiedni kabel. W przeciwnym razie powróc do poprzednich paragrafów.

Teraz po stronie DOS-a potrzebujesz po pierwsze potrzebujesz sterownika pakietów. Możesz go znaleźć tutaj: ftp.crynwr.com/drivers/plip.zip

Program pracuje po DOS-em jako standardowy sterownik pakietów Ethernet. Jeśli chcesz używać PLIP z Windows potrzebujesz także Trumpet Winsock. Jest to interfejs TCP/IP. Możesz znaleźć też takie oprogramowanie pod DOS-a.

Powróćmy teraz do komputera z Linuxem i dodajmy na nim adres komputera pracującego pod DOS do /etc/hosts. Jeśli Twój DOS-owy komputer nie ma zarejestrowanego adresu IP, możesz wybrać jakikolwiek adres (pamiętaj o zarezerwowanych adresach podanych w paragrafie 3).

Teraz załóżmy, że wybrałeś nazwę linux dla komputera pracującego pod Linux i dos dla komputera DOS-owego. Musisz napisać:

ifconfig plip1 linux pointopoint arp up route add dos

Oczywiście jeśli chcesz to zautomatyzować dodaj następujące polecenia do /etc/rc.d/rc.inet1:

/sbin/ifconfig plip1 linux pointopoint arp up /sbin/routte add dos

To ustanawia interfejs i dołącza do niego rutowanie. Oczywiście, jeżeli używasz drugiego portu równoległego musisz jako interfejs wpisać plip2 zamiast plip1.

Wróć do komputera z DOS/Windows i edytuj autoexec.bat. Musisz dodać następujące linie:

c:\plip\plip.com 0x60
c:\tcpip\winsock\winpkt.com 0x60

Oczywiście, zakładam, że umieściłeś plik plip.com w katalogu c:\plip a plik winpkt.com w c:\tcpip, w przeciwnym razie powinieneś dodać odpowiednie ścieżki dostępu.

To ustawiam program plip.com na wektorze pakietów 0x60 i ładuje winpkt.com na tym samym wektorze. Jeśli używasz innego portu niż lpt1 to będziesz musiał dodać numer przerwania i adres i/o jako parametry przy wywołaniu plip.com. Teraz przejdziemy do konfiguracji Trumpet Winsock. Musisz wyłączyć obsługę SLIP i PPP i wpisać 60 do okienka zatytułowanego Packet vector. Następnie wpisz adres IP komputera, jako domyślną bramkę adres IP komputera Linux-owego oraz adres serwera nazw, którym może być Twój komputer lub komputer u twojego dostawcy internetowego. Zamknij setup i zrestartuj Winsock, a wszystko powinno już działać. Umieść Winsock w grupie startup i masz wszystko zautomatyzowane.

Jeśli chcesz korzystać z Internetu pod Windows poprzez komputer Linux-owy, musisz ustawić IP Masquerading. Więcej informacji zobaczysz w NET-3-HOWTO.

Znalazłem także program, który pozwala uruchamiać programy X-Windows pod Windows! Możesz go znaleźć pod adresem www.tucows.com

Skonfiguruj go zgodnie z zaleceniami i zatelnetuj się z komputera pracującego pod Windows i ustaw zmienną DISPLAY na ten komputer (na przykład DISPLAY=duncan:0.0) i uruchom żądany program. Nie ma nic lepszego jak uruchamianie xv pod Windows!

10.1 Doświadczenia z połąćzeniem PLIP między DOS-em a Linux-em.

UWAGA: Otrzymałem ten domkument od James'a Vahn'a jvahn@short.circuit.com i umieściłem go tutaj w niezmienionej postaci. Oznacza to, że wszelkie pytania należy kierować do niego, a nie do mnie. Jego doświadczenia z połączeniem PLIP z komputerem z DOS-em wyposażonym tylko w stacje dysków elastycznych są doskonałym przykładem na to jak poradzić sobie z różnymi problemami.

Ostatnia aktualizacja: 11/07/1996

Mój komputer wyposażony jedynie w stację dysków elastycznych pracujący pod DOS-em jest połączony z komputerem Linuxowym. Pierwszy port na komputerze z Linuxem jest wykorzystywany przez drukarkę. Oba komputery są stale podłączone i telnetuję się z komputera DOS-owego na Linux-owy. To moje uwagi i spostrzeżenia.

Kiedy jądro wykrywa ilość portów równoległych w komputerze i uruchamia wszystkie z nich, chyba, że wykluczysz niektóre z nich z przeszukiwania. Jedną z metod jest ładowanie sterowników jako modułów.

gniibe@mri.co.jp napisał:

===========================
Cały czas polecam używanie PLIP/LP jako modułów z tego względu, że:

Mając zainstalowaną w modułach obsługę PLIP i LP, możesz podać, który port jest używany przez PLIP, a który przez LP. Oto przykład:

     # insmod lp.o io=0x378
     # insmod plip.o io=0x278 irq=2

Możesz nawet używać obu portów równoległych:

     # insmod plip.o io=0x278,0x3bc irq=2,5

W powyższym przykładzie, plip0 jest przydzielony adres 0x278, a numer przerwania to 2, plip1 jest przydzielony adres 0x3bc, a numer przerwania to 5.

============================

Używanie modułów jest chyba najlepszym rozwiązaniem. Kolejna metoda pokazuje jak zmienić kod źródłowy jądra, aby umożliwić jednoczesne działanie PLIP i LP na różnych portach bez użycia modułów. Jeśli nie jesteś na ty z modułami, ten sposób może być szybszy w realizacji.

Będziesz musiał zmodyfikować dwa pliki źródłowe jądra. Ja używam jądra 1.2.13 i wniosłem kilka poprawek do ../linux/drivers/net/Space.c. Spójrz na fragment około 205 lini, gdzie znajdują się definicje PLIP i upewnij się, czy porty i numery przerwań odpowiadają Twoim. Sprawdź także jakim driverom one odpowiadają (plip0, plip1, plip2). W moim przypadku port 0x278 używa przerwania 5 (zworki na karcie są tak ustawione), ale Space.c definiuje go tak aby używał przerwania 2. Wolałem dokonać zmian w tym miejscu niż otwierać obudowę i przestawiać zworki. Alternatywą jest ustawienie przerwania później jako parametr ifconfig, ale jądro będzie startowało ze złym numerem przerwania dla PLIP, a to może być dla Ciebie dokuczliwe. Zmiana jest niewielka.

Następny, trudniejszy krok to: W pliku ../drivers/char/lp.c znajdziesz taki fragment w okolicach 38 lini:


struct lp_struct lp_table[] = {
    { 0x3bc, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, },
    { 0x378, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, 
/*  { 0x278, 0, 0, LP_INIT_CHAR, LP_INIT_TIME, LP_INIT_WAIT, NULL, NULL, }, 
 * 0x278 reserved for plip1
 *
 * }; 
 * #define LP_NO 3 
 */
}; 
#define LP_NO 2 

Zauważ zmiany: jeden port jest zakomentowany, więc tylko dwa porty są zdefiniowane. Port 0x3bc nie będzie prawdopodobnie pracował dla PLIP, ponieważ przerwanie dla tego portu jest wadliwe. Zostało to zauważone na przykładzie starych adapterów monochromatycznych MDA.

Wykonałeś kopie zapasowe przed modyfikacjami, prawda? Teraz skompiluj nowe jądro z obsługą drukarki, sieci, fikcyjnego interfejsu oraz plip.

Skonfiguruj system. To jest mój plik /etc/rc.d/rd.inet1:

#!/bin/bash
#
/sbin/ifconfig lo 127.0.0.1
/sbin/route add -net 127.0.0.0

/sbin/ifconfig dummy 200.0.0.1
/sbin/route add -net 200.0.0.0 netmask 255.255.255.0
/sbin/ifconfig plip1 arp 200.0.0.1 pointopoint 200.0.0.2 up
/sbin/route add 200.0.0.2
/sbin/ifconfig dummy down

Zauważ, że arp jest używany przy połączeniach Linux-DOS. Nie jest używany przy połączeniach Linu-Linux.

Do pliku /etc/hosts możesz dodać:

200.0.0.1       console1
200.0.0.2       console2

Komputer z DOS-em nazywa się console2. Zwróc uwagę na ostrzeżenia Andre'a dotyczące tych adresów. Lepiej używać oficjalne schematy adresowania.

Przeładuj system, aby zmiany zadziałały. Podczas startu powinieneś zobaczyć następującą sekwencję:

lp0 at 0x03bc, using polling driver
lp1 at 0x0378, using polling driver
[....]
NET3 PLIP version 2.0 gniibe@mri.co.jp
plip1: Parallel port at 0x278, using assigned IRQ 5.

Komenda route powinna pokazać coś takiego:

Kernel routing table
Destination     Gateway         Genmask         Flags MSS    Window Use Iface
console2        *               255.255.255.255 UH    1436   0      136 plip1
loopback        *               255.0.0.0       U     1936   0      109 lo

a ifconfig plip1 powinien pokazać:

plip1     Link encap:10Mbps Ethernet  HWaddr FC:FC:C8:00:00:01
          inet addr:200.0.0.1  P-t-P:200.0.0.2  Mask:255.255.255.0
          UP POINTOPOINT RUNNING  MTU:1500  Metric:1
          RX packets:132 errors:0 dropped:0 overruns:0
          TX packets:136 errors:0 dropped:0 overruns:0
          Interrupt:5 Base address:0x278 

Spójrz na /etc/inetd.conf i zobacz, czy telnet jest odkomentowany. Możesz przeczytać podręcznik systemowy "man" dla tcpd, oraz o używaniu /etc/hosts.allow (ALL: LOCAL) i /etc/hosts.deny (ALL: ALL). Powinieneś mieć także możliwość wykonania "telnet localhost"

Teraz strona DOS-a. Jeszcze raz, bądź nieufny w stosunku do portu 0x3bc jeśli taki u Ciebie istnieje.

Ja używam programu telnet dostarczanego przez NCSA i sterownik PLIP dostarczany przez Crynwr. To wszystko możesz znaleźć na następujących serwerach:

ftp.ncsa.uiuc.edu/Telnet/DOS/ncsa/tel2308b.zip ftp.crynwr.com/drivers/plip.zip

Upewnij się, czy używasz wersji 2.3.08 klienta telnetu i wersji 11.1 sterownika PLIP. Znajdź i przeczytaj SUPPORT.DOC.

PLik CONFIG.TEL. Większość tego pliku pozostaje nie zmieniona. Aby zaoszczędzić miejsce wyciąłem linie, które pozostawiłem niezmienione. Drugi port na tym komputerze jest ustawiony jako 0x278 na 5 przerwaniu.

myip=200.0.0.2 
netmask=255.255.255.0       # subnetting mask
hardware=packet             # network adapter board (packet driver interface)
interrupt=5                 # IRQ which adapter is set to
ioaddr=60                   # software interrupt vector driver is using
#
#[...lots unchanged...]
#
# at the end of the file, put this line:
name=console1 ; hostip=200.0.0.1 ; nameserver=1 ; gateway=1 

(console1 jest nazwą komputera z Linuxem, możesz użyć jakiejkolwiek nazwy).

Złożyłem kabel długości 12 stóp łączący oba komputery. Standardowy 11-kontaktowy kabel drukarkowy powinien także pracować. Plik plip.c pokazuje schemat połączenia. Mimo, że mój kabel posiada połączenie 17-17, myślę, że nie jest on do niczego używany i nie było go na gotowym (kupionym) kablu.

@echo off
plip.com 0x60 5 0x278
telbin -s console1

Te komendy powinny Cię połączyć z komputerem Linux-owym na /dev/ttyp. Klient telnetu NCSA posiada 8 wirtualnych ekranów, a także może działać jako serwer ftp. Interfejs PLIP umożliwia dobrą przpustowość. Osiągam prędkości rzędu 6.5K/s na moich antykach. Mam nadzieję, że będziesz miał większe osiągi. :-)


Następna strona Poprzednia strona Spis treści