Netzwerken unter FreeDOS - NDIS Treiberinstallation
Übersicht
(Bild Übersicht über die NDIS Architektur)
Treiber, die auf der "Netzwerk Driver Interface Specification" (NDIS)
basieren, sind der Standard in der Windowswelt. Die aktuellste Version
ist NDIS6, 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 höchstwahrscheinlich, daß es für Ihre Netzwerkkarte einen
NDIS Treiber gibt. Schauen Sie auf den Installationsmedien Ihrer Karte
nach einem Verzeichnis "NDIS 2". Falls Sie keinen Treiber finden kön-
nen, schauen Sie doch mal auf diese Seite (vgl.: http://drivesnapshot.
de/en/makebootdisk.htm (*01)). Die Dateiendung des Treibernamens lautet
auf *.DOS, so heißt 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 können, ist der MAC Treiber nur eine
Komponente der NDIS Architektur. Laut NDIS 2.1 Dokumentation (vgl.:
http://www.ndis.com/faq/ndis201.txt (*02)) scheint NDIS in etwa wie
folgt zu funktionieren:
* Befehle in der CONFIG.SYS /FDCONFIG.SYS laden den Protokoll-
managertreiber PROTMAN.DOS, den MAC Treiber und den Protokoll-
treiber. Dies kann durch Befehlszeilen für jeden dieser Treiber
oder durch Starten des "Installable File System Helper" Treibers
(=installierbarer Dateisystemhelfer Treiber), der durch den Be-
fehl: "DEVICEHIGH=IFSHLP.SYS" geladen wird und den Protokoll-
manager, den MAC- und den Protokolltreiber gemäß Einträgen
in der PROTOCOL.INI startet.
* Der Protokollmanager liest die Konfiguration aus der PROTOCOL.INI
und macht sie für den MAC Treiber und den Protokolltreiber,
die nach ihm laden, verfügbar.
* Der MAC Treiber und der Protokolltreiber laden und konfigu-
rieren sich gemäß dieser Information selbst. Sie identifizieren
sich selbst beim Protokollmanager.
* Bevor der MAC Treiber und der Protokolltreiber miteinander
kommunizieren können, müssen 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 ausgelöst
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
auszuführen und den korrekten Aufruf der Treiber zu kontrollieren.
* Nachdem die Bindung stattgefunden hat, kommunizieren der MAC-
und der Protokolltreiber direkt miteinander. Der Protokollmanger
ist an diesem Kommunikationsprozess nicht mehr länger beteiligt,
deshalb befreit NETBIND.COM den größten Teil des zuvor vom
Protokollmanager reservierten Arbeitsspeichers.
Die Konfiguration von NDIS unter DOS hat sich im Laufe der Zeit mit
den verschiedenen Paketversionen geändert. Einige Hinweise über die
Unterschiede können Sie hier finden (vgl.: http://www.yale.edu/
pclt/WINWORLD/NDIS.HTM (*03)). In diesem Dokument ging ich davon aus,
daß wir die mit dem MS Client 3.0 gelieferten NDIS Dateien verwenden.
Da dieser Abschnitt ausschließlich darüber handelt, wie man pakettrei-
berbasierende TCP/IP Anwendungen unter DOS zum Laufen bekommt, werden
wir hier nicht tiefer in Details über den MS Client eingehen; dies
wird bereits an einer anderen Stelle behandelt.
Zusätzliche erforderliche Dateien
Wie können wir jetzt den NDIS 2 MAC Treiber, der mit unserer Netzwerk-
schnittstellenkarte geliefert wurde, für TCP/IP Netzwerken verwenden?
Wie wir aus obiger Beschreibung gelernt haben, benötigen wir einige zu-
sätzliche 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 (*04)
ftp://ftp.microsoft.com/bussys/Clients/MSCLIENT/DSK3-2.EXE (*05)
Die drei erwähnten 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 läßt sich nicht ausführen, 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 können jetzt diese drei
Dateien nehmen und verwenden.
Lesen Sie die LICENSE.TXT Datei, bevor Sie damit beginnen, die Dateien
zu verwenden. Die Software ist für eigene Zwecke frei. Weder Vertrieb
noch eine Modifikation sind erlaubt.
Der Konverter/Shim
Das letzte Stück, 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 (*06)) oder alternativ den etwas neueren (Version 11)
"DIS_PKT.DOS"(vgl.: http://danlan.com/pdr_shim/odipkt/odipkt.zip
(*07)). 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 glücklicherweise
diesen Treiber als Public Domain, frei für den Gebrauch, den Vertrieb,
Modifikation und mit Quellcode veröffentlicht hat.
Konfiguration der NDIS Treiber
Wie ich bereits erwähnte, ist dies nur eine minimale Installation des
MS Client 3.0. Der einzige Grund dafür 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 müssen wir die Konfigurationsdatei erstellen, die für die NDIS
Architektur benötigt wird. Erzeugen Sie eine Datei mit dem Namen
PROTOCOL.INI innerhalb des C:\NET Verzeichnisses. Für unsere minimale
Konfiguration benötigen wir nur folgende Zeilen:
--- PROTOCOL.INI ---
[protman]
DriverName=PROTMAN$
[EL3C574]
DriverName=EL3C574$
[PKTDRV]
drivername=PKTDRV$
bindings=EL3C574
intvec=0x60
chainvec=0x68
Erklärung 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 dazugehörige
Zeile sind zwingend vorgeschrieben.
[EL3C574]
DriverName=EL3C574$
Der Abschnitt [EL3C574]definiert die Netzwerkschnittstellenkarte.
Üblicherweise wird dieser Abschnitt nach der Karte selbst benannt - das
ist praktisch, wenn Sie mehr als eine Netzwerkkarte eingebaut haben
und verschiedene Abschnitte für verschiedene Karten verwenden.
Deshalb ist der Abschnittsname hier der erste zu verändernde Wert. Es
ist keine schlechte Idee, ihn nach Ihrer eigenen Netzwerkkarte zu be-
nennen. Aber Sie können ihn natürlich 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 nächste Zeile dieses Abschnitts ist "DriverName=EL3C574$". Sie
definiert den Treiber für 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 erwähnte Karte
verwenden. Sie werden deshalb diese Zeile ändern müssen. 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 können in diesem Abschnitt mehrere Zeilen einfügen, dadurch
können 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 Fällen sollte die
Zeile mit dem Treibernamen ausreichen.
[PKTDRV]
drivername=PKTDRV$
bindings=EL3C574
intvec=0x60
chainvec=0x68
Der nächste Abschnitt [PKTDRV] definiert unseren Pakettreiber-zu-NDIS-
Konverter, der "DIS_PKT.DOS" oder "DIS_PKT9.DOS" heißt. Beide werden
über den Namen "PKTDRV$" aufgerufen.
Es ist wichtig, daß der Konverter sich an den Treiber der Netzwerkkarte
bindet. Das geschieht durch die nächste Zeile "bindings=EL3C574". Bitte
beachten Sie, daß 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, müssten Sie hier
"bindings=baked_beans" schreiben.
Die Zeile "intvec" benennt den Softwareinterrupteinsprung, der von der
Pakettreiberschnittstelle verwendet wird. Wie bereits erwähnt, sollte
dies üblicherweise der Hexadezimalwert 0x60 sein.
Die Zeile "chainvec" definiert ebenfalls einen verfügbaren Software-
interrupt. Ihre Funktion ist für mich immer noch mysteriös. Lt.
dem Erfinder der Pakettreiber (vgl.: http://groups.google.de/group/
comp.protocols.tcp-ip.ibmpc/msg/17b6041f7a3cde7c?dmode=source (*08)),
FTP, kann ein "chain vector interrupt" die Ausführgeschwindigkeit und
Zuverlässigkeit verbessern. Benutzer meldeten "eine 10fache Steigerung
der Geschwindigkeit" (vgl.: http://groups.google.de/group/comp.
protocols.nfs/msg/9b0c2e0d6aa47b32?dmode=source (*09)).
Um EMM386-Fehler zu vermeiden empfehlen einige, einen Interrupt zu
setzen, der den Vektor um Dezimal 8 erhöht. (vgl.: http://groups.
google.de/group/bit.listserv.banyan-l/msg/aa961def5901f506?dmode=source
(*10)). 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 (*11)).
Bitte informieren Sie mich, wenn Sie mehr darüber wissen.
Das sind alle Einstellungen in der PROTOCOL.INI, die wir für unsere
Zwecke benötigen. Ein letzter Hinweis: Wenn Sie beabsichtigen, einige
dieser Werte bei jedem Neustart, wie zum Beispiel über ein DOS Boot-
menü, zu verändern, könnte Horst Schäffer's Freeware "Inifile" für
Sie nützlich sein (vgl.: http://www.horstmuc.de/wbat32.htm (*12)).
Installation
Die letzte Sache, die jetzt noch zu erledigen ist, ist die Treiber
beim Booten zu laden. Ändern 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, das 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 können, 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)
(*01) Der Link existiert noch, siehe auch:
https://web.archive.org/web/20220516143745/http://drivesnapshot.de/
en/makebootdisk.htm
(alles in EINER ZEILE, KEINE Leerzeichen!)
(*02) Der Link existiert nicht mehr, neuer Link:
https://web.archive.org/web/20030327055531/http://www.ndis.com/faq/
(*03) Der Link existiert nicht mehr, neuer Link:
https://web.archive.org/web/20100901143311/http://www.yale.
edu/pclt/WINWORLD/NDIS.HTM
(alles in EINER ZEILE, KEINE Leerzeichen!)
(*04) Der Link existiert nicht mehr, neuer Link:
https://www.virtualbox.org/wiki/Sharing_files_with_DOS
UND:
https://archive.org/download/ftp.microsoft.com/ftp.microsoft.
com.zip/ftp.microsoft.com%2Fbussys%2FClients%2FMSCLIENT%2FDSK3-1.EXE
(alles in EINER ZEILE, KEINE Leerzeichen!)
(*05) Der Link existiert nicht mehr, neuer Link:
https://archive.org/download/ftp.microsoft.com/ftp.microsoft.
com.zip/ftp.microsoft.com%2Fbussys%2FClients%2FMSCLIENT%2FDSK3-2.EXE
(alles in EINER ZEILE, KEINE Leerzeichen!)
UND:
https://www.virtualbox.org/wiki/Sharing_files_with_DOS
UND:
http://download.amd.com/techdownloads/wfw31.zip
UND:
https://archive.org/download/ftp.microsoft.com/ftp.microsoft.
com.zip/ftp.microsoft.com%2FSoftlib%2FMSLFILES%2FWG1049.EXE
(alles in EINER ZEILE, KEINE Leerzeichen!)
UND:
https://archive.org/download/ftp.microsoft.com/ftp.microsoft.
com.zip/ftp.microsoft.com%2FSoftlib%2FMSLFILES%2FNETSHAR.EXE
(alles in EINER ZEILE, KEINE Leerzeichen!)
UND:
https://jeffpar.github.io/kbarchive/kb/121/Q121086/
UND:
https://jeffpar.github.io/kbarchive/kb/128/Q128800/
(*06) Der Link existiert nicht mehr, neuer Link:
http://ftp.cc.umanitoba.ca/software/pc_network/dis_pkt9.zip
(*07) Der Link existiert nicht mehr, neuer Link:
https://web.archive.org/web/20110722171549/http://www.danlan.com/
(*08) Der Link existiert nicht mehr, neuer Link:
https://groups.google.com/forum/#!topic/comp.os.ms-windows.
networking.tcp-ip/Ekxg5Y5pP0g
(alles in EINER ZEILE, KEINE Leerzeichen!)
(*09) Der Link existiert nicht mehr, neuer Link:
https://groups.google.com/forum/#!original/comp.protocols.
nfs/Xe1WnbPu0og/Mnukag0uDJsJ
(alles in EINER ZEILE, KEINE Leerzeichen!)
(*10) Der Link existiert nicht mehr, neuer Link:
https://groups.google.com/forum/#!original/bit.listserv.
banyan-l/v6HiU41jovQ/BvUBWe8dlqoJ
(alles in EINER ZEILE, KEINE Leerzeichen!)
(*11) Der Link existiert nicht mehr, neuer Link:
https://web.archive.org/web/20100902235959/http://groups.google.de/
group/comp.protocols.tcp-ip.ibmpc/msg/64f2b6060ff2b438?dmode=source
(alles in EINER ZEILE, KEINE Leerzeichen!)
(*12) Der Link existiert nicht mehr, neuer Link:
https://www.horstmuc.de/div.htm#inifile
Copyright © 2007 Ulrich Hansen, Mainz (Germany), 2011, 2020
und 2024 von W. Spiegl an die FreeDOS-Hilfe angepasst.
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.2 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 1.2".