|
URL: http://www.netzadmin.org/netzwerk/windows/netzwerk-dos.htm |
| Dies ist ein Gastbeitrag von Gerd Röthig. Er beschreibt wie man unter MS-DOS ein Netzwerk einrichten kann. |
|
Mit der wachsenden Popularität von Netzwerken - jetzt auch im Heimbereich - und sinkenden Preisen für Netzwerkhardware kommt immer öfter der Wunsch auf, auch ältere Rechner in vorhandene Netzwerke einzubinden. Da für diese Rechner oft kein moderneres Betriebssystem als DOS in Frage
kommt, und dieses Betriebssystem für viele Anwendungen auch heute noch
ausreicht, möchte man es nur wegen der fehlenden Netzwerkfunktionen nicht
ersetzen. Der folgende Text soll beschreiben, wie man ein TCP/IP-Netzwerk unter DOS einrichtet.
1. Benötigte SoftwareDa DOS selbst keine Netzwerkfunktionalität bereitstellt, muß diese mittels externer Software nachgerüstet werden. Microsoft hat zu diesem Zweck das »MS Workgroup Addon« für MS-DOS geschaffen, das auch unter der Bezeichnung »MS- Client« bekannt ist und eine Version des MS-Lanmanagers darstellt. Man bekommt diese Software unter ftp://ftp.microsoft.com/bussys/Clients/MSCLIENT/ als selbstentpackende Archive.
Diese beiden Dateien sind in zwei getrennte Verzeichnisse (Beispiel C:\MSCLIENT\DISK1 und C:\MSCLIENT\DISK2) zu entpacken. Weiterhin wird die Datei NNET.EXE aus dem Verzeichnis ftp://ftp.microsoft.com/Softlib/MSLFILES/ bzw. WG1049.EXE aus dem Verzeichnis ftp://ftp.microsoft.com/Softlib/MSLFILES/ benötigt, wenn man auf dem DOS-Rechner Netzlaufwerke freigeben will. Sollten mit NNET.EXE Probleme beim Drucken auftreten, sollte stattdessen WG1049.EXE verwendet werden. Da die TCP/IP-Unterstützung sehr viel Speicher benötigt (größter Treiber über 78 kB) empfieht es sich noch, einige Tools zur Einsparung von konventionellem Speicher einzusetzen und für alle unter DOS benötigten Geräte die Treiber mit dem geringsten Speicherverbrauch einzusetzen. Wer für die Verbindung zu dem DOS-Rechner nicht unbedingt TCP/IP benötigt, sollte stattdessen das »IPX/SPX compatible protocol« ausprobieren, das vom Installationsprogramm standardmäßig vorgeschlagen wird. Die Unterstützung für dieses Protokoll benötigt deutlich weniger Arbeitsspeicher und Konfigurationsaufwand. Im einzelnen probierte ich folgende Tools zur Speicheroptimierung aus:
Weiterhin setzte ich folgende Treiber mit minimalem Speicherverbrauch ein:
2. Die Installation2.1. Speicher optimieren, erster TeilZunächst schafft man sich also ein Maximum an freiem DOS-Speicher durch Einsatz speichersparender Treiber oder Weglassen von nicht benötigten Treibern. Treiber für CD-ROM-Laufwerke sind für ihren Speicherhunger bekannt, hinzu kommen dann immer noch mal reichlich 20 kB für MSCDEX.EXE, so daß man sich überlegen sollte, die CD-Treiber nicht zu laden, wenn man das Netzwerk nutzen will. Eine platzsparende Alternative zu MSCDEX.EXE bietet das schon erwähnte FreeDOS-Projekt (http://www.freedos.org/). Die Auswahl der Konfigurationen kann über ein in der CONFIG.SYS einzurichtendes Startmenü vorgenommen werden.Um den Speicher für das Hochladen von Treibern verwenden zu können, benötigt man EMM386.EXE oder einen vergleichbaren Speichermanager wie QEMM von Quarterdeck oder 386MAX. Mit dem DOS-Tool MSD.EXE kann man sich den freien Speicher anzeigen lassen (Menüpunkt "Memory"), alles, was schwarz dargestellt wird, kann im allgemeinen genutzt werden. Außerdem erhält man so die Werte für den I= Parameter, mit dem EMM386.EXE in der CONFIG.SYS aufgerufen wird.
Allerdings muß man hierfür etwas rechnen. Ein Kästchen in der Anzeige von MSD entspricht 1024 Bytes; eine Reihe sind demnach 16384 Bytes oder 16 kB. Allerdings hat man bei den Adreßangaben eine Zehnerstelle weggelassen; pro Kästchen muß man also zu der links stehenden Zahl 40hex hinzuzählen. Ein Hexadezimalrechner ist an dieser Stelle recht hilfreich. Im oben gezeigten Beispiel erhalte ich also einen freien Bereich von CD00-EFFF und von B700 bis B7FF. Ab dieser Adresse wird Speicher von der Grafikkarte eingeblendet, ein Ausdehnen des von EMM386 zu nutzenden Speichers auf Adressen im Bereich von B800-BFFF wird meist zum Absturz des Rechners, zumindest aber zu Darstellungsfehlern auf dem Bildschirm, führen. An dieser Stelle wird unter DOS ein Teil des VGA-Bildschirmspeichers eingeblendet. Meine Zeile für die CONFIG.SYS lautet also DEVICE=C:\DOS\EMM386.EXE NOEMS NOVCPI I=B700-B7FF I=CD00-EFFF Wichtig ist die Großschreibung, da EMM386 sonst oft nicht richtig funktioniert. Ebenfalls sollte die Option NOEMS angegeben werden, da sonst 64 kB für den sog. "EMS-Seitenrahmen" (Page Frame) verloren gehen. Die allermeisten Programme funktionieren mit XMS, so daß EMS abgeschaltet bleiben kann. Als weitere Maßnahme räume ich etwas konventionellen Speicher frei, indem mit DOSMAX/SHELLMAX Teile des Systems in den "hohen Speicher" verlagert werden: DEVICE=C:\UT\DOSMAX\DOSMAX.EXE /c+ /p- shell=c:\ut\dosmax\shellmax.com c:\command.com /p und DEVICEHIGH /L:1 =C:\WINDOWS\IFSHLP.SYS Dieser Treiber wird bei Windows für Workgroups mitgeliefert und für den MS-Client zwingend benötigt. Er ist auch beim MS-Client enthalten. DEVICEHIGH /L:1 =C:\DOS\KEYBGR.SYS Ein kleiner deutscher Tastaturtreiber, der statt der über 6 kB der KEYB.COM von MS-DOS nur knapp 400 Bytes benötigt. Zu finden ist er beispielsweise hier. Man beachte die Option /L:1 nach DEVICEHIGH, die DOS veranlaßt, diese Treiber in den ersten freien Bereich des "hohen Speichers" zu laden (im Beispiel der Bereich zwischen B000-B7FF). Auf diese Weise kann ich mir den Bereich zwischen CD00-EFFF für die großen Brocken frei halten. 2.2. Der MS-ClientAls nächstes wird nun der MS-Client installiert. Dazu sollte man sich vorher
vergewissern, daß man die DOS- oder Windows-3.11-Treiber für seine
Netzwerkkarte parat hat, und sich das Verzeichnis aufschreiben, in dem sie auf
der Treiberdiskette abgespeichert wurden. In diesem Verzeichnis sollte eine
Datei mit Endung .DOS (der eigentliche Treiber) und eine Datei
OEMSETUP.INF (Installationsinformation - siehe unten) existieren. [MS$NE2000] IOBASE=0x320 INTERRUPT=11 nach Abschluß der Installation. Anschließend fragt das Setup nach der "OEM Driver Disk". Das ist nun nicht etwa noch mal die zur Netzwerkkarte mitgelieferte Diskette, sondern die zweite des MS-Clients, die man zuvor beispielsweise nach C:\MSCLIENT\DISK2 entpackt hat. Dieses Verzeichnis muß hier angegeben werden. Nachdem alle Dateien kopiert wurden, folgt der
Einstellungsdialog, der in zwei Fenster aufgeteilt ist, zwischen denen man mit
<TAB> wechselt. Im oberen Fenster wählt man mit den Cursortasten aus, was
bearbeitet werden soll, im unteren, was gemacht werden soll ("Change
Configuration"). [TCPIP] NBSessions=6 DefaultGateway0=192 168 0 1 SubNetMask0=255 255 255 0 IPAddress0=192 168 0 2 DisableDHCP=1 DriverName=TCPIP$ BINDINGS=MS$NE2000 LANABASE=0 Man beachte, daß die Adressen nicht durch Punkte, sondern durch Leerzeichen getrennt werden. An dieser Stelle läßt sich die IP-Adresse auch ohne größeren Aufwand schnell ändern. Konnte der TCP/IP-Stack erfolgreich geladen werden, stehen jetzt die üblichen Netzwerkfunktionen zur Verfügung, die man sich am besten mit NET HELP | MORE; detailliertere Hilfe mit NET (Befehl) ? zum jeweiligen Befehl ansieht. Mit NET VIEW sollten sich beispielsweise die Freigaben der anderen Rechner im Netz anzeigen lassen. 2.3. Speicher optimieren, zweiter TeilWenn man mit geladenem TCP/IP den freien Speicher mit MEM/C/P anzeigen läßt, bekommt man meist erst mal einen Schreck.
Glücklicherweise kann man das Ganze noch etwas optimieren, indem man viele der
Treiber hochlädt. @echo off REM *** Informationen fuer Entladen des Clients speichern *** C:\TSR\MARKNET.EXE /Q C:\TSR\SYSTEM.MRK REM *** DOS-TCP/IP-Stack laden *** LH /L:2 C:\NET\NET INITIALIZE C:\NET\netbind.com LH /L:1 C:\NET\umb.com LH /L:2 C:\NET\tcptsr.exe LH C:\NET\tinyrfc.exe LH C:\NET\nmtsr.exe C:\NET\emsbfr.exe Man beachte wiederum die Aufteilung auf die beiden Speicherbereiche; einige der Treiber
suchen sich selbst ihr Plätzchen und bedürfen keiner Sonderbehandlung.
Gleiches trifft auf den Maustreiber CTMOUSE.COM zu, bei dessen Aufruf sogar das "LH"
weggelassen werden kann. @echo off REM *** Informationen fuer Entladen des Clients speichern *** C:\TSR\MARKNET.EXE /Q C:\TSR\SYSTEM.MRK REM *** DOS-TCP/IP-Stack laden *** LH /L:2 C:\NET\NET INIT C:\NET\netbind.com LH /L:2 C:\NET\tcptsr.exe LH C:\NET\tinyrfc.exe LH C:\NET\nmtsr.exe Bisher ergaben sich mit dieser Konfiguration keine Probleme. 3.1. Freigaben oder DOS als ServerWenn man auf dem DOS-Rechner Laufwerke, Verzeichnisse oder Drucker freigeben will, benötigt man die schon weiter oben erwähnten Dateien NNET.EXE oder WG1049.EXE Diese enthalten eine aktualisierte Version von NET.EXE. Man entpackt NNET.EXE in das Verzeichnis, in das der MS-Client installiert wurde und überschreibt damit die Originalversion von NET.EXE und NET.MSG. Falls es es Probleme mit dem Drucken im Netz gibt, sollte man statt NNET.EXE WG1049.EXE einsetzen. Als nächstes ist die SYSTEM.INI zu editieren: FileSharing=Yes PrintSharing=Yes Mit dem Programm NETSHARE aus dem Archiv NETSHAR.EXE, das problemlos ins Verzeichnis des Clients (z.B. C:\NET) entpackt werden kann, lassen sich nun die Freigaben einrichten; <TAB> schaltet hierzu zwischen den einzelnen Eingabefeldern um. Selbstverständlich lassen sich die Freigaben auch innerhalb von Batchdateien oder auf der Kommandozeile einrichten; hierfür steht der Befehl net share zur Verfügung. Mit net share DOSC=c:\user gibt man dann beispielsweise das Verzeichnis C:\user mit Vollzugriff frei, es wird im Netz unter DOSC sichtbar. Andere Rechner können dann beispielsweise mit net use g: \\dos-rechner\dosc darauf zugreifen. Die Freigaben lassen sich mit net share freigabe /delete /yes auch wieder aufheben. 3.2. Netzwerkfunktionen nutzenDazu steht folgendes in der AUTOEXEC.BAT oder (wie bei mir) der separaten NETSTART.BAT: c:\net\net.exe time \\der_kleine /set /yes > nul Damit wird die Zeit auf dem DOS-Client mit einem anderen Rechner synchronisiert. Um Fehler durch abweichende Systemuhren zu vermeiden, sollte man dauerhaft vernetzte Rechner regelmäßig (beispielsweise einmal täglich) miteinander synchronisieren. Außerdem erfolgt dann die Sommer-/Winterzeitumstellung automatisch :) . LH c:\DOS\SHARE.EXE > nul Auf diese Art und Weise wird die für die Freigabe von Laufwerken auf dem DOS-Rechner unerläßliche SHARE.EXE geladen. c:\net\net.exe share /yes Damit werden die mit NETSHAR eingestellten Freigaben aktiviert. c:\net\net use lpt1: \\printserver\hpdeskjet /persistent:no /yes c:\net\net use lpt2: \\printserver\hplaser /persistent:no /yes Verbindung von Netzlaufwerken: c:\net\net use f: \\der_kleine\c /persistent:no /yes c:\net\net use g: \\der_kleine\d /persistent:no /yes c:\net\net use h: \\schreiber\c /persistent:no /yes c:\net\net use i: \\schreiber\d /persistent:no /yes Wird das Netzwerk nicht mehr benötigt, kann der MS-Client komplett wieder entladen werden (vielen Dank für diesen Hinweis an Ralf Buschmann <ralf@backmagic.de>). Bei mir heißt diese Datei NETSTOP.BAT: @echo off echo Netzwerkverbindung wird getrennt...bitte warten. c:\net\net stop /yes > nul REM *** MS-Client aus dem Speicher entfernen *** C:\TSR\RELNET.EXE /H /R /Q C:\TSR\SYSTEM.MRK Die beiden Programme MARKNET und RELNET sind Bestandteil der TSR-Utilities (siehe "Tools zur Speicheroptimierung"). Das ZIP-Archiv mit den TSR-Utilities wird einfach mit md c:\tsr pkunzip tsrcom35.zip c:\tsr in ein separates Verzeichnis auf der Festplatte entpackt, eine besondere Installation ist nicht notwendig. Damit kann man den MS-Client rückstandsfrei wieder aus dem Speicher entfernen, auch Windows läßt sich hernach problemlos starten. Eine Funktionsgarantie kann nicht gegeben werden; in jedem Falle sollte die nach dem Eintpacken der TSR-Utilities vorliegende Datei TSR.DOC (keine WinWord-Datei, sondern normaler ASCII-Text) gelesen werden, da sie viele nützliche Hinweise enthält. Da Windows (getestet mit 3.11 für Workgroups) nach Beenden den Speicher leider nicht in dem Zustand verläßt, wie es ihn vorgefunden hat, funktioniert das anschließende Aufrufen des MS-Clients nicht immer. Als Abhilfe wird auch Windows über eine Batchdatei gestartet: C:\TSR\MARKNET.EXE /Q C:\TSR\WIN.MRK REM Falls man mal Parameter mitgeben möchte... WIN %1 %2 C:\TSR\RELNET.EXE /H /R /Q C:\TSR\WIN.MRK Damit ist ein problemloses Umschalten zwischen Windows und DOS, beide mit voller Netzwerkunterstützung, möglich. ACHTUNG: Überhaupt sollte man sich immer um einen aktuellen Treiber für die Netzwerkkarte bemühen. Hilfestellung geben die Downloadseiten der jeweiligen Hersteller oder Suchseiten wie http://www.drivershq.com/, http://www.treiber.de/, http://www.driverguide.com/. Ein weiteres Beispiel für den Einsatz der TSR-Utilities findet sich auf http://www.backmagic.de/support/techtalk/preboot.htm Viele Leute möchten TCP/IP auch unter dem bei Windows 95/98 mitgelieferten DOS nutzen. Für dieses DOS ist die Einrichtung des Clients die gleiche wie unter MS-DOS 6.22, mit einigen kleineren Besonderheiten. 4.1. Probleme mit der DOS-VersionDiese Probleme bekommt man vor allem mit SHARE.EXE. Diese Datei muß von einer älteren DOS-Version besorgt werden, da sie bei Windows 95/98 nicht mehr enthalten ist. SHARE.EXE von DOS 6.22 läuft aber nicht ohne weiteres unter DOS 7; man muß dem Programm zunächst mit SETVER SHARE.EXE 6.22 ein DOS 6.22 vorgaukeln. DEVICEHIGH /L:1 =C:\WINDOWS\SETVER.EXE geladen werden. In der Windows-Standardeinstellung (DOS=AUTO) wird SETVER übrigens immer mit geladen, man sollte also testen, ob man nicht auch ohne diesen Eintrag auskommt. Die übrige Konfiguration entspricht der weiter oben beschriebenen mit der Ausnahme, daß ab Windows 95 B kein SHELLMAX mehr benötigt wird. Das Betriebssystem lädt COMMAND.COM von sich aus in den »hohen Speicher«. 4.2. Die grafische Windows-OberflächeAuf einen Start der grafischen Oberfläche von Windows 95/98 sollte nach dem Laden
des MS-Clients möglichst verzichtet werden, da der Client sich nicht mit der Windows-eigenen
Netzwerkunterstützung verträgt. Auch die für den Client notwendigen Maßnahmen zur
Speicheroptimierung sind für Windows 95/98 nicht notwendig oder sogar gefährlich.
Empfehlenswert ist deshalb also immer ein Neustart des Rechners vor dem Laden der
Windows-Oberfläche. 4.3. Auswahl verschiedener KonfigurationsmöglichkeitenWer beim Start des Rechners die Auswahl zwischen verschiedenen Konfigurationen haben möchte (mit/ohne Netzwerk) hat unter Windows 95/98 verschiedene Möglichkeiten der Realisierung: 4.3.1. Starten von MS-DOS 6.xDazu schreibt man in die C:\MSDOS.SYS nach Aufhebung ihres Schreibschutzes unter [Options] BootMenu=1 BootMulti=1 und kopiert vom alten DOS die Dateien IO.SYS, MSDOS.SYS und COMMAND.COM nach C:\, wichtig ist aber, die Endungen der Dateien auf .DOS zu ändern. Beispiel: copy A:\COMMAND.COM C:\COMMAND.DOS Jetzt kann man in einem Startmenü "Vorherige MS-DOS-Version" wählen und nach dem Starten von DOS auch eine CONFIG.SYS und AUTOEXEC.BAT erstellen, die Windows-Dateien werden dabei nicht überschrieben. Vorsicht Bug! Manche Windows95-Versionen benötigen hierfür einen Patch, sonst
läßt sich der Rechner nach einem DOS-Start nicht mehr neu booten. copy A:\IO.SYS C:\IBMBIO.COM copy A:\MSDOS.SYS C:\IBMDOS.COM Die akzeptiert W95 problemlos als "alte DOS-Version". 4.3.2. Programm für den MS-DOS-Modus konfigurierenAlternativ kann man auch unter Windows 95 eine Verknüpfung zu einem DOS-
Programm anlegen, es für den DOS-Modus konfigurieren ("Eigenschaften" des
Programms; rechte Maustaste, dort Registerkarte Erweitert) und ihm seine eigene
CONFIG.SYS und AUTOEXEC.BAT geben. 4.3.3. DOS-StartmenüWie unter MS-DOS 6.22 läßt sich auch unter Windows 95/98 ein Startmenü in der CONFIG.SYS anlegen, um den Rechner mit verschiedenen Konfigurationen zu starten. Dazu editiert man die Datei C:\MSDOS.SYS, deren Schreibschutz man vorher aufgehoben hat, und fügt unter [Options] folgendes ein: BootGui=0 In der CONFIG.SYS steht dann beispielsweise: [Menu] Menuitem=Normal, Normal Menuitem=Netz, Netz Menudefault=Normal, 10 [Normal] [Netz] DEVICE=C:\WINDOWS\HIMEM.SYS /testmem:off DEVICE=C:\DOS\EMM386.EXE NOEMS NOVCPI I=B000-B7FF I=C800-F7FF INSTALL=c:\ut\memstrat\memstrat.exe 4 DEVICE=C:\UT\DOSMAX\DOSMAX.EXE /c+ /p- DEVICE=C:\WINDOWS\SMARTDRV.EXE /DOUBLE_BUFFER DEVICEHIGH /L:1 =C:\WINDOWS\IFSHLP.SYS DEVICEHIGH /L:1 =C:\DOS\KEYBGR.SYS shell=c:\ut\dosmax\shellmax.com c:\command.com /p SET PATH=C:\WINDOWS;c:\;c:\windows\system;C:\NET;C:\DOS;C:\UT In der AUTOEXEC.BAT steht zum Beispiel: @ECHO OFF goto %CONFIG% :Netz REM *** DOS-TCP/IP-Stack laden *** LH /L:2 C:\NET\NET INITIALIZE C:\NET\netbind.com LH /L:1 C:\NET\umb.com LH /L:2 C:\NET\tcptsr.exe LH C:\NET\tinyrfc.exe LH C:\NET\nmtsr.exe C:\NET\emsbfr.exe C:\NET\net start c:\mouse\ctmouse /r55 c:\ut\memstrat\memstrat 1 goto end :Normal win :end Eine ähnliche Konfiguration mit dem MS-Client unter DOS 6.22 läuft hier nun schon seit vielen Monaten ohne Störungen. Als wesentliche Nachteile sind neben den Speicherproblemen unter DOS vor allem vergleichsweise geringe Performance bei Dateitransfers und dem Drucken ins Netzwerk zu nennen. 5. Eine Beispiel-OEMSETUP.INFAuf vielen moderneren Netzwerktreiber-Disketten findet man zwar noch den DOS-Netzwerkkartentreiber (eine Datei mit Endung .DOS), allerdings fehlt dann die passende OEMSETUP.INF, damit dieser Treiber vom Setup des MS-Clients gefunden werden kann. Da sich die betreffenden Dateien sehr ähneln, kann man eine OEMSETUP.INF einer anderen Netzwerkkarte entsprechend anpassen, zum Beispiel diese hier: ;; DOS-Netzwerkclient ;; OEMSETUP.INF für SURECOM EP-312V Ethernet Adapter [disks] ; Das ist die Bezeichnung der Diskette, frei wählbar 1=.,"SURECOM EP-312V Ethernet Adapter WFW Driver Disk", disk1 [netcard] ; key = description, MSID, type, media, mode, install, protini, style EP312="SURECOM EP-312V Ethernet Adapter",0,ndis,ethernet,0x07,EP312,EP312_nif [EP312] ;Auf diesen Dateinamen kommt es an, ggfs. entsprechend ersetzen! ndis2=1:EP312.dos [EP312_nif] ;Die im Setup anwählbaren Einstellungen für die Kartev DriverName=EP312$ io=IOBASE,,text,"0x240,0x280,0x2C0,0x300,0x320,0x340,0x360",0x300 irq=INTERRUPT,,text,"3,4,5,9,10,11,12,15",5 param=PNPID,"PNPID (0=First PNP adapter found)",chars,14,0 param=EARLYRECEIVE,"Early Receive (0=Disable,1=Enable)",text,"0,1","0" param=EARLYTRANSMIT,"Early Transmit (0=Disable,1=Enable)",text,"0,1","0" param=FULLDUPLEX,"Full Duplex (0=Disable,1=Enable)",text,"0,1","0" |