# LINUX PLIP MINI-HOWTO

## Autor: Andrea Controzzi controzz@cli.di.unipi.it
22 lipca 1996
Wersja polska: Bartek Papierski bartekp@dom.vr.pl

v1.0, 10 września 1997

Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem: ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO

Ten dokument HOWTO pozwoli Ci szczęśliwie zbudować i używać protokołu interfejsu równoległego (PLIP).

Wszelkie pytania, poprawki, komentarze lub sugestie proszę przesyłać na mój adres E-Mail: controzz@cli.di.unipi.it Pisz do mnie kiedy tylko potrzebujesz pomocy. Czasami nie będę mógł od razu odpowiedzieć, ale na pewno odpowiem. Jeśli się zdarzy, że nie dostaniesz odpowiedzi po dwóch tygodniach, to znaczy, że nasz system jest w kłopotach. Nie wahaj się wtedy napisać ponownie. Moim obowiązkiem jest dać Ci odpowiedź.

Po pierwsze, wiele technicznych informacji pochodzi z net-3-HOWTO autorstwa Terry'ego Dawson'a. To mini-HOWTO w żadnym stopniu nie pokrywa tamtego dokumentu. Moim celem jest pokazanie jak szybko zainstalować stałe połączenie PLIP, *TYLKO* to. Wszelkie pozostałe informacje pochodzą z moich własnych doświadczen i pomocy wielu użytkowników, którzy przesyłali mi komentarze i informacje.

Przeczytaj net-3-HOWTO i inne dokumenty dla generalnej wiedzy o sieciach i plikach konfiguracyjnych, które będę sugerował do zmian.

Poniżej jest spis treści. Możesz szybko odnaleźć paragraf szukając ciągu znaków nn, gdzie nn jest numerem paragrafu.

## 1. Wstęp: Co to jest PLIP i dlaczego powinienem go używać?

Jest wiele dróg prowadzących do utworzenia połączenia pomiędzy kilkoma hostami. PLIP, podobnie jak SLIP pozwala na lokalne połączenia pomiędzy dwoma maszynami poprzez porty równoległe.

Połączenie PLIP jest bardzo podobne do SLIP (z kablem dzierżawionym), ale używa portów równoległych zamiast szeregowych. Port równoległy przesyła więcej niż jeden bit na raz. To oznacza, że jest możliwe osiągnięcie większych prędkości niż przy użyciu interfejsu szeregowego.

Interfejs PLIP jest wystarczająco szybki, aby umożliwić takie funkcje funkcje tcp/ip jak NFS na satysfakcjonującym poziomie. Możesz więc mieć swój komputer z Linuxem oraz inny komputer z minimalnym systemem, gdzie możesz montować całą resztę z głównej maszyny.

Wadą jest to, że większość użutkowników ma tylko jeden port równoległy. Znaczy to, że nie będziesz mógł jednocześnie drukować i korzystać z PLIP. Do tej pory nawet posiadając dwa lub nawet trzy porty równoległe nie mogłeś używać drukarki i PLIP naraz. Rozwiązaniem było użycie modułów lub innych tricków.

Ta wada może być wyeliminowana poprzez zastosowanie wstawki do jądra systemowego. Proszę zobaczyć paragraf Wstawki umożliwiające jednoczesne działanie PLIP i LP.

W końcu mogę Ci podać sposób na ustawienie połączenia PLIP pomiędzy DOS a Linuxem.

## 2. Wymagania sprzętowe

Sprzętem wymaganym do zestawienia połączenia PLIP są dwa wolne porty (po jednym w każdej maszynie) i kabel.

Teraz trochę o kablu. To jest fragment pliku `plip.c` z źródeł kernela 1.2.13:

