Next Previous Contents

9. PLIP σύνδεση μεταξύ DOS και Linux

Μετά την πρώτη έκδοση αυτού του mini-HOWTO πολλοί με ρώτησαν πως μπορεί να γίνει σύνδεση μεταξύ Linux και DOS (ή Windows). Το γενικό ενδιαφέρον με ώθησε σε αυτό το κεφάλαιο που ελπίζω να σας βοηθήσει.

Το τμήμα αυτό προέρχεται από ένα άρθρο που βρήκα στη Linux Gazzete του James McDuffie <mcduffie@scsn.net> . Καλύπτει τη βασική εγκατάσταση PLIP σύνδεσης μεταξύ ενός υπολογιστή Linux και ενός DOS, χρησιμοποιώντας Windows και το Trumpet WinSock και δίνει τη διεύθυνση ενός φοβερού προγράμματος που σας επιτρέπει να τρέχετε X-Windows στα Windows.

Το τελευταίο τμήμα είναι προσθήκη από τον James Vahn jvahn@short.circuit.com όπου περιγράφει σε βάθος πως να στήσετε τη σύνδεση και να λύσετε πολλά προβλήματα.

Για οποιεσδήποτε ερωτήσεις σε αυτό το κεφάλαιο επικοινωνήστε μαζί του, όχι με εμένα.

9.1 DOS-Linux σύνδεση.

Υποθέτω ότι έχετε ήδη ρυθμίσει σωστά το PLIP από την πλευρά του Linux και έχετε το σωστό καλώδιο, αλλιώς πηγαίνετε πίσω στα προηγούμενα κεφάλαια.

Από την πλευρά του DOS, θα χρειαστείτε πρώτα από όλα έναν οδηγό. Μπορείτε να τον βρείτε στο:

ftp://ftp.crynwr.com/drivers/plip.zip

Το πρόγραμμα τρέχει κάτω από DOS και δρα σαν Ethernet Packet driver. Αν θέλετε να χρησιμοποιήσετε το PLIP με Windows θα χρειαστείτε και το Trumpet Winsock. Αυτό λειτουργεί σαν TCP/IP διασύνδεση. Διαφορετικά, μάλλον μπορείτε να βρείτε προγράμματα TCP/IP για DOS.

Τώρα, πηγαίνετε πίσω στο υπολογιστή με το Linux και δώστε του την διεύθυνση του DOS υπολογιστή στο /etc/hosts. Αν ο DOS υπολογιστής σας δεν έχει δηλωμένη IP διεύθυνση μπορείτε να διαλέξετε μια οποιαδήποτε (αλλά θυμηθείτε την προειδοποίηση του κεφαλαίου 3 για IP διευθύνσεις).

Υποθέτω ότι δώσατε το όνομα linux στον Linux υπολογιστή και dos στον DOS υπολογιστή. Πρέπει να γράψετε:

ifconfig plip1 linux pointopoint dos arp up
route add dos

Φυσικά αν θέλετε να το κάνετε αυτό κάθε φορά που ξεκινάτε τον Linux υπολογιστή μπορείτε να προσθέσετε τα παρακάτω στο /etc/rc.d/rc.inet1:


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

Αυτό ρυθμίζει τη σύνδεση και προσθέτει τη δίοδο. Φυσικά αν χρησιμοποιείτε τη δεύτερη παράλληλη θύρα πρέπει να γράψετε plip2.

Πηγαίνετε πίσω στον DOS/Windows υπολογιστή και ανοίξτε το autoexec.bat, όπου θα προσθέσετε τις γραμμές που ακολουθούν:


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

Φυσικά υποθέτω ότι βάλατε το plip.com (τον packet driver) στον κατάλογο c:/plip και το winpkt.com στο c:/tcpip, αλλιώς θα χρειαστεί να βάλετε το σωστό μονοπάτι.

Αυτό ρυθμίζει το πρόγραμμα plip.com σε διάνυσμα 0χ60 και φορτώνει το winpkt.com που έρχεται με το trumpet winsock στο ίδιο διάνυσμα. Εάν το καλώδιο δεν είναι στην lpt1 θα χρειαστεί να πείτε στο plip.com το σωστό IRQ και την IO διεύθυνση. Επίσης, το winpkt.com χρειάζεται να τρέχει για να είναι διαθέσιμο το διάνυσμα στα Windows. Από εκεί και πέρα πηγαίνουμε στη ρύθμιση του Trumpet Winsock. Το μόνο που χρειάζεται είναι να διαλέξετε SLIP ή PPP και να βάλετε 60 στο κουτί Packet vector. Μετά του λέτε την IP διεύθυνση που του δώσατε, την IP διεύθυνση του Linux υπολογιστή ως την πύλη(gateway) και ως διακομιστή (Name server) το όνομα του υπολογιστή ή του ISP σας, εάν πρόκειται να συνδεθείτε στο internet (περισσότερα για αυτό αργότερα). Κλείστε τις ρυθμίσεις και ξανατρέξτε το Winsock και είστε έτοιμοι!Βάλτε το winsock στο startup group και θα τα έχετε όλα έτοιμα αυτόματα!

