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 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 höchstwahrscheinlich, daß es für Ihre Netzwerkkarte einen
  NDIS Treiber gibt. Schauen Sie auf den Installationsmedien Ihrer Karte
  nach einem Verzeichnis "NDIS2". 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 FDCONFIG.SYS (FreeDOS) oder der CONFIG.SYS (andere
      DOS) laden den Protokollmanagertreiber PROTMAN.DOS, den MAC Treiber
      und den Protokolltreiber. Dies kann durch Befehlszeilen für 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 gemäß Ein-
      trägen in der PROTOCOL.INI startet.
    * Der Protokollmanager liest die Konfiguration aus der PROTOCOL.INI
      und macht sie für den MAC Treiber und die 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 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
      auszuführen 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 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 diese Abteilung nur darüber abhandelt, wie man pakettreiberbasie-
  rende TCP/IP Anwendungen hoch- und mit DOS zum Laufen bekommt, werden
  wir hier nicht tiefer in Details über den MS Client eingehen, dies
  wird bereits in einer anderen Abteilung behandelt.

Zusätzliche Dateien erforderlich

  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. Üb-
  licherweise 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-
  menue, 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, daß 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) OK
  (*02) https://web.archive.org/web/20030327055531/http://
        www.ndis.com/faq/
  (*03) https://web.archive.org/web/20100901143311/http://www.yale.
        edu/pclt/WINWORLD/NDIS.HTM
  (*04) 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
  (*05) 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-2.
        EXE
        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
        und: https://archive.org/download/ftp.microsoft.com/ftp.microsoft.
        com.zip/ftp.microsoft.com%2FSoftlib%2FMSLFILES%2FNETSHAR.EXE
        und: https://jeffpar.github.io/kbarchive/kb/121/Q121086/
        und: https://jeffpar.github.io/kbarchive/kb/128/Q128800/
  (*06) OK
  (*07) https://web.archive.org/web/20110722171549/http://
        www.danlan.com/
  (*08) https://groups.google.com/forum/#!topic/comp.os.ms-windows.
        networking.tcp-ip/Ekxg5Y5pP0g
  (*09) https://groups.google.com/forum/#!original/comp.protocols.
        nfs/Xe1WnbPu0og/Mnukag0uDJsJ
  (*10) https://groups.google.com/forum/#!original/bit.listserv.
        banyan-l/v6HiU41jovQ/BvUBWe8dlqoJ
  (*11) https://groups.google.com/forum/#!original/comp.protocols
        .tcp-ip.ibmpc/-/OLTyDwa28mQJ
  (*12) https://www.horstmuc.de/div.htm#inifile

  Copyright © 2007 Ulrich Hansen, Mainz (Germany), 2011 und 2020
  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.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".