Kabel używany do połączeń jest de facto standardowym standardowym kablem równoległym typu 'null cable'. Jeśli chcesz go wykonać sam, będziesz potrzebował 12-żyłowy kabel. Połączenia wyglądają następująco:

        SLCTIN      17 - 17
        GROUND      25 - 25
        D0->ERROR   2 - 15        15 - 2
        D1->SLCT    3 - 13        13 - 3
        D2->PAPOUT  4 - 12        12 - 4
        D3->ACK     5 - 10        10 - 5
        D4->BUSY    6 - 11        11 - 6
    Nie łącz pozostałych wtyków. Są to:
        D5,D6,D7 są 7,8,9
        STROBE jest 1, FEED jest 14, INIT jest 16
        ekstra uziemnienia to 18,19,20,21,22,23,24

Radzę Ci przeczytać `/usr/src/linux/drivers/net/README1.PLIP` aby dowiedzieć się więcej o kablu.

Według mnie powinieneś unikać budowania swego własnego kabla. Własnoręcznie wykonany kabel może zaoszczędzić niewiele pieniędzy, ale może spowodować wiele bólów głowy. Jeśli chcesz zbudować swój własny kabel, pamiętaj, że robisz to na swoją odpowiedzialność. Napisałem to co zostało umieszczone w `plip.c` ale nie daję żadnej gwarancji.

Ostatnie słowo o długości kabla. Długie kable (więcej niż 3 metry) mogą powodować problemy związane z zakłóceniami radiowymi. Jeśli potrzebujesz długi kabel to powinieneś użyć dobrze ekranowanych kabli. Bardzo długie kable nie są zalecane. Myślę, że maksymalną długością jest 15 metrów.

Kiedyś ktoś napisał mi, że używa 30 metrowego kabla. Jednak jeśli ktoś chce próbować połączeń PLIP między biurem a domem (200 metrów) i ma do wydania pieniądze to proszę spróbować. W najgorszym wypadku to nie będzie pracować.

## 3. Rekonfiguracja jądra systemowego

Powinieneś już wiedzieć jak konfigurować i kompilować jądro. W przeciwnym razie radzę pozytać dokumentację (Kernel-HOWTO lub inne). Dziękuję za wspaniałą pracę wykonaną przez guru od jądra. Kompilacja jądra jest teraz o wiele łatwiejsza. Poniżej możesz zobaczyć co masz do zrobienia:

UWAGA:Zakładam, że używasz serii 2.0.xx jądra.

Będę też zakładał, że do konfiguracji używasz polecenia `menuconfig`, ale inne narzędzia też są dozwolone. Pokażę Ci jak to zrobić używając `menuconfig`:

> `

>        #make menuconfig

> `

Mocno polecam aby wybrać:

         Loadable module support  --->

i zaznaczyć:

             [*] Enable loadable module support

I jeśli to możliwe (jęsli masz modules.2.0.0):

             [*] Kernel daemon support (e.g. autoload of modules)

Potem powróć i wybierz:

           Networking options  --->

gdzie powinieneś zaznaczyć przynajmniej to:

             [*] Network firewalls
             [*] TCP/IP networking
             [*] IP: forwarding/gatewaying

potem powróc i wybierz:

             [*] Network device support
             <M> PLIP (parallel port) support

Jeśli używasz modułów to radzę Ci ustawić PLIP jako moduł. Jeśli to zrobisz i chcesz jeszcze używać drukarkę to powędruj do:

           Character devices  --->

i ustaw jako moduł

             <M> Parallel printer suppport

Teraz umożliwiłeś wspomaganie przez jądro dla PLIP. Jeśli będziesz teraz po raz pierwszy kompilował jądro to spójrz na inne opcje i opuść program konfiguracyjny.

W końcu dokonaj kompilacji:

> `

>        #make dep;   make clean
>        #make zlilo

> `

oraz jeśli używasz modułów:

> `

>        #make modules
>        #make modules_install

> `

## 4. Ustawianie plików konfiguracyjnych

Po pierwsze pamiętaj aby zrobić kopię bezpieczeństwa wszystkich plików, które będziesz zmieniał,

> `

>        #cp rc.inet1 rc.inet1.BACKUP

> `

może być dobrym rozwiązaniem.

