# 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.

#### [Hauptseite] [oben] [Wo man sie] [Wie sie arbeiten] [Zus. Dat.] [Konverter] [Config] [Install]

## 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".

#### [Hauptseite] [oben] (Wo man sie) [Wie sie arbeiten] [Zus. Dat.] [Konverter] [Config] [Install]

## 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.

#### [Hauptseite] [oben] [Wo man sie] (Wie sie arbeiten) [Zus. Dat.] [Konverter] [Config] [Install]

## 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.

#### [Hauptseite] [oben] [Wo man sie] [Wie sie arbeiten] (Zus. Dat.) [Konverter] [Config] [Install]

## 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.

#### [Hauptseite] [oben] [Wo man sie] [Wie sie arbeiten] [Zus. Dat.] (Konverter) [Config] [Install]

## 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).

#### [Hauptseite] [oben] [Wo man sie] [Wie sie arbeiten] [Zus. Dat.] [Konverter] (Config) [Install]

## 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)

#### [Hauptseite] [oben] [Wo man sie] [Wie sie arbeiten] [Zus. Dat.] [Konverter] [Config] (Install)

      Copyright © 2007 Ulrich Hansen, Mainz (Germany), 2010 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"