Mise en réseau de FreeDOS - installation du pilote NDIS

Vue d'ensemble

    (Image : Vue d'ensemble de l'architecture NDIS)
  Les pilotes fondés sur la "Network Driver Interface Specification"
  (NDIS) sont utilisés par défaut dans le monde Windows. La version la
  plus récente est NDIS 6 qui est utilisé dans Windows Vista.
  Windows 98 utilisait NDIS 5, Windows 95 était fourni avec NDIS 3.1.
  Sous DOS vous devez utiliser le pilote en mode réel NDIS2.

Où les trouver

  Il est fort probable qu'un pilote NDIS existe pour votre carte réseau.
  Cherchez un répertoire appelé "NDIS2" dans les fichiers d'installation
  de votre carte. Si vous ne trouvez pas de pilote, jetez un coup d'oeil
  à site : (voyez : http://drivesnapshot.de/en/makebootdisk.htm (*01)).
  L'extension du nom du pilote doit être *.DOS, donc par exemple le
  pilote 3Com 3C574 PC-Card est appelé "EL3C574.DOS".

Comment ils fonctionnent

  Dans le jargon de l'architecture NDIS, ces pilotes sont appelés les
  pilotes "Media Access Control" (MAC).
  Le pilote MAC n'est qu'un composant de l'architecture NDIS comme vous
  pouvez le voir sur l'image ci-dessus. Selon la documentation de NDIS
  2.1 (voyez : http://www.ndis.com/faq/ndis201.txt (*02)) NDIS semble
  fonctionner ainsi :
    * Les commandes de FDCONFIG.SYS (FreeDOS) ou CONFIG.SYS (autres DOS)
      chargent le gestionnaire de protocole PROTMAN.DOS, le pilote MAC et
      le pilote de protocole. Cela peut être effectué par des lignes pour
      chacun de ces pilotes ou en commençant le pilote "Installable File
      System Helper" qui est chargé par "DEVICEHIGH=IFSHLP.SYS" et qui
      démarre le gestionnaire de protocole ainsi que les pilotes MAC
      et de protocole selon PROTOCOL.INI.
    * Le gestionnaire de protocole lit la configuration depuis
      PROTOCOL.INI et la rend accessible aux pilotes MAC et de protocole
      qui se chargent ensuite.
    * Les pilotes MAC et de protocole  se chargent et se configurent
      selon ces informations. Ils s'identifient auprès du gestionnaire de
      protocole.
    * Avant que les pilotes MAC et de protocole puissent communiquer,
      ils doivent être liés ensemble pour pouvoir accéder aux "points
      d'entrée" l'un de l'autre (c'est-à-dire aux ports de
      communication).
      Ce processus de liaison est contrôlé par le gestionnaire de
      protocole en se fondant sur les informations contenues dans
      PROTOCOL.INI.
    * La séquence de liaison peut être déclenchée par NET.EXE ou
      NETBIND.COM (ce qui peut être fait dans AUTOEXEC.BAT).
    * Le gestionnaire de protocole (PROTMAN.DOS) démarre alors le
      programme résident en mémoire (Terminate and Stay Resident - TSR)
      PROTMAN.EXE pour exécuter la commande de liaison et pour contrôler
      le bon ordre des pilotes.
    * Après que la liaison ait été effectuée, les pilotes MAC et
      de protocole communiquent directement l'un avec l'autre. Le
      gestionnaire de protocole n'intervient plus dans ce processus de
      communication, donc NETBIND.COM libère la plupart de la mémoire
      précédemment réservée par le gestionnaire de protocole.
  La configuration de NDIS sous DOS a changé au fil du temps avec les
  différentes versions du paquet. Quelques indications sur les
  différences peuvent être trouvées ici
  (voyez : http://www.yale.edu/pclt/WINWORLD/NDIS.HTM (*03)). Dans
  ce document, je considère que nous utilisons les fichiers NDIS livrés
  avec le client MS 3.0.
  Comme cette section est consacrée à l'utilisation des applications
  TCP/IP fondées sur les pilotes de paquets sous DOS nous n'irons pas
  dans les détails au sujet du client MS ici, cela est déjà expliqué
  ailleurs.

Fichiers additionnels nécessaires

  Alors comment pouvons-nous utiliser le pilote MAC NDIS2 qui a été
  livré avec notre carte d'interface réseau pour la mise en réseau
  TCP/IP ? Comme nous l'avons appris de la description ci-dessus, nous
  avons besoin de fichiers additionnels. Il s'agit de :
    * Le gestionnaire de protocole ("PROTMAN.DOS" et "PROTMAN.EXE")
    * L'utilitaire de liaison ("NETBIND.COM")
  Ces fichiers font partie du client MS 3.0 qui peut être téléchargé ici:
    ftp://ftp.microsoft.com/bussys/Clients/MSCLIENT/DSK3-1.EXE (*04)
    ftp://ftp.microsoft.com/bussys/Clients/MSCLIENT/DSK3-2.EXE (*05)
  Les trois fichiers mentionnés font partie de "DSK3-1.EXE". Utilisez
  l'utilitaire "EXPAND.EXE" inclus sur le premier disque pour
  décompresser ces fichiers.
    * Copiez DSK3-1.EXE vers un répertoire comme C:\MSCLIENT1. Évitez un
      chemin long si vous faites cela sous Windows. Les logiciels
      16-bit ne s'exécuteront pas si le chemin est trop long.
    * Lancez DSK3-1.EXE pour décompresser ses contenus.
    * Décompressez PROTMAN.DO_ et PROTMAN.EX_.

  expand -r protman.do_
  expand -r protman.ex_

    * NETBIND.COM est déjà décompressé. Vous pouvez maintenant prendre
      et utiliser les trois fichiers.
  Lisez le fichier LICENSE.TXT avant de commencer à utiliser ces
  fichiers. Le logiciel peut être utilisé gratuitement pour un usage
  interne. Ni la distribution ni les modifications ne sont permises.

Le convertisseur/shim

  La dernière pièce dont nous avons besoin est le "Convertisseur
  pilote de paquets vers NDIS". Obtenez "DIS_PKT9.DOS" qui est largement
  utilisé (version 9, cf. ftp://ftp.cc.umanitoba.ca/software/pc_network/
  dis_pkt9.zip (*06)) ou alternativement utilisez la version 11
  légérement plus récente "DIS_PKT.DOS" (voyez : http://danlan.com/
  pdr_shim/odipkt/odipkt.zip/ (*07)).
  Il n'y a aucune différence dans leur utilisation et gestion. Les deux
  ont été écrits par le Prof. Joe R. Doupnik (Université d'État de
  l'Utah) et Dan Lanciani (Université de Harvard). Le copyright est
  détenu par le désormais historique FTP Software, Inc., qui a
  heureusement publié ce pilote dans le domaine public, libre
  d'utilisation, de distribution, de modification et avec le code source.

Configuration des pilotes NDIS

  Comme j'en ai déjà fait état, c'est simplement une installation
  minimale du client MS 3.0. Le seul but est d'utiliser les applications
  TCP/IP fondées sur les pilotes de paquets. Dans ce but :
    Copiez les quatre fichiers
      PROTMAN.DOS
      PROTMAN.EXE
      NETBIND.COM
      DIS_PKT.DOS
  dans un répertoire, par exemple C:\NET.
  Copiez aussi le pilote MAC de votre carte d'interface réseau,
  par exemple :
      EL3C574.DOS
  dans ce répertoire.
  Nous devons maintenant créer le fichier de configuration nécessaire
  pour l'architecture NDIS : Créez un fichier avec le nom PROTOCOL.INI
  dans le dossier C:\NET. Pour notre configuration minimale, il n'aura
  besoin que des lignes suivantes :
      --- PROTOCOL.INI ---
      [protman]
      DriverName=PROTMAN$
      [EL3C574]
      DriverName=EL3C574$
      [PKTDRV]
      drivername=PKTDRV$
      bindings=EL3C574
      intvec=0x60
      chainvec=0x68
  Explication des paramtères :
  Tout comme d'autres fichiers *.ini, PROTOCOL.INI est structuré en
  noms de section entre crochets et en nom d'éléments avec des valeurs
  qui leur sont attribuées.
    [protman]
    DriverName=PROTMAN$
  La première section [protman] définit le gestionnaire de protocole.
  Comme décrit ci-dessus, le gestionnaire de protocole est chargé en
  tant que pilote PROTMAN.DOS qui est appelé "PROTMAN$" ici. La section
  et la ligne sont obligatoires.
    [EL3C574]
    DriverName=EL3C574$
  La section [EL3C574] définit la carte d'interface réseau. Par défaut
  la section elle-même est nommée d'après la carte - c'est utile, si
  vous avez plus d'une carte réseau et utilisez différentes sections
  pour différentes cartes.
  Donc le nom de section est la première valeur à être modifiée ici. Ce
  serait une bonne idée de le nommer d'après votre propre carte réseau.
  Mais vous pouvez nommer la section "netcard", "NIC" ou même
  "yaourt_cuit" - ce que vous voulez, tant que vous modifiez toutes les
  autres lignes qui pointent vers cette section dans PROTOCOL.INI.
  La prochaine ligne de cette section est "DriverName=EL3C574$". Elle
  définit le pilote pour la carte d'interface réseau. Dans notre exemple,
  c'est EL3C574.DOS, qui est appelé "EL3C574$" ici. Très certainement
  vous utiliserez une carte différente que celle mentionnée dans
  l'exemple. Donc vous devrez modifier cette ligne. Vous trouverez le
  nom correct du pilote dans un fichier textuel appelé "PROTOCOL.INI"
  qui devrait faire partie des fichiers de pilote NDIS fournis avec
  votre carte.
  Il est également possible d'ajouter plus de lignes à cette section
  pour définir des réglages spéciaux pour votre carte réseau. Consultez
  "PROTOCOL.INI"fourni avec votre pilote NDIS pour plus d'informations.
  Mais dans de nombreux cas la ligne avec le nom du pilote devrait être
  suffisant.
    [PKTDRV]
    drivername=PKTDRV$
    bindings=EL3C574
    intvec=0x60
    chainvec=0x68
  La section suivante "[PKTDRV]" definit notre convertisseur pilote de
  paquets vers NDIS qui est "DIS_PKT.DOS" ou "DIS_PKT9.DOS". Tous les
  deux sont appelés par le nom "PKTDRV$".
  Il est important que le convertisseur se lie au pilote de la carte
  réseau.
  Cela est effectué par la prochaine ligne "bindings=EL3C574". Veuillez
  noter que ce nom ne comprend PAS de lettre "$" - il fait référence
  au nom de la section qui définit le pilote, pas au pilote lui-même.
  Donc si vous aviez appelé cette section "[yaourt_cuit]" comme suggéré
  plus haut, vous devriez écrire "bindings=yaourt_cuit" ici ;-).
  L'élément "intvec" spécifie le vecteur d'interruption du logiciel
  utilisé par l'interface du pilote de paquets. Comme déjà expliqué, cela
  devrait être la valeur hexadécimale 0x60 par défaut.
  L'élément "chainvec" définit aussi une interruption logicielle
  disponible. Sa fonction est encore un mystère pour moi. Selon
  l'inventeur du pilote de paquets (cf. http://groups.google.de/group/
  comp.protocols.tcp-ip.ibmpc/msg/17b6041f7a3cde7c?dmode=source (*08))
  FTP, l'ajout d'une "chain vector interrupt" peut améliorer la vitesse
  et la fiabilité du traitement des paquets.
  Les utilisateurs ont vu "une amélioration de 10 fois de la performance"
  (cf. http://groups.google.de/group/comp.protocols.nfs/msg/9b0c2e0d
  6aa47b32?dmode=source (*09)). Pour éviter les erreurs EMM386 certaines
  personnes conseillent (voyez : http://groups.google.de/group/
  bit.listserv.banyan-l/msg/aa961def5901f506?dmode=source (*10)) de
  définir une interruption qui augmente le vecteur de 8 décimales. Donc
  si le intvec est 0x60 (c'est le décimal 96), alors le chainvec devrait
  être le décimal 104 (96+8), ce qui est l'hexadécimal 0x68. C'est
  décrit (cf. http://groups.google.de/group/comp.protocols.tcp-ip.ibmpc/
  msg/64f2b6060ff2b438?dmode=source (*11)) par l'un des auteurs de
  DIS_PKT.DOS, Dan Lanciani. Veuillez contribuer si vous en savez plus.
  Ce sont là tous les réglages dans PROTOCOL.INI nécessaires à notre
  objectif.
  Un dernier conseil : Si vous pensez modifier certaines de ses valeurs
  à chaque amorçage, par exemple par des choix présentés dans un menu
  de démarrage DOS, vous pourriez apprécier le programme gratuit de
  Horst Schaeffer "Inifile" (voyez : http://www.horstmuc.de/wbat32.htm
  (*12)).

Installation

  La dernière chose qui reste à faire est de charger les pilotes lors du
  démarrage. Donc modifiez vos fichiers système pour qu'ils contiennent
  les lignes suivantes :
    --- FDCONFIG.SYS (FreeDOS) ---
    --- ou CONFIG.SYS (MS DOS/autre DOS) ---
    DEVICEHIGH=C:\NET\PROTMAN.DOS /I:C:\NET
    DEVICEHIGH=C:\NET\EL3C574.DOS
    DEVICEHIGH=C:\NET\DIS_PKT.DOS
  Le paramètre "/I" indique au gestionnaire de protocole l'emplacement
  de PROTOCOL.INI. Cela n'est pas nécessaire si tous les deux sont dans
  le même répertoire.
    --- AUTOEXEC.BAT ---
    C:\NET\NETBIND.COM
  Notez que NETBIND.COM ne peut pas être chargé dans la mémoire haute et
  devrait simplement être exécuté depuis AUTOEXEC.BAT. Si vous tentez de
  le charger comme un pilote, il quittera avec le message "run-time
  error R6009 - not enough space for environment", c'est-à-dire "erreur
  d'exécution R6009 - pas assez d'espace pour l'environnement".

Redémarrage

  C'est tout. Redémarrez le système et utilisez une application TCP/IP
  simple comme ping pour tester si tout marche correctement.
    (Image : Messages d'amorçage de 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
        et: 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
        et: https://archive.org/download/ftp.microsoft.com/ftp.microsoft.
        com.zip/ftp.microsoft.com%2Fbussys%2FClients%2FMSCLIENT%2FDSK3-2.
        EXE
        et: http://download.amd.com/techdownloads/wfw31.zip
        et: https://archive.org/download/ftp.microsoft.com/ftp.microsoft.
        com.zip/ftp.microsoft.com%2FSoftlib%2FMSLFILES%2FWG1049.EXE
        et: https://archive.org/download/ftp.microsoft.com/ftp.microsoft.
        com.zip/ftp.microsoft.com%2FSoftlib%2FMSLFILES%2FNETSHAR.EXE
        et: https://jeffpar.github.io/kbarchive/kb/121/Q121086/
        et: 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 (Allemagne), modifié en 2010
  par W. Spiegl.
  Traduit en 2020 par Berki Yenigün.

  Pour plus d'informations, voyez ici.

  La permission est accordée de copier, distribuer et/ou modifier ce
  document selon les termes de la licence de documentation libre GNU,
  version 1.2 ou toute version ultérieure publiée par la Free Software
  Foundation.
  Une copie de la licence est incluse dans la section intitulée
  "GNU Free Documentation License 1.2".