Jeśli jeszcze tego nie zrobiłeś to musisz wybrać adres IP dwóch maszyn. W moich przykładach będę używał kilka przykładowych IP, które ty wpiszesz w standardowym formacie xxx.xxx.xxx.xxx

W `/etc/rc.d/inet1.rc` na obydwu maszynach dodaj to (lepiej w końcowej części pliku):

`/sbin/route add -net ${NETWORK} netmask ${NETMASK}`

gdzie `NETWORK` i `NETMASK` powinny być ustawione wcześniej. Jeśli nie wiesz jak to zrobić, proszę przeczytaj NET-2-HOWTO.

Możesz bezpiecznie pominąć te zmienne tylko w tych przypadkach:

Jeśli jedynie chcesz połączyć dwa komputery w autonomicznej sieci to możesz wybrać dowolne adresy IP, powiedzmy 200.0.0.1 i odpowiednio 200.0.0.2. W tym przypadku ustawiasz `NETWORK="200.0.0.0"` i `NETMASK="255.255.255.0"`. To są przykłady jakich będę używał w paragrafie Szybka instalacja PLIP (zobacz poniżej).

UWAGA: 200.0.0.1 i 2 to tylko przykładowe IP. Nie radzę Ci ich używać, bo mogą one być adresami prawdziwych hostów w Internecie!

Radzę wybrać adres z puli adresów zarezerwowanych:

          10.0.0.0         -    10.255.255.255
          172.16.0.0       -    172.31.255.255
          192.168.0.0      -    192.168.255.255

W pliku `/etc/hosts` na obydwu komputerach powinieneś dodać pozycje z adresem IP komputerów, które łączysz przez PLIP. W moim przykładzie, pozycjami tego pliku są:

> `

>     200.0.0.1       one             #to jest adres pierwszego komputera
>     200.0.0.2       two             #to jest adres drugiego komputera

> `

Gdzie `one` i `two` to nazwy, które wybrałeś dla tych dwóch hostów.

Jeśli chcesz aktywować NFS, to poza zaznaczeniem odpowiednich pól w konfiguracji jądra, musisz dodać w pliku `/etc/exports` pozycje opisujące katalogi, które chcesz udostępniać. W moim przykładzie, aby możliwe było zamontowanie katalogu `/usr` powinieneś dodać:

> `

>      /usr                           two (ro)

> `

## 5. Aktywacja połączenia PLIP

Wreszcie, oto komendy, które muszą być wykonane z prawami root'a, które aktywują interfejs PLIP (oczywiście wcześniej musi być poprawnie podłączony kabel).

Po pierwsze należy potwierdzić, że urządzenie lp nie jest aktywne:

> `

>        #cat /proc/devices

> `

Nie może się pojawić następująca rzecz:

> `6 lp`

Ponownie używam nazw `one` i `two` jako przykład. Na `"one"` musisz wydać polecenie:

> `

>        #ifconfig plip1 one pointopoint two up

> `

Sprawdź czy to pracuje...

> `

>        #ifconfig

>      .....
>      .....
>      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 NOARP  MTU:1500  Metric:1
>                RX packets:0 errors:0 dropped:0 overruns:0
>                TX packets:0 errors:0 dropped:0 overruns:0
>                Interrupt:7 Base address:0x378

> `

UWAGA: jeśli używasz modułów bez demona `kerneld`, który automatycznie ładuje odpowiedni moduł na żądanie, to pamiętaj o:

> `

>        #insmod plip

> `

przed wydaniem polecenia `ifconfig`. Jeśli jesteś paranoikiem, sprawdź, czy moduł został załadowany używając polecenia:

> `

>        #lsmod

>     Module:       #pages:    Used by:
>     plip              3              0

> `

Dodaj routing do `two`:

> `

>        #route add two

> `

I jeżeli chcesz NFS dla drugiego:

> `

>        #rpc.portmap
>        #rpc.mountd
>        #rpc.nfsd

> `

Na komputerze `"two"` komendy wyglądają tak samo, tylko że musisz wpisać `one` zamiast `two`.

Jeden z Twoich komputerów będzie miał prawdopodobnie tylko połączenie typu PLIP. Jeśli to prawda, możesz także wydać polecenie:

