Netzwerken unter FreeDOS - NDIS Treiberinstallation
Uebersicht
(Bild Uebersicht ueber die NDIS Architektur)
Treiber, die auf der "Netzwerk Driver Interface Specification" (NDIS)
basieren, sind der Standard in der Windowswelt. Die aktuellste Version
ist NDIS 6, welches unter Windows Vista verwendet wird. Windows 98
verwendete NDIS 5, Windows 95 wurde mit NDIS 3.1 geliefert. Unter DOS
haben Sie den Real-Mode Treiber NDIS 2.
Wo man sie findet
Es ist hoechstwahrscheinlich, dass es fuer Ihre Netzwerkkarte einen
NDIS Treiber gibt. Schauen Sie auf den Installationsmedien Ihrer Karte
nach einem Verzeichnis "NDIS2". Falls Sie keinen Treiber finden koen-
nen, schauen Sie doch mal auf diese Seite (vgl.: http://drivesnapshot.
de/en/makebootdisk.htm). Die Dateiendung des Treibernamens lautet auf
*.DOS, so heisst zum Beispiel der Treiber der 3Com 3C574 PC-Karte
"EL3C574.DOS".
Wie sie arbeiten
In der Sprache der NDIS Architektur werden diese Treiber "Media Access
Control" (MAC) Treiber genannt.
Wie Sie in dem Bild oben sehen koennen, ist der MAC Treiber nur eine
Komponente der NDIS Architektur. Laut NDIS 2.1 Dokumentation (vgl.:
http://www.ndis.com/faq/ndis201.txt) scheint NDIS in etwa wie folgt
zu funktionieren:
* Befehle in der FDCONFIG.SYS (FreeDOS) oder der CONFIG.SYS (andere
DOS) laden den Protokollmanagertreiber PROTMAN.DOS, den MAC Treiber
und den Protokolltreiber. Dies kann durch Befehlszeilen fuer jeden
dieser Treiber oder durch Starten des "Installable File System
Helper" Treibers (=installierbarer Dateisystemhelfer Treiber), der
durch den Befehl: "DEVICEHIGH=IFSHLP.SYS" gestartet wird und den
Protokollmanager, den MAC- und den Protokolltreiber gemaess Ein-
traegen in der PROTOCOL.INI startet.
* Der Protokollmanager liest die Konfiguration aus der PROTOCOL.INI
und macht sie fuer den MAC Treiber und die Protokolltreiber,
die nach ihm laden, verfuegbar.
* Der MAC Treiber und der Protokolltreiber laden und konfigu-
rieren sich gemaess dieser Information selbst. Sie identifizieren
sich selbst beim Protokollmanager.
* Bevor der MAC Treiber und der Protokolltreiber miteinander
kommunizieren koennen, muessen Sie aneinander gebunden werden,
damit sie gegeneinander bei ihren "Eintrittspunkten" (Kommuni-
kationsports) Zugang haben. Dieser Verbindungsprozess wird vom
Protokollmanager auf Basis der Information in der PROTOCOL.INI
kontrolliert.
* Die Bindesequenz kann von NET.EXE oder NETBIND.COM angesteuert
werden (was in der AUTOEXEC.BAT erledigt werden kann).
* Der Protokollmanager (PROTMAN.DOS) startet dann das speicher-
residente Programm (TSR = terminate and Stay Resident = beende
und bleibe im Speicher resident) PROTMAN.EXE um den Bindebefehl
auszufuehren und den korrekten Aufruf der Treiber zu kontrollieren.
* Nachdem die Bindung stattgefunden hat, kommunizieren die MAC-
und die Protokolltreiber direkt miteinander. Der Protokollmanger
ist an diesem Kommunikationsprozess nicht mehr laenger beteiligt,
deshalb befreit NETBIND.COM den groessten Teil des zuvor vom
Protokollmanager reservierten Arbeitsspeichers.
Die Konfiguration von NDIS unter DOS hat sich im Laufe der Zeit mit
den verschiedenen Paketversionen geaendert. Einige Hinweise ueber die
Unterschiede koennen Sie hier finden (vgl.: http://www.yale.edu/
pclt/WINWORLD/NDIS.HTM). In diesem Dokument ging ich davon aus, dass
wir die mit dem MS Client 3.0 gelieferten NDIS Dateien verwenden.
Da diese Abteilung nur darueber abhandelt, wie man pakettreiberbasie-
rende TCP/IP Anwendungen hoch- und mit DOS zum Laufen bekommt, werden
wir hier nicht tiefer in Details ueber den MS Client eingehen, dies
wird bereits in einer anderen Abteilung behandelt.
Zusaetzliche Dateien erforderlich
Wie koennen wir jetzt den NDIS 2 MAC Treiber, der mit unserer Netzwerk-
schnittstellenkarte geliefert wurde, fuer TCP/IP Netzwerken verwenden?
Wie wir aus obiger Beschreibung gelernt haben, benoetigen wir einige zu-
saetzliche Dateien. Diese sind:
* Der Protokollmanager ("PROTMAN.DOS" und "PROTMAN.EXE")
* Das Binde-Utility ("NETBIND.COM")
Diese Dateien sind Teil des MS Client 3.0, der hier heruntergeladen
werden kann:
ftp://ftp.microsoft.com/bussys/Clients/MSCLIENT/DSK3-1.EXE
ftp://ftp.microsoft.com/bussys/Clients/MSCLIENT/DSK3-2.EXE
Die drei erwaehnten Teile sind Teil der "DSK3-1.EXE". Verwenden Sie das
Utility "EXPAND.EXE", das mit der ersten Diskette mitgeliefert wird, um
diese Dateien zu entpacken.
* Kopieren Sie DSK3-1.EXE in ein Verzeichnis wie z.B.: C:\MSCLIENT1.
Vermeiden Sie lange Pfade, wie Sie sie vielleicht unter Windows ver-
wenden. 16 Bit Software laesst sich nicht ausfuehren, wenn der Pfad
zu lang ist.
* Tippen Sie DSK3-1.EXE, um ihren Inhalt zu entpacken.
* Entkomprimieren Sie PROTMAN.DO_ und PROTMAN.EX_ wie folgt:
expand -r protman.do_
expand -r protman.ex_
* NETBIND.COM ist bereits entpackt. Sie koennen jetzt diese drei
Dateien nehmen und verwenden.
Lesen Sie die LICENSE.TXT Datei, bevor Sie damit beginnen, die Dateien
zu verwenden. Die Software ist fuer eigene Zwecke frei. Weder Vertrieb
noch eine Modifikation sind erlaubt.
Der Konverter/Shim
Das letzte Stueck, das wir noch brauchen, ist der "Packet Driver to
NDIS Konverter". Besorgen Sie sich den oft verwendeten "DIS_PKT9.DOS"
(Version 9, vgl.: ftp://ftp.cc.umanitoba.ca/software/pc_network/
dis_pkt9.zip) oder alternativ den etwas neueren (Version 11)
"DIS_PKT.DOS"(vgl.: http://danlan.com/pdr_shim/odipkt/odipkt.zip).
Im Gebrauch und der Bedienung bestehen keine Unterschiede.
Beide wurden von Prof. Joe R. Doupnik (Utah State University) und Dan
Lanciani (Harvard University) geschrieben. Das Urheberrecht wird von der
nunmehr historischen FTP Software, Inc. gehalten, die gluecklicherweise
diesen Treiber als Public Domain, frei fuer den Gebrauch, den Vertrieb,
Modifikation und mit Quellcode veroeffentlicht hat.
Konfiguration der NDIS Treiber
Wie ich bereits erwaehnte, ist dies nur eine minimale Installation des
MS Client 3.0. Der einzige Grund dafuer ist, pakettreiberbasierende
TCP/IP Anwendungen zu verwenden. Dazu kopieren Sie die vier Dateien:
PROTMAN.DOS
PROTMAN.EXE
NETBIND.COM
DIS_PKT.DOS
in ein Verzeichnis, zum Beispiel:
C:\NET
Kopieren Sie auch den MAC Treiber Ihrer Netzwerkschnittstellenkarte,
z.B.:
EL3C574.DOS
in dieses Verzeichnis.
Jetzt muessen wir die Konfigurationsdatei erstellen, die fuer die NDIS
Architektur benoetigt wird. Erzeugen Sie eine Datei mit dem Namen
PROTOCOL.INI innerhalb des C:\NET Verzeichnisses. Fuer unsere minimale
Konfiguration benoetigen wir nur folgende Zeilen:
--- PROTOCOL.INI ---
[protman]
DriverName=PROTMAN$
[EL3C574]
DriverName=EL3C574$
[PKTDRV]
drivername=PKTDRV$
bindings=EL3C574
intvec=0x60
chainvec=0x68
Erklaerung der Parameter:
Wie andere *.ini Dateien ist die PROTOCOL.INI in Sektionsnamen, die in
eckigen Klammern stehen, und in Beschreibungsnamen mit zugeordneten
Werten aufgeteilt.
[protman]
DriverName=PROTMAN$
Dieser Abschnitt [protman] definiert den Protokollmanager. Wie oben
beschrieben, wird der Protokollmanager als Treiber PROTMAN.DOS geladen,
der hier "PROTMAN$" genannt wird. Der Abschnitt und die dazugehoerige
Zeile sind zwingend vorgeschrieben.
[EL3C574]
DriverName=EL3C574$
Der Abschnitt [EL3C574]definiert die Netzwerkschnittstellenkarte. Ueb-
licherweise wird dieser Abschnitt nach der Karte selbst benannt - das
ist praktisch, wenn Sie mehr als eine Netzwerkkarte eingebaut haben
und verschiedene Abschnitte fuer verschiedene Karten verwenden.
Deshalb ist der Abschnittsname hier der erste zu veraendernde Wert. Es
ist keine schlechte Idee, ihn nach Ihrer eigenen Netzwerkkarte zu be-
nennen. Aber Sie koennen ihn natuerlich genausogut "Netzwerkkarte",
"NIC" oder auch "baked_beans" benennen, solange Sie auch alle Zeilen in
der PROTOCOL.INI, die sich auf diesen Abschnitt beziehen, entsprechend
umbenennen.
Die naechste Zeile dieses Abschnitts ist "DriverName=EL3C574$". Sie
definiert den Treiber fuer die Netzwerkschnittstellenkarte. In unserem
Beispiel ist das EL3C574.DOS, der hier "EL3C574$" genannt wird. In der
Regel werden Sie eine andere NIC als die im Beispiel erwaehnte Karte
verwenden. Sie werden deshalb diese Zeile aendern muessen. Sie sollten
den richtigen Namen des Treibers in einer Textdatei namens "PROTOCOL.
INI" finden, die als Teil der NDIS-Treiber Dateien mit Ihrer Karte mit-
geliefert wird.
Sie koennen in diesem Abschnitt mehrere Zeilen einfuegen, dadurch
koennen Sie spezielle Einstellungen Ihrer Netzwerkkarte definieren.
Weitere Informationen finden Sie dazu in der "PROTOCOL.INI", die mit
Ihren NDIS-Treibern geliefert wurden. Aber in vielen Faellen sollte die
Zeile mit dem Treibernamen ausreichen.
[PKTDRV]
drivername=PKTDRV$
bindings=EL3C574
intvec=0x60
chainvec=0x68
Der naechste Abschnitt [PKTDRV] definiert unseren Pakettreiber-zu-NDIS-
Konverter, der "DIS_PKT.DOS" oder "DIS_PKT9.DOS" heisst. Beide werden
ueber den Namen "PKTDRV$" aufgerufen.
Es ist wichtig, dass der Konverter sich an den Treiber der Netzwerkkarte
bindet. Das geschieht durch die naechste Zeile "bindings=EL3C574". Bitte
beachten Sie, dass dieser Name kein "$" Zeichen beinhaltet - er
bezieht sich auf den Abschnittsnamen, der den Treiber definiert, nicht
auf den Treiber selbst. Wenn Sie also diesen Abschnitt "[baked_beans]"
wie oben vorgeschlagen haben, muessten Sie hier
"bindings=baked_beans" schreiben ;-).
Die Zeile "intvec" benennt den Softwareinterrupteinsprung, der von der
Pakettreiberschnittstelle verwendet wird. Wie bereits erwaehnt, sollte
dies ueblicherweise der Hexadezimalwert 0x60 sein.
Die Zeile "chainvec" definiert ebenfalls einen verfuegbaren Software-
interrupt. Ihre Funktion ist fuer mich immer noch mysterioes. Lt.
dem Erfinder der Pakettreiber (vgl.: http://groups.google.de/group/
comp.protocols.tcp-ip.ibmpc/msg/17b6041f7a3cde7c?dmode=source), FTP,
kann ein "chain vector interrupt" die Ausfuehrgeschwindigkeit und Zuver-
laessigkeit verbessern. Benutzer meldeten "eine 10fache Steigerung der
Geschwindigkeit" (vgl.: http://groups.google.de/group/comp.protocols.
nfs/msg/9b0c2e0d6aa47b32?dmode=source). Um EMM386-Fehler zu vermei-
den empfehlen einige, einen Interrupt zu setzen, der den Vektor um
Dezimal 8 erhoeht. (vgl.: http://groups.google.de/group/bit.listserv.
banyan-l/msg/aa961def5901f506?dmode=source). Wenn also der intvec
0x60 (was dezimal 96 bedeutet) ist, sollte der chainvec dezimal
104 (96+8) sein, was hexadezimal 0x68 ist. Das wird auch von einem der
Autoren von DIS_PKT.DOS, Dan Lanciani, so beschrieben. (vgl.: http://
groups.google.de/group/comp.protocols.tcp-ip.ibmpc/msg/
64f2b6060ff2b438?dmode=source).
Bitte informieren Sie mich, wenn Sie mehr darueber wissen.
Das sind alle Einstellungen in der PROTOCOL.INI, die wir fuer unsere
Zwecke benoetigen. Ein letzter Hinweis: Wenn Sie beabsichtigen, einige
dieser Werte bei jedem Neustart, wie zum Beispiel ueber ein DOS Boot-
menue, zu veraendern, koennte Horst Schaeffer's Freeware "Inifile" fuer
Sie nuetzlich sein (vgl.: http://www.horstmuc.de/wbat32.htm).
Installation
Die letzte Sache, die jetzt noch zu erledigen ist, ist die Treiber
beim Booten zu laden. Aendern Sie deshalb Ihre Systemdateien, damit
sie folgende Zeilen enthalten:
--- FDCONFIG.SYS (FreeDOS) ---
--- or CONFIG.SYS (MS DOS/anderes DOS) ---
DEVICEHIGH=C:\NET\PROTMAN.DOS /I:C:\NET
DEVICEHIGH=C:\NET\EL3C574.DOS
DEVICEHIGH=C:\NET\DIS_PKT.DOS
Der "/I" Parameter teilt dem Protokollmanager die Lage der PROTOCOL.INI
mit. Das ist nicht notwendig, wenn beide im gleichen Verzeichnis liegen.
--- AUTOEXEC.BAT ---
C:\NET\NETBIND.COM
Bitte beachten Sie, dass NETBIND.COM nicht hochgeladen werden kann und
direkt von der AUTOEXEC.BAT aus aufgerufen werden sollte. Wenn Sie ver-
suchen, ihn wie einen Treiber zu laden, wird er mit der Meldung "run-
time error R6009 - not enough space for environment" abbrechen.
Neustart (reboot)
So, das wars.
Das Beste was Sie jetzt tun koennen, ist, das System neu zu starten und
eine einfache TCP/IP Anwendung wie ping zu verwenden, um zu testen, ob
alles funktioniert.
(Bild: Bootmeldungen von NDIS)
Copyright © 2007 Ulrich Hansen, Mainz (Germany), 2011 an die
FreeDOS-Hilfe angepasst von W.Spiegl.
Weitergehende Informationen finden Sie hier.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
any later version published by the Free Software Foundation.
A copy of the license is included in the section entitled
"GNU Free Documentation License"