Εάν θέλετε να έχετε πρόσβαση στο internet μέσω του Linux υπολογιστή από τα Windows θα χρειαστεί να χρησιμοποιήσετε IP Masquerading, για πληροφορίες δείτε το NET-2-HOWTO. Αυτό απλά αποκρύπτει τα Windows πίσω από την IP διεύθυνση του Linux.

Επίσης, βρήκα ένα πρόγραμμα που σας επιτρέπει να τρέχετε X-Windows στα Windows!Βρίσκεται στο:

http://www.tucows.com/

Ρυθμίστε το σύμφωνα με τις οδηγίες και απλά θα κάνετε telnet από τα Windows και θα ρυθμίσετε την οθόνη ως αυτή των Windows (πχ `DISPLAY=duncan:0.0`) και τρέχετε τα προγράμματα κανονικά. Δεν υπάρχει τίποτα καλύτερο από το να τρέχετε xv στα Windows!Ελπίζω να σας βοήθησα.

9.2 Μια DOS-Linux PLIP εμπειρία.

ΣΗΜΕΙΩΣΗ: Τα παρακάτω τα έλαβα από τον James Vahn jvahn@short.circuit.com. Τα έβαλα όπως τα παρέλαβα. Αυτό σημαίνει ότι για οποιεσδήποτε ερωτήσεις σχετικά με αυτό το τμήμα έχει πολύ περισσότερη εμπειρία από εμένα, οπότε στείλτε email σε αυτόν κι όχι εμένα. Η εμπειρία του με μια σύνδεση PLIP ενός DOS υπολογιστή με δισκέτα μόνο με Linux είναι ένα τέλειο παράδειγμα για το πως να λύσετε κοινά προβλήματα.

Τελευταία ανανέωση 11 Ιουλίου 1996

Το DOS κουτί μου (με οδηγό δισκέτας ΜΟΝΟ) είναι δικτυωμένο μέσω PLIP από τη δεύτερη παράλληλη θύρα στο Linux μηχάνημα. Η πρώτη θύρα του Linux μηχανήματος έχει συνδεμένο τον εκτυπωτή, και τα δυο είναι μόνιμα συνδεμένα και κάνω telnet στο Linux. Εδώ είναι οι σημειώσεις μου για το πως τα κατάφερα.

Όταν ο πυρήνας ψάχνει για θύρες εκτυπωτή, θα τις πάρει όλες εκτός αν τις αφαιρέσετε χειροκίνητα. Διαφορετικά το PLIP δε θα βρει καμία. Μια μέθοδος είναι να φορτώνετε τους οδηγούς ως modules όταν τους χρειάζεστε...

Ο <gniibe@mri.co.jp> γράφει:

Συνέχει συνιστώ να έχετε τα PLIP/LP ως modules, εφόσον I keep recommending using PLIP/LP as kernel module, since

Με τα PLIP/LP ως modules, μπορείτε να ρυθμίσετε ποια θύρα θα χρησιμοποιεί το PLIP και ποια το LP. Ένα παράδειγμα:

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

Ή μπορείτε να χρησιμοποιείτε δυο παράλληλες θύρες:

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

Στο παραπάνω παράδειγμα

το plip0 ρυθμίζεται στο 0x278 και το irq του ως 2,

το plip1 ρυθμίζεται στο 0x3bc και το irq του ως 5, αντίστοιχα.

Η χρήση modules είναι μάλλον μονόδρομος. Η παρακάτω μέθοδος δείχνει πως να "πειράξετε" τον πυρήνα ώστε να έχετε εκτυπωτή και PLIP σε διαφορετικές θύρες χωρίς τη χρήση modules. Εάν η χρήση modules δε σας είναι εύκολη μπορεί να βρείτε τα παρακάτω πιο γρήγορα.

Θα χρειαστεί να αλλάξετε δυο αρχεία στο κώδικα του πυρήνα. Χρησιμοποιώ πυρήνα 1.2.13 και βρήκα ότι μερικές αλλαγές χρειάζονται στο ../linux/drivers/net/Space.c για το σύστημά μου. Κοιτάξτε γύρω από τη γραμμή 205 για τον ορισμό του PLIp για να κάνετε την θύρα και το IRQ της να ταιριάζουν, και σημειώστε ποιον οδηγό χρειάζεστε (plip0, plip1, plip2). Στην περίπτωσή μου η θύρα 0χ278 χρησιμοποιεί IRQ 5 (η κάρτα είναι ρυθμισμένη έτσι) αλλά στο Space.c είναι με IRQ 2. Έκανα τις αλλαγές εδώ παρά να ανοίγω το μηχάνημα και να ψάχνω τις κάρτες. Ο άλλος τρόπος είναι να δηλώσετε το IRQ με το ifconfig αργότερα, αλλά ο πυρήνας θα ξεκινήσει με τα λάθος IRQ για το PLIP και αυτό να σας ενοχλεί. Είναι μια απλή αλλαγή (ενός χαρακτήρα).