> `

>        #route add default gw one

> `

na tym komputerze. W moim poniższym przykładzie, `two` jest laptopem, który jako jedyne używa połączenia PLIP z `one`, więc wydałem powyższe polecenie na komputerze `two`.

Wreszcie przetestuj połączenie za pomocą

> `

>        #ping two

> `

z `one` oraz

> `

>        #ping one

> `

z `two` i zobacz czy wszystko pracuje.

Oczywiście komendy te mogą być wykonywane automatycznie przez skrypt lub podczas startu systemu. Musisz jedynie napisać skrypt, który wykonywałby te komendy. Możesz je wywołać z prawami root-a lub możesz dodać komendę do skryptu `/etc/rc.d/rc.inet2` który jest uruchamiany podczas startu. Jeśli chcesz używać mojej Szybkiej Instalacji PLIP, znajdziesz tam wszystkie pliki konfiguracyjne i skrypty.

## 6. Komunikaty jądra podczas startu

Po skonfigurowaniu i kompilacji jądra systemowego z obsługą PLIP, zbadaj komunikaty za pomocą komendy `dmesg (8)`.

Powinieneś zobaczyć coś takiego:

> `

>     NET3 PLIP version 2.0 gniibe@mri.co.jp
>     plip1: Parallel port at 0x378, using assigned IRQ 7.

> `

Oczywiście, jeżeli używasz modułów to ujrzysz ten komunikat kiedy zostanie zainstalowany moduł `plip.c` (`#insmod plip.c`) (przez Ciebie lub przez `kerneld`). W zależności od konfiguracji `klogd` i `syslogd` komunikaty plip-a mogą być rejestrowane w logach systemowych. Nie wpadaj w panikę jeżeli nie ujrzysz tych komunikatów. Jeśli `lsmod` pokazuje, że moduł jest załadowany to w zupełności wystarczy.

## 7. Często Zadawane Pytania

Ten paragraf (mam nadzieję) rozwiążę Twoje problemy. Jeśli masz inne pytania, zawsze możesz do mnie napisać.

1. Q: Otrzymuję następujące komunikaty podczas startu systemu:

   > `

   >        SIOCSIFADDR: No such device
   >        SIOCADDR: Network is unreachable

   > `

   a kiedy próbuję zestawić połączenie jak to zostało opisane powyżej, otrzymuję ponownie komunikaty o błędach:

   > `

   >        SIOCSIFADDR: No such device
   >        SIOCSIDDSTADDR: No such device
   >        SIOCADDRT: Network is unreachable
   >        mount clntudp_create: RPC: Port Mapper failure - RPC: Unable to send

   > `

          A: Jądro z różnych przyczyn nie obsługuje PLIP. Przyczyną może być:

   > - Nie zaznaczyłeś obsługi PLIP podczas konfiguracji jądra.
   > - Zaznaczyłeś obsługę drukarki podczas konfiguracji jądra.
   > - Skompilowałeś PLIP jako moduł i go nie załadowałeś.

2. Q: Czy istnieje możliwość ogsługi PLIP i LP jednocześnie, wykluczając użycie modułów, na przykład przy dwóch portach równoległych? A: Tak. Są na to dwa sposoby opisane w paragrafie Wstawki umożliwiające jednoczesne działanie PLIP i LP:

   > - Możesz założyć wstawkę aby umożliwić jednoczesne działanie PLIP i LP.
   > - Możesz założyć inną wstawkę do jądra aby obsługiwało ono PLIP i LP na osobnych portach.

