LINUX PLIP MINI-HOWTO

Andrea Controzzi, controzz@cli.di.unipi.it 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 ).

Indice

1 Introduzione: cos’è il PLIP e perché dovrei usarlo? 2 2 Hardware richiesto per usare PLIP. 3 3 Riconfigurare il kernel. 3 4 Messaggi del kernel sull’interfaccia PLIP. 5 5 Impostare i file di configurazione. 5 6 Attivare la connessione PLIP. 6 7 FAQ (Filza di Assilli Quotidiani). 9 8 Patch per far convivere PLIP e LP. 12

8.1 PLIP e LP assieme sulla stessa porta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 8.2 PLIP e LP su porte diverse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

9 Una connessione PLIP tra DOS e Linux. 13 9.1 Connessione DOS-Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 9.2 Una esperienza di connessione PLIP tra DOS e Linux. . . . . . . . . . . . . . . . . . . . . . . 14

10 PLIP tra Linux e Windows 95. 18 11 Domande? Commenti? Inviatemeli. 18 12 Dove trovare le nuove versioni si questo mini HOWTO. 18 13 Crediti. 18 14 Messaggio di Copyright (in inglese). 19 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: controzz@cli.di.unipi.it. 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 gniibe@mri.co.jp
     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 NET-WORK=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 precendenza 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 6 (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 gniibe@mri.co.jp
          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 <mcduffie@scsn.net> 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 <jvahn@short.circuit.com>

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 <jvahn@short.circuit.com> . 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...

<gniibe@mri.co.jp> 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 gniibe@mri.co.jp
     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 controzz@cli.di.unipi.it .

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 jvahn@short.circuit.com , 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 <ricklim@freenet.vancouver.bc.ca> per le patch per far convivere PLIP e LP.

• Takeshi Okazaki <GBA03552@niftyserve.or.jp> per le patch per usare PLIP e LP su due distinte porte parallele.

• Jim Van Zandt <jrv@vanzandt.mv.com> per alcuni avvisi sul "tutorial" di questo HOWTO.

• Fernando Molina <fmolina@nexo.es> per gli utili commenti su IRQ e Indirizzi IO.

• James Vahn <jvahn@short.circuit.com> 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 linux-howto@sunsite.unc.edu via email.