Το επόμενο, και δυσκολότερο, βήμα:

Στο .../drivers/char/lp.c θα βρείτε τα παρακάτω περίπου στη γραμμή 38:


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 

Προσέξτε τις αλλαγές που γίνονται- η μια θύρα αφαιρείται, οπότε μόνο δυο θύρες δηλώνονται. Η θύρα 0x3BC μάλλον δε θα δουλέψει για το PLIP- η γραμμή με τα IRQ συνήθως σπάει σε αυτές τις θύρες.

Πήρατε αντίγραφο πριν αλλάξετε τα αρχεία, σωστά; Τώρα ετοιμάστε ένα νέο πυρήνα με υποστήριξη εκτυπωτή, δικτύου, dummy και plip.

Ρυθμίστε το σύστημα. Το δικό μου /etc/rc.d/rc.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

Προσέξτε ότι το arp χρησιμοποιείται σε DOS-to-Linux συνδέσεις, όχι σε Linux-to-Linux συνδέσεις.

Και στο /etc/hosts προσθέστε τα παρακάτω, για να δώσετε από ένα όνομα στα δυο μηχανήματα:


200.0.0.1       console1
200.0.0.2       console2

Το DOS είναι η console2. Προσέξτε την προειδοποίηση του Andrea, καλύτερα να χρησιμοποιήσετε τις επίσημες διευθύνσεις.

Επανεκκινήστε ώστε όλες οι αλλαγές και ο νέος πυρήνας να ενεργοποιηθούν. Κατά την εκκίνηση (ή με το dmesg) αν βάλατε τις προσθήκες, ή αλλιώς όταν φορτώσετε τα modules θα δείτε:

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.

Η εντολή "route" δείχνει:

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

Και το "ifconfig plip1" δείχνει:

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 

Κοιτάξτε το /etc/inted.conf και δείτε αν το telnet είναι ενεργοποιημένο. Μπορεί να θέλετε να διαβάσετε το man του tcpd, και να χρησιμοποιήσετε το /etc/hosts.allow (ALL: LOCAL) και /etc/hosts.deny (ALL: ALL). Θα πρέπει να μπορείτε να κάνετε "telnet localhost".

Το Linux είναι έτοιμο, πάμε στο DOS. Ξανά να προσέχετε για τη θύρα 0χ3BC εάν υπάρχει.

Χρησιμοποιώ το ΝCSA telnet και τον οδηγό PLIP της Crynwr, που βρίσκονται στις παρακάτω διευθύνσεις:

ftp://ftp.ncsa.uiuc.edu/Telnet/DOS/ncsa/tel2308b.zip

ftp://ftp.crynwr.com/drivers/plip.zip

Σιγουρευτείτε ότι έχετε την έκδοση 2.3.08 του NCSA telnet και την έκδοση 11.1 του Crynwr PLIP οδηγού. Διαβάστε το Crynwr SUPPORT.DOC.

Το CONFIG.TEL αρχείο: Τα περισσότερα είναι οι εξ'ορισμού ρυθμίσεις όποτε το έκοψα για να γλιτώσω λίγο χώρο βάζοντας μόνο τις πληροφορίες που χρειάζεστε (ελπίζω). Η δεύτερη θύρα του μηχανήματος είναι στο 0χ278, IRQ 5.


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 είναι το όνομα του Linux μηχανήματος, χρησιμοποιήστε ό,τι θέλετε)

Έκανα ένα καλώδιο 4 μέτρων για τη σύνδεση και (αφού αρχικά βρήκα ότι ήταν λάθος φτιαγμένο) δεν υπήρξε κανένα πρόβλημα. Ένα κοινό καλώδιο εκτυπωτών 11-συνδέσεων θα δουλέψει κανονικά. Το Linux plip.c δείχνει την καλωδίωση. Αν και το δικό μου έχει συνδέσεις 17-17 δε νομίζω ότι χρειάζεται για τίποτα και δεν υπάρχει και σε έτοιμα καλώδια.


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

Αυτό θα σας συνδέσει στο Linux στο /dev/ttyp. To telnet του NCSA δίνει 8 οθόνες και λειτουργεί και σαν ftp server. Το PLIP πετυχαίνει μια μέτρια απόδοση, πιάνω 6.5Κ/δευτερόλεπτο για μεταφορές αρχείων με τις αντίκες μου. Ελπίζω να πετύχετε περισσότερα. :-)


Next Previous Contents