3. Q: Napisałem skrypt, który łączy oba moje komputery. Zestawiłem połączenie automatycznie w `rc.inet2`, gdzie wywołuję skrypt uruchamiający łącze i uruchamiający VFS. Mój komputer `two` montuje zasoby komputera`one`. Dodałem pozycje do `/etc/fstab` na komputerze `two`. Jeśli uruchamiam `two` gdy `one` jest wyłączony, `two` zawiesza się na kilka minut w momencie `"mounting remote file systems..."`.

       A: Tak się dzieje, ponieważ two czeka aby zamontować zasoby
       one, lecz jeśli one jest wyłączony to musisz poczekać aż two znudzi się
       czekaniem. Aby tego uniknąć, możesz:

   > - Zakomentować w `rc.inet2` komendę, za pomocą której montowane są zdalne systemy plików.
   > - Wyrzucić wpisy w `/etc/fstab` na `two` i podmontować zdalny system plików ręcznie jeśli będziesz tego potrzebował.

4. Q: Połączenie jest zestawione, ale ping zawodzi. Otrzymuję takie komunikaty od jądra:

   > `plip1: timed out (1, 89)`

       A: To oznacza, że twoja strona połączenia pracuje, twój komputer wysyła
       sygnał, ale druga strona nie odpowiada z następujących powodów:

   > - Kabel nie jest odpowiednio podłączony lub jest popsuty.
   > - Druga strona nie ma uruchomionego PLIP.
   > - Jesteś połączony z laptopem, który nie ma odpowiedniego portu równoległego, zobacz następne pytanie.

5. Q: Zainstalowałem PLIP, lecz jeśli używam `ping` to otrzymuję 100% strat w pakietach. Łączę mój komputer biurkowy z notebookiem.

       A: Niektóre porty równoległe w notebookach nie są odpowiednie do
       połączeń typu PLIP, ponieważ są tylko portami drukarkowymi. Mogą tylko
       wysyłać dane. Niemożliwy jest ich odbiór. Niestety nie wiem co sprawić,
       aby one pracowały. Jedyną nadzieją jest:

   > - Popatrz na setup w swoim notebook-u. Może jest tam jakiś sposób konfigurowania portu równoległego jako port równoległy, a nie jako port drukarki.
   > - Spróbuj plip w trybie 0. Niestety, nie wiem jak to zrobić i czy jest to możliwe w najnowszych wersjach jądra.

6. Q: Jakie prędkości mogę osiągnąć używając PLIP?

       A: To jest trudne pytanie, ponieważ jest wiele czynników wpływających
       na wydajność takiego połączenia:

   > - Typ procesora na obydwu komputerach.
   > - Typ portu równoległego i jego konfiguracja.
   > - Obciążenie systemu.
   > - Do czego używasz PLIP.
   > Dla przykładu mogę podać, że powinieneś osiągnąć około 40Kb/sek, o wiele szybciej niż dla połączeń szeregowych i porównywalnie ze słabymi kartami ethernet.

7. Q: Czy coś się stanie, kiedy bedę wiele razy kładł `ifconfig down` i zetawiał `ifconfig up` połączenie na interfejsie plip1?

       A: Wygląda na to, że będziesz musiał dodać <tt/-arp/ do komendy
       <tt/ifconfig/, za wyjątkiem pierwszego razu podczas startu systemu.
       Ja tego nie potrzebuje, ale ktoś może.

8. Q: Przeglądałem zarezerwowane adresy IP i podane przez Ciebie adresy 200.0.0.1 i 200.0.0.2 nie należą do nich. Czy nie powinny one być zmienione?

       A: Tak, powinny. Tak jak podkreśliłem na początku, wybrałem te
       adresy tylko ze względu na ich prostotę. Możesz je dowolnie zmieniać. Oto
       wycinek z net-3-howto:

   > `

   >     RFC1597 zarezerwował kilka adresów IP dla prywatnych sieci. Powinieneś
   >     ich używać, gdyż nie powodują nieprzyjemnych zdarzeń gdy przypadkowo
   >     połączysz się z Internet. Zarezerwowane adresy to:

   >           10.0.0.0         -    10.255.255.255
   >           172.16.0.0       -    172.31.255.255
   >           192.168.0.0      -    192.168.255.255

   > `

9. Q: Czy jest sposób aby dokładnie dostrić parametry PLIP bez ingerencji w źródła?

       A: Tak! Spróbuj /usr/sbin/plipconfig. Poczytaj podręcznik
       systemowy dotyczący tej komendy.

