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 (C) 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".