Na de eerste uitgave van deze Mini-HowTo schreven veel mensen om info over een koppeling tussen een Linux en DOS (of Windows) computer. Deze algemene belangstelling leidde tot het toevoegen van dit hoofdstuk. Ik hoop dat het voor iedereen helpt.
Deze sectie is afkomstig van een artikel dat ik vond in de Linux Gazette en het is geschreven door James McDuffie <mcduffie@scsn.net> . Het gaat over de basisinstallatie van een PLIP koppeling tussen een Linux en een DOS-computer met behulp van Windows en Trumpet WinSock en het geeft het adres van een gaaf programma waarmee je X-Window programma's onder Windows kunt uitvoeren.
De laatste sectie is een addendum ingezonden door James Vahn jvahn@short.circuit.com waarin hij uitvoerig beschrijft hoe deze koppeling in te stellen en hoe veel problemen kunnen worden opgelost.
Neem alsjeblieft voor vragen over dit hoofstuk met hem contact op, niet met mij.
Ik veronderstel dat je aan de Linux kant reeds PLIP ondersteuning hebt ingesteld en dat je de juiste kabel hebt, keer anders terug naar vorige hoofdstukken.
Nu voor de DOS-kant, je hebt als eerste een packet driver nodig. Die is hier te vinden:
ftp://ftp.crynwr.com/drivers/plip.zip
Het programma draait onder DOS en fungeert als een Ethernet Packet driver. Als je PLIP met Windows wilt gebruiken, heb je ook een Trumpet Winsock nodig. Dit dient als de TCP/IP interface. Anders kun je waarschijnlijk TCP/IP software voor DOS vinden.
Ga nu terug naar de Linux-computer en voeg aan /etc/hosts het adres van de DOS-computer toe. Als je DOS-computer geen geregistreerd IP-adres heeft, kun je ieder adres kiezen (denk aan de waarschuwing in hoofdstuk 3 betreft IP-adressen).
Stel dat je voor de Linux computer de naam linux koos en voor de DOS-computer de naam dos. Dan tik je in:
ifconfig plip1 linux pointopoint dos arp up
route add dos
Natuurlijk wil je dat dit iedere keer wordt gedaan wanneer je de linux computer boot. Hiervoor kun je de volgende regels toevoegen aan /etc/rc.d/rc.inet1:
/sbin/ifconfig plip1 linux pointopoint dos arp up /sbin/route add dos
Hiermee wordt de interface ingesteld en er een route naar toegevoegd. Natuurlijk moet je plip2 schrijven als je de tweede parallelle poort gebruikt.
Ga terug naar de DOS/Windows computer en wijzig autoexec.bat, je moet hierin de volgende regels toevoegen.
c:\plip\plip.com 0x60 c:\tcpip\winsock\winpkt.com 0x60
Natuurlijk ga ik ervan uit dat je plip.com (de packet driver) in de directory c:/plip plaatst en de winpkt.com in c:/tcpip, anders moet je het juiste pad instellen.
Hiermee wordt het plip.com programma ingesteld op packet vector 0x60 en vervolgens het winpkt.com programma geladen dat met trumpet winsock op dezelfde vector komt. Als de kabel anders is dan lpt1 dan zal je plip.com het irq-nummer en io-adres op moeten geven. Ook moet winpkt worden uitgevoerd om de packet vector beschikbaar te maken voor Windows. Vanaf hier gaan we door de feitelijke setup onder Trumpet Winsock Het enige wat je hoeft te doen is SLIP of PPP deselecteren en 60 invulllen in de box gelabeld Packet vector. Vertel het dan het IP-adres dat je het gaf, het IP-adres van de Linux-computer als ook de standaardgateway en de name server of als het ip van je computer of het adres van de name servers van je ISP als je van plan bent een verbinding te maken met het Internet. (hierover later meer). Sluit de setup af en start Winsock opnieuw op en dat zou het moeten zijn! Plaats winsock in je opstartgroep en je hebt alles automatisch ingesteld!
Als je op de Windows-computer via de Linux-computer toegang wilt tot het Internet, zal je IP-Masquerading in moeten stellen. Zie de NET-2-HOWTO voor info hierover. Hiermee wordt de Windows computer eenvoudigweg gemaskerd met het IP-adres van je Linux-computer.
Ik heb ook een programma gevonden waarmee je X-Window programma's onder Windows kunt draaien! Het is te vinden op:
Stel het overeenkomstig de aanwijzingen in dan hoef je alleen via telnet vanaf de Windows computer contact te maken, het display in te stellen naar de Windows computer (bijvoorbeeld `DISPLAY=duncan:0.0`) en het gewenste programma uit te voeren. Er is niets gaver dan xv onder Windows draaien! Ik hoop dat je hier wat aan hebt.
OPMERKING: Ik ontving dit document van James Vahn jvahn@short.circuit.com. Ik plaats het hier zonder wijzigingen. Dit betekent dat hij voor eventuele vragen over deze sectie veel beter is gekwalificeerd dan ik, dus mail hem alsjeblieft in plaats van mij Zijn ervaring met een PLIP-verbinding op een DOS computer met slechts een diskettestation naar een Linux computer is het perfecte voorbeeld van hoe oplossingen te zoeken voor algemene problemen.
Laatst bijgewerkt 11 juli 1996
Mijn DOS box met alleen een diskettestation is via een PLIP netwerk verbonden met de tweede printerpoort op de Linux computer. Op de eerste Linux printerpoort is een printer aangesloten, beiden zijn permanent verbonden en vanaf de DOS box log ik in via telnet op Linux. Hier volgen mijn aantekeningen wat ik heb gedaan om dit te bewerkstelligen.
Wanneer de kernel printerpoorten tracht op te sporen, zal het ze allen opvangen, tenzij je dit voorkomt. Anders krijgt PLIP niets. Een methode is de drivers als modules te laden wanneer ze nodig zijn...
<gniibe@mri.co.jp> schrijft:
Ik hou het er bij je aan te raden van PLIP/LP als kernelmodule gebruik te maken, aangezien
Met PLIP/LP als kernelmodule, kun je opgeven welke poort PLIP is en welke poort LP. Hier is een voorbeeld:
# insmod lp.o io=0x378
# insmod plip.o io=0x278 irq=2
Je kunt zelfs twee parallelle poorten gebruiken:
# insmod plip.o io=0x278,0x3bc irq=2,5
In het voorbeeld hierboven,
is plip0 toegewezen aan 0x278 en het irq is 2,
is plip1 toegewezen aan 0x3bc en het irq is 5.
Het gebruik van modules is beslist de manier om van start te gaan. De volgende methode geeft aan hoe een patch op de kernel toe te passen waardoor het mogelijk wordt zowel een printer als PLIP op verschillende poorten beschikbaar te hebben zonder dat hiervoor modules nodig zijn. Als je niet bekend bent met het concept module, vind je dit wellicht een snellere manier om het in te stellen.
Je zal twee bestanden in de kernelsource structuur moeten aanpassen. Ik gebruik kernel 1.2.13 en vond een aantal wijzigingen die nodig waren in ../linux/drivers/net/Space.c om mijn systeem van te voorzien. Zoek naar regel 295 voor de PLIP definities om er zeker van te zijn dat je poort en IRQ overeenkomen, en maak een notitie van welke driver het zal zijn (plip0, plip1, plip2). In mijn geval poort 0x278 met IRQ 5 (de kaart is zo gejumperd) maar Space.c definieerde het met IRQ 2. Ik wijzigde het hierin, in plaats van de box te openen en de jumpers te verzetten. Het alternatief is het later opgeven van het IRQ aan ifconfig, maar de kernel zal dan met het onjuiste IRQ voor PLIP opstarten en wellicht dat 't je ergert. Het is een eenvoudige (uit 1 teken bestaande) wijziging.
De volgende, moeilijkere stap:
In .../drivers/char/lp.c vind je ongeveer op regel 38 het volgende:
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
Let op de te maken wijzigingen- van één poort is een commentaarregel gemaakt, dus nu zijn er slechts 2 poorten gedefinieerd. Poort 0x3BC zal met PLIP waarschijnlijk niet werken - de IRQ lijn is op deze poorten meestal niet goed, zoals geconstateerd op oude monochrome adapters (MDA).
Je hebt toch wel backups gemaakt van dit bestand voordat je het wijzigde? Configureer het systeem. Dit is mijn /etc/rc.d/rc.inet1 bestand: Maak nu een nieuwe kernel met printer, net, dummy en plip ondersteuning.
#!/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
Voor de DOS-naar-Linux connectie werd gebruik gemaakt van arp, blijkbaar niet gebruikt op Linux-naar-Linux connecties.
En in /etc/hosts kun je het volgende toevoegen, gewoon om de twee computers een naam te geven:
200.0.0.1 console1 200.0.0.2 console2
De DOS box is console2. Denk aan Andrea's waarschuwing betreft de IP-adressen, het is beter gebruik te maken van de officiële nummeringsschema's.
Herstart het systeem zodat alle wijzigingen en de nieuwe kernel effect hebben. Tijdens de bootsequence (of door het uitvoeren van dmesg) zie je als je de patches toepaste of anders wanneer de modules zijn geladen:
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.
De opdracht "route" geeft dit te zien:
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
En "ifconfig plip1" laat zien:
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
Kijk in /etc/inetd.conf om te zien of telnet is geactiveerd. Wellicht dat je de man page voor tcpd wilt lezen, en het gebruik van /etc/hosts.allow (ALL: LOCAL) en /etc/hosts.deny (ALL: ALL). Je zou de opdracht "telnet localhost" moeten kunnen toepassen.
Linux is klaar, nu nog de DOS-kant. Nogmaals, wees achterdochtig betreft poort 0x3BC als deze aanwezig is.
Ik gebruik NCSA's telnet en Crynwr's PLIP driver die ik op deze sites aantrof:
ftp://ftp.ncsa.uiuc.edu/Telnet/DOS/ncsa/tel2308b.zip
ftp://ftp.crynwr.com/drivers/plip.zip
Wees er zeker van NCSA's versie 2.3.08 telnet en versie 11.1 van Crynwr's PLIP driver te gebruiken. Zoek naar en lees alsjeblieft Crynwr's SUPPORT.DOC dat elders is te vinden.
Het CONFIG.TEL bestand. Het meeste ervan is de standaard en om wat ruimte te besparen heb ik geprobeerd het hier in te krimpen om je (hopelijk) slechts de info te geven die je nodig hebt. De tweede poort op deze computer is ingesteld op 0x278 en IRQ 5.
myip=200.0.0.2 netmask=255.255.255.0 # subnetting mask hardware=packet # netwerk adapterkaart (packet driver interface) interrupt=5 # IRQ waarop de adapter is ingesteld ioaddr=60 # software interrupt vector driver dat het gebruikt # #[...veel ongewijzigd...] # # plaats aan het einde van het bestand deze regel: name=console1 ; hostip=200.0.0.1 ; nameserver=1 ; gateway=1
(console1 is de naam van de Linux computer, je kunt gebruiken wat je wilt)
Ik maakte voor tussen beiden computers een null-kabel van 12 foot, en (nadat ik in beginsel erachter kwam dat het niet goed was bedraad) ontstonden er geen problemen. Een standaard 11-draads null printerkabel zou ook moeten werken. In de Linux plip.c broncode wordt de bedrading aangegeven. Alhoewel mijn kabel de 17-17 connectie heeft, denk ik niet dat het ergens voor wordt gebruikt en het was op een kant-en-klare kabel niet aanwezig.
@echo off plip.com 0x60 5 0x278 telbin -s console1
Hiermee zou de verbinding met de Linux box via /dev/ttyp tot stand moeten zijn gebracht. NCSA's telnet voorziet in 8 virtuele schermen en fungeert ook als een ftp-server. De PLIP interface levert een redelijke doorvoer, ik krijg met mijn antiquiteiten een bestandstransport van 6.5K/s. Laten we hopen dat het jou beter afgaat. :-)