10. Q: Mam problemy z połączeniem dwóch hostów za pomocą PLIP. Pierwszy ma najnowsze jądro, a drugi wciąż używa starej serii 1.0.x PLIP. Czy to jest moim problemem?

        A: Tak, najlepiej jest używać tej samej wersji PLIP na obu końcach
        połączenia.

11. Q: Obsługa PLIP w niektórych wersjach jądra 1.3.x nie pracuje. Co się dzieje?

        A: Pamiętaj, że jądra o numerach wersji 1.nieparzysty.x są wersjami
        rozwojowymi. "Bogowie", którzy codziennie ciężko pracują nad ulepszaniem
        Linuxa często wypuszczają niestabilne wersje. Teraz wersje 2.0.x powinny
        być stabilne.

## 8. Szybka instalacja PLIP

Przed napisaniem tego mini-HOWTO, stworzyłem zestaw plików potrzebny do szybkiej instalacji PLIP. W kilka minut, nie licząc kompilacji jądra powinieneś zestawić połączenie PLIP. Zarchiwizowane pliki możesz znaleźć na mojej stronie domowej: http://www.cli.di.unipi.it/~controzz/intro.html. Może ktoś w koncu udostępni moje pliki na publicznym serwerze ftp.

## 9. Wstawki umożliwiające jednoczesne dziłanie PLIP i LP

Najlepszą drogą do jednoczesnego dziłania PLIP i LP jest użycie modułów. Możesz załadować moduł plip.o i wyrzucić go kiedy będziesz chciał drukować, lub na odwrót. Jeśli na prawdę potrzebujesz używać PLIP i LP naraz, wypróbuj poniższe wstawki.

## 9.1 PLIP i LP na tym samym porcie

W tej sytuacji możesz spróbować następujących wstawek do jądra.

Musisz zmodyfikować następujące fragmenty kodu, lecz pamiętaj wykonać kopię bezpieczeństwa:

    --- begin ---

    ******** modifications to linux/drivers/char/lp.c ***********************
    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, },
    */
    };
    #define LP_NO 1

    ******** modifications to linux/drivers/net/Space.c ********************
    #if defined(PLIP) || defined(CONFIG_PLIP)
        extern int plip_init(struct device *);
        static struct device plip2_dev = {
            "plip2", 0, 0, 0, 0, 0x278, 2, 0, 0, 0, NEXT_DEV, plip_init, };
        static struct device plip1_dev = {
            "plip1", 0, 0, 0, 0, 0x378, 7, 0, 0, 0, &plip2_dev, plip_init, };
    /*    static struct device plip0_dev = {
            "plip0", 0, 0, 0, 0, 0x3BC, 5, 0, 0, 0, &plip1_dev, plip_init, };
    */
    #   undef NEXT_DEV
    #   define NEXT_DEV     (&plip1_dev)
    #endif  /* PLIP */

    ---end---

Zrzeczenie: Otrzymałem te wstawki i opublikowałem je w niezmienionej postaci. Oznacza to, że używasz ich na własną odpowiedzialność. W najgorszym wypadku, skompilujesz jeszcze raz jądro używając starych plików.

## 9.2 PLIP i LP na osobnych portach

Jeśli masz przynajmniej dwa porty równoległe, możesz wypróbować następujące wstawki, które umożliwią pracę PLIP na jednym porcie, a LP na drugim.

    --- begin ---

    1. Comment out one line in kernel source file, drivers/char/lp.c.

    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, }, */
    };
        3 -> 2

    2. Kernel configuration

        PLIP (parallel port) support (CONFIG_PLIP) [n] y

        Parallel Printer support [y] y

    3. Kernel message at startup

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

    ---end---

Zrzeczenie jak w sekcji 8.1

## 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:

- moduły są elastyczne na zmiany w konfiguracji
- rekompilacja jądra nie jest łatwa dla początkujących
- koegzystencja PLIP i IP jest możliwa jedynie przez moduły

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. :-)

## 11. Pytania? Komentarze? Napisz do mnie.

