LINUX PLIP MINI-HOWTO
Andrea Controzzi,
[email protected]
v2.1, 12 marzo 1998
Questo HOWTO insegna a impostare ed usare il Protocollo di Interfaccia
su Linea Parallela ("Parallel Line Interface Protocol"). Traduzione
di Giovanni Bortolozzo (borto at pluto.linux.it).
NOTA
Questa � una nuova versione. Ci sono molte modifiche e un sacco
di miglioramenti, ma ci saranno ancora errori di grammatica e
battitura (l'inglese non � la mia lingua madre) e, anche se non
voluti, � possibile ci siano un po' di informazioni vecchiotte.
INVITO ad informarmi su qualsiasi errore per aiutarmi a fornire
a tutti le informazioni corrette.
Le modifiche pi� sostanziali in questa versione sono:
� formato SGML
� una risposta generale alla domanda molto ricorrente su "PLIP con
win95" (la risposta � negativa, mi spiace)
� una sezione di FAQ pi� grande e migliore (grazie ai report di un
sacco di utenti: molti di loro, come promesso, troveranno qui i
loro commenti!)
� rimozione dei file Quick PLIP Installation, che erano inutili e
obsoleti.
� aggiornamento dell'addendum sulla connessione PLIP Dos-Linux
Per qualsiasi domanda, correzione, commento e/o suggerimento, il
mio indirizzo email:
[email protected].
Mi si scriva liberamente ogni qual volta si ha bisogno di aiuto.
Qualche volta non risponder� immediatamente, ma lo far�. Se
capita che non si riceve niente da me passate due settimane,
significa che il nostro sistema di posta ha qualche problema:
non si esiti a scrivermi ancora: aiutare � il mio compito. Non
posso garantire che risolver� tutti i problemi, ma ci prover�.
Se dopo molte mail non si riceve ancora risposta, si controlli
il proprio indirizzo di ritorno. Spesso le mie risposte non
arrivano a causa di problemi di questo tipo, solitamente perch�
l'indirizzo di ritorno � impostato a root@myhost.
Prima di scrivermi, si leggano le FAQ. La mia risposta alle
domande gi� l� presenti non sar� sicuramente la migliore
rispetto alle risposte che si sono gi� lette (probabilmente �
peggiore e meno completa).
Per domande a proposito di PLIP con DOS e Win95, invito a
scrivere agli autori di quei capitoli: io non posso aiutarvi.
Prima di tutto, un sacco di informazioni tecniche provengono dal
NET-2 HOWTO di Terry Dawson. Questo mini-HOWTO non si suppone
copra altri aspetti e/o rimpiazzi il suddetto HOWTO: il mio
scopo era di fornire una strada per installare in maniera veloce
una connessione PLIP permanente, *SOLO* questo. Tutte le altre
informazioni provengono dalla mia esperienza personale e
dall'aiuto di molti utenti che mi hanno inviato commenti e
informazioni.
Si legga il NET-2 HOWTO e altri documenti per informazioni
generali sulla rete e sui file di configurazione che suggerisco
di modificare.
1. Introduzione: cos'� il PLIP e perch� dovrei usarlo?
Ci sono molti modi per creare una connessione tra diversi host. PLIP,
similmente a SLIP, permette una connessione locale tra due macchine,
usando invece le porte parallele.
Le porte parallele trasferiscono pi� di un bit per volta e ci�
significa che � possibile raggiungere velocit� pi� elevate rispetto a
quelle ottenibili con le interfacce seriali.
La velocit� raggiungibile dipende completamente dal proprio hardware
(CPU e porta parallela) e dal carico del sistema, ed in generale pu�
variare da un minimo di 5 Kb/sec fino a 40 Kb/sec.
L'interfaccia PLIP � abbastanza veloce da permettere alcune funzioni
decenti di tcp/ip, come NFS. Quindi si pu� avere un computer con
tutte le proprie cose di Linux e un altro con solamente un sistema
minimo, nel quale si pu� montare tutto il resto dalla macchina
principale.
Lo svantaggio � che la maggior parte degli utenti posseggono solamente
una porta parallela, e ci� implica che non si sar� in grado di
stampare e usare PLIP contemporaneamente. Anche con due porte
parallele � impossibile stampare e usare PLIP senza usare i moduli del
kernel.
Questo svantaggio pu� anche essere eliminato se si hanno due o pi�
porte parallele, applicando una patch che si trova in questo mini-
HOWTO.
Finalmente sono in grado di dare un buon metodo per impostare una
connessione PLIP tra DOS e Linux.
Non mi stancher� mai di ripeterlo: finora nessuno � riuscito ad
instaurare un collegamento funzionante tra Linux e Windows95.
2. Hardware richiesto per usare PLIP.
L'hardware richiesto per impostare una interfaccia PLIP � (ovviamente)
una porta parallela libera in entrambe le macchine e un cavo. Se �
possibile configurare la parallela dal proprio BIOS, la si imposti
almeno a "bidirezionale", ma se possibile meglio in modalit� ECP o
EPP.
Per quanto riguarda il cavo, quanto segue � quello che � scritto nel
file plip.c presente nei sorgenti del kernel 2.0.33:
Il cavo usato di fatto � un cavo parallelo nullo ("parallel null
cable") standard -- venduto in diversi posti come cavo "Laplink".
Si avr� bisogno di un cavo a 12 conduttori per farselo da soli.
I collegamenti sono:
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
Non si connettano gli altri piedini. Sono
D5,D6,D7 sono 7,8,9
STROBE � 1, FEED � 14, INIT � 16
le masse aggiuntive sono 18,19,20,21,22,23,24
Ma consiglio caldamente di leggere i file
/usr/src/linux/drivers/net/README1.PLIP e README2.PLIP per maggiori
informazioni sul cavo.
La mia opinione � che si dovrebbe evitare di costruirsi il proprio
cavo parallelo nullo. Un cavo fatto in casa pu� far risparmiare
davvero pochi soldi, ma pu� provocare un sacco di mal di testa. Se si
vuole costruirsi il proprio cavo parallelo si ricordi che lo si sta
facendo a proprio rischio: io ho riportato esattamente quanto scritto
in plip.c ma non do garanzie.
Alcune cose sulla lunghezza del cavo: cavi lunghi (i.e. pi� di 10
piedi o 3 metri) possono portare problemi dovuti a interferenze radio.
Se si ha bisogno di un cavo lungo si dovrebbe usare un buon cavo ben
schermato, ma comunque non sono raccomandati cavi troppo lunghi: penso
che la massima lunghezza del cavo dovrebbe essere 15 metri (30 piedi).
Ad ogni modo, qualcuno mi ha scritto che il suo cavo da 100 piedi (30
metri) funziona bene; se qualcuno vuole veramente provare una
connessione PLIP tra l'ufficio e casa sua (a 200 metri di distanza),
ed ha abbastanza soldi da spendere, pu� provarla, ma lo fa a suo
rischio.
3. Riconfigurare il kernel.
Si assume che si sia gi� in grado di configurare e compilare il
kernel, altrimenti conviene leggere qualcosa in proposito (Kernel
HOWTO ed altre guide). Grazie al lavoro dei ragazzi del kernel,
ricompilarne uno degli ultimi � veramente un compito facile anche per
la gente "comune", e quindi lo si faccia. Comunque, per amor di
completezza, ecco qui un breve sunto di quanto si deve fare:
NOTA: assumo che si stia usando un kernel della serie 2.0.xx. Ormai
non � pi� necessario tenersi i kernel 1.2.xx. Non ci sono istruzioni
sui kernel 2.1.xx in quanto sono per lo sviluppo.
Assumer� che si usi menuconfig per scegliere le opzioni del kernel, ma
gli altri strumenti sono equivalenti. Mostrer� come farlo con
menuconfig:
#make menuconfig
Suggerisco caldamente di selezionare
Loadable module support --->
ed abilitare
[*] Enable loadable module support
e, se possibile (i.e. si ha modules.2.0.0)
[*] Kernel daemon support (e.g. autoload of modules)
Si torni indietro e si scelga
Networking options --->
dove si deve scegliere almeno
[*] Network firewalls
[*] TCP/IP networking
[*] IP: forwarding/gatewaying
Si torni indietro e si scelga almeno
[*] Network device support
<M> PLIP (parallel port) support
Se si usano i moduli consiglio di impostare il PLIP come modulo. Se
lo si fa e se si ha bisogno di usare una stampante, si pu� andare
anche in
Character devices --->
e impostare come modulo il
<M> Parallel printer support
Ora si � abilitato il supporto per il PLIP nel kernel. Se � la prima
volta che si compila il kernel si dia un occhiata pure alle altre
opzioni, poi si salvi e si esca.
Alla fine si compili il tutto con
#make dep ; make clean
#make zlilo
e se si usano i moduli
# make modules
# make modules_install
Ora si riavvii il proprio sistema.
4. Messaggi del kernel sull'interfaccia PLIP.
Dopo aver riconfigurato e compilato il kernel abilitando il supporto
per il PLIP, quando si riavvia il sistema, se il kernel supporta
direttamente il PLIP, o quando si carica il modulo del PLIP se si �
compilato il supporto come modulo, si dovrebbe vedere qualcosa di
simile (i numeri possono essere diversi):
NET3 PLIP version 2.2
[email protected]
plip1: Parallel port at 0x378, using assigned IRQ 7.
A seconda della configurazione di klogd e syslogd il messaggio sul
plip pu� essere stato salvato nei file di log del sistema: non ci si
faccia prendere dal panico se non si vede il suddetto messaggio. Se
si � compilato il PLIP come modulo e lsmod mostra che il modulo plip �
caricato, questo � sufficiente.
Prego si prenda nota del nome dell'interfaccia. Solitamente � plip1,
ma potrebbe essere plip0 e anche plip2, plip3 e cos� via. Dipende
dall'indirizzo IO.
5. Impostare i file di configurazione.
NOTA: Alcune distribuzioni, come Debian, usano file di configurazione
diversi. Se si ha un'installazione standard e non si trovano i file
rc.inet*, si cerchino i file di configurazione (diversi) nella
directory /etc/init.d.
Prima di tutti si ricordi di salvare una copia di tutti i file che si
modificheranno,
#cp rc.inet1 rc.inet1.BACKUP
potrebbe essere una buona idea.
Ora, se non lo si � gi� fatto, si deve scegliere l'indirizzo IP delle
due macchine. Nel mio esempio user� una coppia di IP d'esempio per
gli IP che si andranno a scrivere, nel formato standard
xxx.xxx.xxx.xxx.
Nel file /etc/rc.d/inet1.rc di entrambe le macchine si aggiunga questa
riga (meglio se verso la fine del file):
______________________________________________________________________
/sbin/route add -net ${NETWORK} netmask ${NETMASK}
______________________________________________________________________
Dove NETWORK e NETMASK dovrebbero essere state impostate
precedentemente. Se non si sa come, invito a leggere il NET-2 HOWTO.
Se dopo questo comando route si ottiene un messaggio simile a questo:
SIOCADDRT: network unreachable
allora si usi questo:
______________________________________________________________________
/sbin/route add -net ${NETWORK} netmask ${NETMASK} dev plip1
______________________________________________________________________
dove, come al solito, si dovr� usare il nome di interfaccia riportato
dai messaggi del kernel (si veda sopra).
Si possono tranquillamente ignorare queste variabili solo nei seguenti
casi:
Se si vuole solamente connettere due macchina in una rete isolata, si
pu� prendere qualsiasi coppia di indirizzi IP, ad esempio 200.0.0.1 e
200.0.0.2 rispettivamente. In questo caso si pu� tranquillamente
mettere NETWORK="200.0.0.0" e NETMASK="255.255.255.0". Questi sono
gli IP di esempio che uso nella mia Installazione PLIP Rapida (si veda
pi� sotto).
NOTA: 200.0.0.1 e 200.0.0.2 sono solo IP di esempio, e vi avviso di
non usare questi numeri perch� potrebbero essere indirizzi di host
reali su Internet!
Invito caldamente a scegliere i proprio indirizzi negli intervalli di
"indirizzi privati":
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
Nel file /etc/hosts di entrambe le macchine si dovrebbe aggiungere una
voce con l'IP della macchina a cui ci si connette via PLIP. Nel mio
esempio le voci sono:
______________________________________________________________________
200.0.0.1 uno # questo � l'indirizzo IP di "uno"
200.0.0.2 due # questo � l'indirizzo IP di "due"
______________________________________________________________________
Dove "uno" e "due" sono i nomi scelti per i due host.
Se si vuole attivare l'NFS, a patto di aver risposto affermativamente
durante la configurazione del kernel, si devono aggiungere in
/etc/exports le voci che descrivono le directory che si vogliono
esportare. Nel mio esempio, per poter montare la directory /usr, si
deve aggiungere questa voce:
______________________________________________________________________
/usr due (ro)
______________________________________________________________________
Per maggiori informazioni su NFS, si legga la documentazione
specifica; non mi si segnalino problemi con NFS, non sar� in grado di
aiutare.
Ora si riavvia il proprio sistema.
6. Attivare la connessione PLIP.
E finalmente, questi sono i comandi, da eseguire con i privilegi di
root, che attivano l'interfaccia PLIP (naturalmente il cavo deve
essere gi� collegato correttamente).
NOTA: Se succede qualcosa di inaspettato, si ricontrolli il cavo ed
eventuali errori di battitura nei comandi. Se nonostante si seguano
correttamente le istruzioni ci sono ancora errori, si legga il
paragrafo delle FAQ, nel quale sono gi� disponibili un sacco di
risposte.
Per prima cosa ci si assicuri che non sia presente il dispositivo lp:
# cat /proc/devices
Non ci deve essere nessun riferimento ad lp simile al seguente:
6 lp
Se c'�, si rimuova (temporaneamente) il dispositivo lp prima di
continuare: se PLIP funziona allora lo si pu� provare con lp pi�
tardi. Per rimuovere il dispositivo lp si dovr� usare rmmod se � un
modulo; se invece � compilato staticamente nel kernel, si deve
ricompilare il kernel con il supporto di lp come modulo (idea molto
saggia).
Negli esempi, uso ancora i nomi uno e due. Su uno si dovranno fare le
seguenti cose.
Se non si ha il demone che monta automaticamente i moduli e si �
compilato PLIP come modulo, lo si deve montare:
# insmod plip
NOTA: se la propria porta parallela non � sull'IRQ 7 e/o il suo
Indirizzo IO � diverso da 0x378, allora lo si deve dire a insmod. Si
trovi quali sono l'IRQ e l'Indirizzo IO veri (potrebbe andare bene
anche il comando DOS MSD, ma non ci si fidi troppo) e scrivere
qualcosa del genere:
# insmod plip io=0x278 irq=5
Solitamente l'IRQ � il 7 o il 5, mentre l'Indirizzo IO � 0x378, 0x278
o 0x3bc. � importante verificare che gli indirizzi e gli IRQ
corrispondano alle impostazioni hardware (tramite ponticelli nelle
vecchie schede, nel BIOS nelle schede madri moderne).
Se si � paranoici si verifichi che il modulo � caricato con:
# lsmod
Module: #pages: Used by:
plip 3 0
Ci si annoti il nome dell'interfaccia (plip0, plip1, e cos� via; per
maggiori dettagli si legga il precedente capitolo sui messaggi del
kernel) e si imposti poi l'interfaccia PLIP:
# ifconfig plip1 uno pointopoint due up
NOTA: se la propria porta parallela non � sull'IRQ 7 e/o il suo
Indirizzo IO � diverso da 0x378, allora lo si deve dire a ifconfig.
Si usino gli stessi IRQ e Indirizzo IO riportati dai messaggi del
kernel e si scriva qualcosa del genere:
# ifconfig plip1 irq 7
# ifconfig plip1 io_addr 0x3bc
Solitamente IRQ � 7 oppure 5, mentre l'Indirizzo IO � 0x378, 0x278 o
0x3bc.
Ora si controlli che funziona...
# 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
Si aggiunga l'intradamento verso due...
# route add due plip1
E, se si vuole, si pu� aggiungere anche l'NFS per due:
# rpc.portmap
# rpc.mountd
# rpc.nfsd
Su "due" i comandi sono gli stessi, ma si deve scrivere uno invece di
due e viceversa.
Una delle due macchine probabilmente avr� solamente la connessione
PLIP. Se questo � vero e quella macchina � due, si pu� anche
scrivere:
# route add default gw uno
su quella macchina. Nel mio esempio precedente, due � un portatile
che ha solamente una connessione PLIP con uno, cos� uso il comando
suddetto su due.
Alla fine si controlli se il tutto funziona con un
# ping due
da uno e un
# ping uno
da due.
Naturalmente sarebbe meglio far s� che tutti questi comandi siano
lanciati da uno script all'avvio del sistema. Si deve solamente
creare uno script che esegua questi comandi: ora lo si pu� lanciare
come root quando serve, oppure si pu� aggiungere un comando (in
/etc/rc.d/rc.inet2) che lo chiami all'avvio.
Per regolare il PLIP si pu� usare anche in comando plipconfig. Si
veda la pagina man per maggiori informazioni.
Per disabilitare il PLIP, si deve solamente far questo:
# ifconfig plip1 down
il quale rimuove contemporaneamente anche le voci di instradamento.
Se non si ha il demone per il caricamento automatico dei moduli,
allora si rimuova anche il modulo.
# rmmod plip
7. FAQ (Filza di Assilli Quotidiani).
Questa sezione dovrebbe (almeno spero) risolvere i vostri problemi.
Se si ha qualsiasi altra domanda, me la si invii liberamente.
� Ricevo questo messaggio all'avvio del sistema (o quando carico il
modulo del plip):
SIOCSIFADDR: No such device
SIOCADDRT: Network is unreachable
e quando provo a instaurare la connessione come spiegato in precen�
denza ricevo ancora dei messaggi d'errore simili a:
SIOCSIFADDR: No such device
SIOCSIFDSTADDR: No such device
SIOCADDRT: Network is unreachable
mount clntudp_create: RPC: Port Mapper failure - RPC: Unable to send
� Il kernel, per qualche ragione, non � stato abilitato a supportare
il PLIP. Ci� pu� essere dovuto a:
� Non si � risposto affermativamente a "PLIP support? " durante la
configurazione del kernel.
� Non si � risposto affermativamente a "Printer support? " durante la
configurazione del kernel.
� Si � compilato il PLIP come modulo, e quindi si deve caricarlo.
� Si sta indirizzando la porta sbagliata, i.e. si � scritto plip1
invece di plip0 per esempio.
� C'� modo, a parte tramite i moduli, di supportare sia PLIP che LP?
Forse con due porte parallele?
� S�, a quanto ne so ci sono due modi, descritti in "Patches to make
PLIP and LP live together":
� Si pu� applicare una patch al kernel per far s� che quest'ultimo
supporti entrambi.
� Si pu� applicare un'altra patch al kernel per far s� che questo usi
una porta parallela per il PLIP e l'altra per LP.
� Ho creato uno script che connette i miei 2 computer. Imposto
automaticamente la connessione nel mio rc.inet2, dove chiamo uno
script che crea la connessione e abilita l'NFS. La mia macchina
"due" monta alcune directory di "uno"; ho aggiunto le voci corrette
nel /etc/fstab di "due". Se avvio "due" quando "uno" � gi�, "due"
di blocca per alcuni minuti durante il mount dei filesystem remoti.
� Ci� avviene perch� "due" aspetta per montare i filesystem di "uno",
ma se "uno" � gi� bisogna attendere finch� "due" si � stancata di
aspettare. Per evitarlo, si pu�:
� Commentare in rc.inet2 il comando che monta i filesystem remoti.
� Rimuovere le voci nel /etc/fstab di "due" e montare manualmente i
filesystem remoti quando e se servono.
� Una soluzione migliore sarebbe se "due" fosse in grado di
determinare all'avvio se "uno" � attiva, e se lo � montare i
filesystem. Questo pu� essere ottenuto rimpiazzando il comando
mount in rc.d e dove necessario con qualcosa di simile a questo:
___________________________________________________________________
if ping -c 5 one ; then
mount one:/.....
fi
___________________________________________________________________
� La mia connessione � attiva, ma il ping fallisce. Ricevo il
seguente messaggio dal kernel:
plip1: timed out (1, 89)
o un messaggi simili.
� Ci� significa che il "proprio lato della connessione" funziona, la
propria macchina invia il segnale, ma "l'altra parte" non risponde
o dalla propria parte non si aspetta su IRQ/Indirizzo IO giusti.
Questo � il problema pi� comune e, per quanto ne so, ha un sacco di
motivi plausibili, solitamente problemi con il cavo oppure IRQ e/o
Indirizzo IO sbagliati. L'IRQ sbagliato � causa di oltre il 60%
dei problemi, quindi � molto facile che cambiandolo si rimuova il
problema. Di seguito un elenco dettagliato di possibili motivi:
� Il cavo non � inserito correttamente, oppure � rotto o sbagliato.
Lo si controlli, se possibile, usandolo con due macchine Linux che
abbiano una connessione PLIP che gi� funziona. Se non � possibile,
allora almeno si controlli il cavo con un tester. Il fatto che il
cavo funzioni o meno con DOS/win95 � un buon/brutto presagio ma non
� una prova.
� La macchina "dall'altra parte" non ha il PLIP attivo.
� Si � connessi con un portatile che non ha una porta parallela
adatta (si veda pi� avanti).
� Si ha una porta parallela veramente economica che � semplicemente
una porta "stampante", e quindi pu� inviare ma non ricevere.
� La propria porta parallela non � impostata (almeno) come
bidirezionale. Lo si faccia nella configurazione del BIOS. Vanno
bene anche impostazioni avanzate della porta parallela come EPP e
ECP.
� La porta parallela ha un IRQ diverso, cos� si deve caricare il
modulo plip (o il modulo lp con un diverso IRQ. Si torni al
capitolo ``Attivare la connessione PLIP'' e si scelga un IRQ
diverso.
� Altri dispositivi, ad esempio una scheda aiudio, potrebbero
condividere il proprio irq (che solitamente � l'irq 7). Non ci si
fidi dei programmi DOS come MSD, si provi invece a caricare il
modulo plip con un diverso irq.
� Ho messo l'IRQ e l'Indirizzo IO corretti, ma ancora non funziona.
L'indirizzo l'ho scoperto usando il comando MSD.
� Mi � stato segnalato che MSD restituisce indirizzi delle porte
errati. Si provi ad usare questo programma:
<
http://www.cs.caltech.edu/~huny/para13.zip>.
� La mia connessione � attiva e il ping funziona. Qualche volta
ricevo dal kernel il seguente messaggio:
plip1: timed out (1, 89)
e simile.
� Significa che l'altro capo della connessione non ha risposto prima
del timeout. Se tutto funziona, si possono ignorare questi
messaggi: solitamente significano che l'altro capo � molto pi�
lento del proprio, a causa di hardware pi� vecchio o di un carico
maggiore. Si pu� provare a regolare il PLIP con il comando
plipconfig.
� Ho installato la connessione PLIP ma se faccio ping ho il 100% di
perdita dei dati. Ho connesso il mio desktop ad un portatile.
� Alcune porte parallele dei portatili non vanno bene per il PLIP,
poich� sono semplicemente "porte stampante", i.e. possono solo
trasmettere ma non ricevere dati. Non ho idea se esista un modo
per farle funzionare. La sola speranza �:
� Si controlli la configurazione del proprio notebook, forse c'� un
modo per configurare la porta parallela come porta parallela invece
di porta stampante. Solitamente � chiamato "modalit� parallela
avanzata" ("parallel enhanced mode").
� Si provi la modalit� 0 del plip. Non ho idea di come fare n� se
funziona o � ancora disponibile negli ultimi kernel.
� Quali velocit� posso raggiungere con PLIP?
� Questa � una domanda di difficile risposta, poich� ci sono MOLTI
fattori che possono profondamente cambiare le prestazioni:
� La velocit� della CPU ad entrambi i capi della connessione.
� Il tipo e l'impostazione delle porta parallela.
� Il carico del sistema.
� L'uso che si fa del PLIP.
Solo per dare un'idea di massima, si dovrebbero raggiungere circa i
40Kb/sec, molto pi� veloce di quanto si possa fare con una
qualsiasi connessione seriale e prossima alla velocit�
raggiungibile con una scheda ethernet di basso livello.
� Cosa succede se ho bisogno di fare ifconfig up e ifconfig porta gi�
un sacco di volte plip1?
� Sembrerebbe che sia necessario aggiungere -arp al comando ifconfig,
tranne per la prima volta dopo l'avvio. Io non ne ho bisogno, ma
forse qualcun'altro s�.
� Ho letto quali sono i numeri IP riservati per le reti private e i
tuoi 200.0.0.1 e 200.0.0.2 non sono in questi intervalli.
Dovrebbero essere cambiati?
� S�, lo devono. Ma, come ho sottolineato sin dall'inizio, li ho
scelti solo per la loro semplicit�, liberissimi di cambiarli a
proprio piacimento. Di seguito un estratto dal NET-2 HOWTO:
L'RFC1597 ha specificatamente riservato alcuni indirizzi IP per le
reti private. Li si dovrebbe usare in quanto prevengono qualsiasi
cosa di spiacevole possa succedere se ci si connette accidentalmente
ad Internet. Gli indirizzi riservati sono:
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
� C'� un modo per regolare i parametri del PLIP senza modificare il
codice sorgente?
� S�. Si provi il comando /sbin/plipconfig. Si veda la pagina man
per maggiori informazioni.
� Uso la Debian GNU/Linux, e sotto Debian i file /etc/rc.d/rc.inet1 e
2 non esistono. Dove devo scrivere il comando di configurazione
del plip?
� Nella Debian GNU/Linux di deve modificare /etc/init.d/network, dove
sui devono mettere tutti i comandi che dovrebbero stare in rc.inet1
e 2.
� Ho alcuni problemi a connettere due macchine con il PLIP. La prima
ha l'ultimo kernel, mentre la seconda usa ancora la versione PLIP
del 1.0.x.: � questo il problema?
� S�, � molto meglio, quando possibile, avere la stessa versione del
PLIP ad entrambi i capi. In plip.c sta scritto che il PLIP attuale
non pu� funzionare con il PLIP del 1.0.x.
� Bene, il PLIP funziona con 4 bit, ma che ne � del PLIP a 8 bit di
cui ho letto nei documenti del kernel? Penso si chiami Modo 1.
� Questo mini HOWTO � per la configurazione, per le informazioni
tecniche si leggano i file /usr/src/linux/drivers/net/README*.PLIP
o si contatti l'autore. Quello che so � solo questo: il PLIP
standard usa i cavi "null printer" ed � il Modo 0 (da non
confondere con plip0, che � il nome dell'interfaccia) ed usa 4 bit;
il Modo 1 usa 8 bit e dovrebbe gi� essere disponibile, ma necessita
di un cavo fatto a mano e funziona solo tra due macchine Linux.
Non so, una volta che ci si � procurati il cavo, come impostare una
connessione PLIP Modo 1; se qualcuno lo sa me lo faccia sapere.
8. Patch per far convivere PLIP e LP.
Il modo migliore per far convivere PLIP e LP � di usare i moduli del
kernel: si pu� caricare plip.o e scaricarlo quando serve la stampante
o viceversa. Se veramente si ha bisogno di usare sia PLIP che LP, si
provino le patch che seguono.
8.1. PLIP e LP assieme sulla stessa porta.
Se per qualche ragione si vuole avere PLIP e LP supportati
direttamente dal kernel, si possono provare queste patch.
Si deve modificare il seguente pezzo di codice, ma prima si faccia il
backup dei file:
______________________________________________________________________
******** modifiche a 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
******** modifiche a 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 */
______________________________________________________________________
Ovviamente c'� una liberatoria standard: ho ricevuto queste patch e le
rendo disponibili "cos� come le ho ricevute". Ci� significa che le si
possono provare a proprio rischio e pericolo. Ad ogni modo, il
problema pi� grosso dovrebbe essere solamente quello di ripristinare i
file originali e ricompilare.
8.2. PLIP e LP su porte diverse.
Se si posseggono almeno 2 porte parallele si possono provare queste
patch, che dovrebbero permettere di usare PLIP su una porta e LP
sull'altra.
1. Si commenti una riga in un file sorgente del kernel,
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. Configurazione del kernel
PLIP (parallel port) support (CONFIG_PLIP) [n] y
Parallel Printer support [y] y
3. Messaggi del kernel all'avvio
lp1 at 0x0378, using polling driver
.....
NET3 PLIP version 2.0
[email protected]
plip2: Parallel port at 0x278, using assigned IRQ 5.
Ancora si applica la liberatoria della sezione precendente.
9. Una connessione PLIP tra DOS e Linux.
Dopo la prima versione di questo mini HOWTO molti mi hanno scritto per
avere informazioni sulla connessione tra computer Linux e DOS (o
Windows). L'interesse generale mi ha portato ad aggiungere questo
capitolo che spero sia d'aiuto a tutti.
Questa sezione � tratta da un articolo di James McDuffie
<
[email protected]> che ho trovato nella Linux Gazzette. Tratta
l'installazione di base di una connessione PLIP tra Linux e DOS usando
Windows e Trumpet WinSock e d� l'indirizzo di un utile programma che
permette di usare i programmi X-Window su Windows.
L'ultima sezione � un addendum di James Vahn <
[email protected]>
che descrive pi� approfonditamente come impostare questa connessione e
come risolvere molti problemi.
Per qualsiasi domanda su questo capitolo vi invito a contattare lui e
non me.
9.1. Connessione DOS-Linux.
Si suppone che si sia gi� impostato correttamente il supporto PLIP dal
lato Linux e si abbia gi� il cavo giusto, altrimenti si torni ai
capitoli precedenti.
Ora, per il lato DOS, per prima cosa si ha bisogno di un gestore dei
pacchetti ("packet driver"). Pu� essere trovato qui:
ftp://ftp.crynwr.com/drivers/plip.zip
Il programma funziona sotto DOS e si comporta come l'Ethernet Packet
driver. Se si vuole usare PLIP con Windows serve anche Trumpet
Winsock. Questo funziona come interfaccia TCP/IP. Altrimenti, si
deve trovare un qualche software di TCP/IP per DOS.
Ora si torni alla macchina Linux e si aggiunga l'indirizzo del
computer DOS ad /etc/hosts. Se la macchina DOS non ha un indirizzo IP
registrato, se ne pu� scegliere uno qualsiasi (si ricordino gli
avvertimenti del capitolo 3 sugli indirizzi IP).
Si supponga ora di aver scelto il nome linux per la macchina Linux e
dos per quella DOS. Si deve scrivere:
ifconfig plip1 linux pointopoint dos arp up
route add dos
Naturalmente se si vuole che questo sia fatto ogni volta che si avvia
la macchina linux si possono aggiungere queste righe nel file
/etc/rc.d/rc.inet1:
______________________________________________________________________
/sbin/ifconfig plip1 linux pointopoint dos arp up
/sbin/route add dos
______________________________________________________________________
Ci� imposta l'interfaccia e poi aggiunge l'instradamento. Naturalmente
se si usa la seconda porta parallela si deve scrivere plip2.
Si torni al computer con DOS/Windows e si modifichi autoexec.bat. Si
devono aggiungere le righe seguenti:
______________________________________________________________________
c:\plip\plip.com 0x60
c:\tcpip\winsock\winpkt.com 0x60
______________________________________________________________________
Naturalmente si suppone di aver messo plip.com (il packet driver)
nella directory c:/plip e winpkt.com in c:/tcpip, diversamente bisogna
specificare i percorsi corretti.
Ci� imposta il programma plip.com sul vettore di pacchetti 0x60 e poi
carica il programma winpkt.com distribuito con Trumpet Winsock sullo
stesso vettore. Se il cavo � in qualcosa di diverso da lpt1 si devono
dire a plip.com il numero IRQ e l'Indirizzo IO. Inoltre, winpkt.com
dev'essere eseguito per rendere disponibile a Windows questo vettore
di pacchetti. D'ora in poi si vedr� l'effettiva configurazione sotto
Trumpet Winsock. Tutto quel che si deve fare � di deselezionare SLIP
o PPP ed inserire 60 nella casella etichettata Packet vector. Poi
specificare l'indirizzo IP che si � scelto, l'indirizzo IP della
macchina Linux come gateway predefinito e il Name Server che pu�
essere la macchina stessa o l'indirizzo del name server del proprio
provider se si ha intenzione di connetterla ad Internet (si veda pi�
avanti). Si chiuda il setup e si riavvii Windows e tutto dovrebbe
essere a posto! Si metta winsock nel proprio gruppo Avvio e tutto
sar� impostato automaticamente!
Se si vuole accedere ad Internet attraverso la macchina Linux dal
computer Windows, si deve impostare il mascheramento IP. Per
informazioni si veda il NET-2 HOWTO. Questo semplicemente maschera il
computer Windows con l'indirizzo IP della propria macchina Linux.
Ho trovato anche un programma che permette di eseguire programmi X-
Window sotto Windows! Lo si pu� trovare a:
http://www.tucows.com/
Lo si installi come spiegato e poi tutto quel che resta da fare � fare
telnet dal computer Windows e impostare il display sul computer
Windows (`DISPLAY=dos:0.0` per esempio) e avviare il programma
desiderato. Non c'� niente di meglio che eseguire xv sotto Windows!
Spero che tutto ci� aiuti.
9.2. Una esperienza di connessione PLIP tra DOS e Linux.
NOTA: Ho ricevuto questo documento da James Vahn
<
[email protected]>. L'ho messo qui senza modifiche. Ci�
significa che per qualsiasi domanda su questa sezione lui � molto pi�
qualificato di me, e quindi vi invito a scrivere a lui piuttosto che a
me. La sua esperienza con una connessione PLIP su un computer DOS con
il solo dischetto e uno Linux � un perfetto esempio di come risolvere
problemi comuni.
Ultimo aggiornamento 11 luglio 1996
La mia macchina DOS con solo dischetto � in rete attraverso il PLIP
con la seconda porta parallela della macchina Linux. Alla prima porta
parallela della macchina Linux � connessa una stampante, entrambe sono
permanentemente connesse e dalla macchina DOS � possibile fare telnet
in Linux. Questi sono i miei appunti su quanto ho fatto per ottenere
questa configurazione.
Quando il kernel tenta di rilevare le porte parallele, se le prende
tutte a meno che non se ne rimuova qualcuna da tale rilevamento. Se
non si fa cos� il PLIP non potrebbe avere niente. Un metodo � di
caricare i driver come moduli quando servono...
<
[email protected]> scrive:
Raccomando di usare PLIP/LP come moduli per il kernel, in quanto
� i moduli sono flessibili rispetto alle modifiche nella
configurazione
� (ri)compilare il kernel non � facile per i nuovi utenti
� la coesistenza di PLIP e LP � possibile solamente con i moduli
Usando PLIP/LP come moduli per il kernel, si pu� specificare in quale
porta � PLIP e in quale � LP. Di seguito un esempio:
# insmod lp.o io=0x378
# insmod plip.o io=0x278 irq=2
Si possono pure usare due porte parallele:
# insmod plip.o io=0x278,0x3bc irq=2,5
Nell'esempio qui sopra
plip0 � assegnato su 0x278 e il suo irq � il 2, e rispettivamente
plip1 � assegnato su 0x3bc e il suo irq � il 5.
L'uso dei moduli sembra proprio la strada da seguire. Il metodo
seguente mostra come applicare una patch al kernel per permettere la
coesistenza di sia una stampante che del PLIP su porte differenti,
senza i moduli. Se non si ha familiarit� con il concetto dei moduli,
si dovrebbe trovare questo metodo un po' pi� veloce.
Sar� necessario modificare due file nell'albero dei sorgenti del
kernel. Io sto usando un kernel 1.2.13 e ho scoperto che per
sistemare il mio sistema sono necessarie alcune modifiche in
../linux/drivers/net/Space.c. Si veda attorno alla riga 205 per le
definizioni del PLIP per assicurarsi che la propria porta e IRQ
corrispondano, e si prenda nota di quale driver sar� (plip0, plip1,
plip2). Nel mio caso la porta 0x278 usa l'IRQ 5 (la scheda ha i
ponticelli messi in questo modo) ma in Space.c la definisce con l'IRQ
2. Ho fatto qui le modifiche piuttosto che aprire il computer e
spostare i ponticelli. L'alternativa � di specificare l'IRQ pi� tardi
tramite il comando ifconfig, ma il kernel partir� con l'IRQ sbagliato
per il PLIP e ci� potrebbe alla fine risultare noioso. � una modifica
semplice (un solo carattere).
Il passo seguente e pi� difficile �:
In .../drivers/char/lp.c si trover� quello che segue attorno alla riga
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
______________________________________________________________________
Si notino le modifiche da fare: una porta � commentata, cos� ora sono
definite solo 2 porte. La porta 0x3BC probabilmente non funzioner�
con il PLIP: in queste porte la linea IRQ � solitamente rotta, come
nei vecchi adattatori monocromatici (MDA).
Si � fatto un backup di questi file prima di modificarli, vero? Ora
si compili un nuovo kernel con il supporto per stampante, rete, dummy
e plip.
Si configuri il sistema. Questo � il mio file /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
______________________________________________________________________
Si noti che arp � usato per la connessione DOS-Linux, ed
apparentemente non usata nelle connessioni Linux-Linux.
E in /etc/hosts si pu� aggiungere quanto segue, solo per dare un nome
alle due macchine:
______________________________________________________________________
200.0.0.1 console1
200.0.0.2 console2
______________________________________________________________________
La macchina DOS � console2. Si ricordi l'avvertimento di Andrea su
questi... meglio usare gli schemi di numerazione standard.
Si riavvii in modo che queste modifiche ed il nuovo kernel abbiano
effetto. Durante la sequenza di boot (o eseguendo dmesg), se si sono
effettuate le modifiche, altrimenti quando si caricano i moduli:
lp0 at 0x03bc, using polling driver
lp1 at 0x0378, using polling driver
[....]
NET3 PLIP version 2.0
[email protected]
plip1: Parallel port at 0x278, using assigned IRQ 5.
Il comando "route" mostra questo:
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
E "ifconfig plip1" mostra:
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
Si veda in /etc/inetd.conf se il telnet � abilitato. � bene leggere
la pagina man di tcpd e l'uso di /etc/hosts.allow (ALL: LOCAL) e
/etc/hosts.deny (ALL: ALL). Si dovrebbe essere in grado di fare
"telnet localhost".
La parte su Linux � fatta, ora viene quella DOS. Ancora, non ci si
fidi della porta 0x3BC se ne risulta una presente.
Io uso il telnet della NCSA e il driver PLIP della Crynwr reperibili
su questi siti:
ftp://ftp.ncsa.uiuc.edu/Telnet/DOS/ncsa/tel2308b.zip
ftp://ftp.crynwr.com/drivers/plip.zip
Ci si assicuri di usare la versione 2.3.08 del telnet della NCSA e la
versione 11.1 del driver PLIP della Crynwr. Invito a trovare e
leggere il file SUPPORT.DOC della Crynwr.
Il file CONFIG.TEL. La maggior parte di questo file sono cose
predefinite e per risparmiare un po' di spazio ho provato a riportare
qua solo le informazioni che servono (almeno spero). La seconda porta
su questa macchina � impostata come 0x278 sull'IRQ 5.
______________________________________________________________________
myip=200.0.0.2
netmask=255.255.255.0 # maschera della sottorete
hardware=packet # scheda di rete (packet driver interface)
interrupt=5 # IRQ sul quale � impostata la scheda
ioaddr=60 # vettore di interrupt software che usa il driver
#
#[...un sacco di cose non modificate...]
#
# e alla fine del file, si metta questa riga:
name=console1 ; hostip=200.0.0.1 ; nameserver=1 ; gateway=1
______________________________________________________________________
(console1 � il nome della macchina Linux, si pu� usare quello che si
vuole)
Ho fatto un cavo null da 12 piedi tra le due macchine, e (dopo aver
scoperto subito che era mal connesso) non ci sono stati problemi.
Dovrebbe funzionare anche un cavo null per stampante a 11 linee. Il
file sorgente plip.c mostra la connessione. Sebbene il mio cavo abbia
la connessione 17-17, non penso sia usato per qualcos'altro e non era
presente fra i cavi gi� pronti.
______________________________________________________________________
@echo off
plip.com 0x60 5 0x278
telbin -s console1
______________________________________________________________________
Questo dovrebbe connettere alla macchina Linux su /dev/ttyp. Il
telnet della NCSA fornisce 8 schermi virtuali e funziona anche da
server ftp. L'interfaccia PLIP fornisce un discreto throughput, ed io
ho raggiunto i 6.5K/s con le mie antichit�. Questo fa sperare che voi
possiate fare meglio. :-)
10. PLIP tra Linux e Windows 95.
Questa sezione � vuota. Non uso Windows 95 per niente di serio a
parte i giochi, e quindi non ho provato e non mi interessa una
connessione PLIP con Linux. Le domande su questa connessione hanno
vinto la gara sulla domanda posta pi� spesso, e cos� do qui
(finalmente) la risposta definitiva.
No, finora nessuno mi ha segnalato una connessione PLIP funzionante
tra Linux e Windows 95. Se qualcuno ha successo nell'instaurare
questa connessione, me lo faccia sapere immediatamente: migliaia di
utilizzatori del PLIP aspettano questa notizia!
11. Domande? Commenti? Inviatemeli.
Per qualsiasi domanda e commento mi si pu� contattare via e-mail
all'indirizzo
[email protected].
Qualsiasi responso � benvenuto, qualsiasi segnalazione di errori �
preziosa. La release successiva avr� una sezione di FAQ ancora pi�
grande se mi inviate domande e, naturalmente, anche le risposte se le
trovate da soli.
Vi invito a non porre domande gi� presenti nella FAQ.
Se mi si deve chiedere aiuto, ci si assicuri di farmi sapere tutte le
informazioni che mi servono, tra cui, almeno, la versione del kernel,
i comandi usati, i messaggi d'errore, il cavo che si usa e qualsiasi
altro messaggio di sistema relativo al PLIP.
Si ricordi di non inviarmi domande sul PLIP con DOS/Windows
3.1/Windows 95, non posso aiutare. Queste domande dovrebbero essere
spedite a James Vahn
[email protected], che mi ha spedito
l'addendum sul DOS. Ancora: � inutile chiedere a lui o a me a
riguardo del PLIP con Windows 95.
12. Dove trovare le nuove versioni si questo mini HOWTO.
Questo mini HOWTO � mantenuto dai coordinatori degli HOWTO ed �
postato mensilmente su comp.os.linux.answers e pu� essere trovato
nella directory HOWTO a sunsite e nei suoi mirror.
Un altro modo per trovarlo (e per contattarmi) � attraverso la mia
Home Page,
http://www.cli.di.unipi.it/~controzz/intro.html (in italiano)
http://www.cli.di.unipi.it/~controzz/intro_e.html (in inglese).
13. Crediti.
Molti ringraziamenti a:
� Rick Lim <
[email protected]> per le patch per far
convivere PLIP e LP.
� Takeshi Okazaki <
[email protected]> per le patch per usare
PLIP e LP su due distinte porte parallele.
� Jim Van Zandt <
[email protected]> per alcuni avvisi sul
"tutorial" di questo HOWTO.
� Fernando Molina <
[email protected]> per gli utili commenti su IRQ e
Indirizzi IO.
� James Vahn <
[email protected]> per l'utile addendum al
capitolo sull'uso del PLIP tra DOS e Linux.
� A tutti gli utenti che hanno postato articoli relativi al PLIP nei
newsgroup di Linux e/o spediti a me. L'elenco di quanti mi hanno
aiutato con informazioni e commenti potrebbe essere lunga quanto il
mini HOWTO stesso: grazie a tutti!
14. Messaggio di Copyright (in inglese).
Unless otherwise stated, Linux HOWTO documents are copyrighted by
their respective authors. Linux HOWTO documents may be reproduced and
distributed in whole or in part, in any medium physical or electronic,
as long as this copyright notice is retained on all copies. Commercial
redistribution is allowed and encouraged; however, the author would
like to be notified of any such distributions.
All translations, derivative works, or aggregate works incorporating
any Linux HOWTO documents must be covered under this copyright notice.
That is, you may not produce a derivative work from a HOWTO and impose
additional restrictions on its distribution. Exceptions to these rules
may be granted under certain conditions; please contact the Linux
HOWTO coordinator at the address given below.
In short, we wish to promote dissemination of this information through
as many channels as possible. However, we do wish to retain copyright
on the HOWTO documents, and would like to be notified of any plans to
redistribute the HOWTOs.
If you have questions, please contact Greg Hankins, the Linux HOWTO
coordinator, at
[email protected] via email.