Jeśli masz jakieś pytania to możesz się ze mną skontaktować pod adresem controzz@cli.di.unipi.it

Wszelkie komentarze, raporty o błędach są mile widziane. Nastepna wersja będzie zawierała dłuższe FAQ, oczywiście jeżeli będziecie przysyłali pytania.

## 12. Gdzie można znaleźć najnowsze wersje tego mini-HOWTO.

Tym mini-HOWTO opiekują się koordynatorzy HOWTO. Jest on wysyłany co miesiąc na grupę news comp.os.linux.answers i możesz go znaleźć w katalogu HOWTO na sunsite i jego mirrorach.

Inną drogą do odnalezienia tego HOWTO (w wersji oryginalnej) jest moja strona domowa: www.cli.di.unipi.it/~controzz/intro.html

## 13. Podziękowania

Wielkie podziękowania dla:

- Rick Lim ricklim@freenet.vancouver.bc.ca za wstawki umożliwiające współdziałanie PLIP i IP.

- Takeshi Okazaki GBA03552@niftyserve.or.jp za wstawki umożliwiające działanie PLIP i LP na dwóch różnych portach równoległych.
- Jim Van Zandt jrv@vanzandt.mv.com za rady dotyczące dydaktycznej części tego HOWTO.
- James Vahn jvahn@short.circuit.com za wspaniały dodatek PLIP pomiędzy DOS-em i Linuxem.
- Do wszystkich, którzy pisali na grupy news artykuły dotyczące PLIP. Lista ludzi, od których otrzymałem szereg informacji i komentarzy byłaby dłuższa od tego mini-HOWTO. Dziękuję Wam wszystkim!

## 14. Prawa autorskie

Prawa autorskie do dokumentów Linux HOWTO posiadają ich autorzy. Dokumenty te mogą być reprodukowane i dystrybuowane w całości lub części, w mediach fizycznych lub elektronicznych, tak długo jak tak notka będzie załączona do dokumentu. Komercyjna dystrybucja jest dozwolona. Jednakże autor chciałby zostać poinformowany o takowej.

Wszystkie tłumaczenia, prace pochodne lub prace zebrane muszą zawierać notę o prawach autorskich. Oznacza to, że nie możesz stworzyć pracy pochodnej z tego dokumentu i obłożyć ją dodatkowymi restrykcjami dotyczącymi dystrybucji. Wyjątki od tej reguły, mogą być rozpatrzone w określonych warunkach. Proszę skontaktować się z koordynatorem HOWTO na adres podany poniżej.

Ogólnie biorąc, chcemy promować i szerzyć te informacje na wiele sposobów. Jednakże chcemy zachować prawa autorskie tych dokumentów i pragniemy być poinformowani o każdym sposobie ich dystrybucji.

Jeśli masz jakieś pytania, skontaktuj się z Greg'iem Hankins'em, koordynatorem HOWTO - gregh@sunsite.unc.edu

## 15. Od tłumacza

Tłumaczenie to chronione jest prawami autorskimi Bartka Papierskiego. Ogólne zasady dystrybucji są takie same jak w oryginalnym dokumencie.

Jeśli znajdziesz w tym dokumencie jakieś rażące Twoje oko błędy ortograficzne, gramatyczne, lub błędy w tłumaczeniu to skontaktuj się ze mną, a ja postaram się to naprawić: bartekp@dom.vr.pl

Najnowszą wersję tego dokumentu możesz znaleźć na oficjalnej stronie tłumaczeniowej http://www.jtz.org.pl. Najnowsze wersje przetłumaczonych przeze mnie dokumentów znajdziesz także na mojej stronie http://www.dom.vr.pl/~bartekp/howto/tlumaczenia.html

Oto zmiany jakie wprowadziłem w tym dokumencie:

- Tytuły NET-2-HOWTO zamieniłem na NET-3-HOWTO. Przez rok autor nie wydał nowszej wersji dokumentu, a przez ten czas powstała nowa wersja wymienionego dokumentu HOWTO.