Pourquoi existe-t-il trois paramètres différents dans la section [Chemins] de MSDOS.SYS?
Sous Windows 9x, le fichier de configuration MSDOS.SYS contient une [Paths]
section dont le contenu ressemble généralement à ceci:
[Paths]
WinDir=C:\WINDOWS
WinBootDir=C:\WINDOWS
HostWinBootDrv=C
Les deux WinDir
et WinBootDir
pointent vers le répertoire d'installation de Windows, qui est généralement C:\WINDOWS
, et HostWinBootDrv
pointe vers la lettre de lecteur qui le contient. Le fait d'avoir des paramètres distincts suggère que ceux-ci pourraient être différents. Y a-t-il des situations où c'est le cas? Pourquoi y a-t-il trois paramètres différents? Quel est leur but de toute façon?
Réponses
HostWinBootDrv
est le plus simple à expliquer: il s'agit de la compression de disque, c'est-à-dire DoubleSpace / DriveSpace. Ce que fait DriveSpace est de créer un fichier avec un nom comme DRVSPACE.nnn
(avec nnn
un nombre à trois chiffres) qui contient le contenu compressé du disque. Le système de fichiers compressé se voit attribuer la lettre de lecteur de la partition contenant le fichier, et ce dernier (appelé lecteur hôte dans ce contexte) se voit attribuer une autre lettre de lecteur, ou parfois complètement masquée. Si la partition à partir de laquelle Windows démarre est compressée, HostWinBootDrv
pointe vers le lecteur hôte de cette partition, ce qui est par défaut H
, tandis que les autres paramètres pointent vers le système de fichiers compressé.
Quant à WinDir
et WinBootDir
, ce qu'ils font est relativement facile à découvrir. Certaines expérimentations révèlent ce qui suit:
WinDir
pointe vers le répertoire dans lequel Windows est installé. La présence de WinDir
in MSDOS.SYS
est ce qui indiquait IO.SYS
(avant Windows Me) qu'il y avait une installation de Windows présente qu'elle devrait être prête à démarrer (par opposition à un simple démarrage à partir d'une invite de commande, comme sur une disquette de démarrage d'urgence). Si WinDir
est défini, le noyau en mode réel fera ce qui suit:
- Mettez deux entrées dans la
PATH
variable d'environnement: le répertoire pointé parWinDir
et son sous-répertoireCOMMAND
; - Créez un sous-répertoire
TEMP
sous ce répertoire et pointez les variables d'environnementTEMP
etTMP
vers lui; - Effacer un drapeau, renvoyé par le
0x2f
service d' interruption0x1611
dans le bit 5 du registre BL, quiCOMMAND.COM
vérifie s'il faut lancerWIN.COM
après le traitementAUTOEXEC.BAT
; - Démarrez le gestionnaire de configuration de périphérique avant le traitement
CONFIG.SYS
(cela peut être supprimé par leSystemReg=0
paramètre dans la[Options]
section) - Recherchez certains fichiers critiques dans ce répertoire, y compris
SYSTEM.DAT
(le registre),COMMAND.COM
(qui reviendra au répertoire racine s'il est absent) et des pilotes en mode réel commeHIMEM.SYS
etIFSHLP.SYS
(qui peuvent être supprimés en définissantDOS=NOAUTO
dansCONFIG.SYS
); - Stockez le répertoire lui-même dans la
winbootdir
variable d'environnement (tout en minuscules!).
Les deux derniers d'entre eux sont ce qui peut être remplacé par le paramètre WinBootDir
: si ce paramètre est également présent, ces fichiers seront recherchés à la WinBootDir
place, et bien sûr, c'est ce répertoire qui se terminera dans la winbootdir
variable d'environnement.
Il y a cependant quelques rides ici, par exemple en ce qui concerne WIN.COM
. Lorsque le AUTOEXEC.BAT
fichier est absent, vide ou ignoré (comme par exemple en mode sans échec), il COMMAND.COM
n'est pas chargé et le noyau en mode réel s'exécutera directement à WIN.COM
partir de WinBootDir
. Cependant, si AUTOEXEC.BAT
est présent, COMMAND.COM
sera lancé pour le traiter, après quoi il exécutera à son tour la commande WIN
, en le lançant WIN.COM
… en le recherchant dans PATH
, qui par défaut pointe vers WinDir
.
Eh bien, très bien, mais pourquoi WinDir
et WinBootDir
réglages séparés du tout? Ce n'est toujours pas tout à fait clair pour moi, mais d'après le peu que je peux recueillir, il était probablement destiné à prendre en charge le démarrage de Windows sur un réseau local. Dans une telle configuration, DOS serait d' abord chargé à partir d' un système de fichiers normal (ou même lui - même à partir d' une image disque téléchargée sur le réseau), charger les pilotes essentiels comme HIMEM.SYS
de WinBootDir
situés sur le même système de fichiers, puis chargez les pilotes de réseau DOS, mapper un partage (contenant WinDir
) à sa lettre de lecteur, puis continuez à démarrer à partir de là. Si tel est le scénario prévu, alors même la WIN.COM
bizarrerie commence à avoir un sens maintenant: il pourrait y avoir une copie Windows `` principale '' démarrée lors du démarrage normal à partir de WinDir
, et une autre copie `` d'urgence '' minimale démarrée en mode sans échec à partir de WinBootDir
, lorsque le démarrage du réseau échoue.
Dans tous les cas, les exigences de ce scénario pourraient facilement exiger que ces deux paramètres aient des valeurs différentes. Voici un court fragment d' un document décrivant une telle configuration:
D-2. MSDOS.SYS Sample File for DM9102 : ======================================= [Paths] WinDir=g:\client1 WinBootDir=d:\winboot <== According to RAMDRIVE.SYS assign HostWinBootDrv=c Virtual Drive (D: or E:)
Il existe également un article et une série d'articles de Micho Durdevich ( partie 1 , 2 , 3 , 4 , 5 et 6 ) qui décrivent comment réaliser un démarrage réseau avec Windows 9x.
Ils sont quelque peu peu détaillés sur la façon dont tout cela a fonctionné, mais ces deux sources mentionnent un SETMDIR
utilitaire, qui est distribué dans le cadre de Windows 95. Cela implique que le démarrage réseau était probablement un cas d'utilisation prévu par Microsoft.
Winbootdir pointe vers le répertoire dans lequel se trouvent les fichiers de démarrage DOS. Il peut être différent de Windir.
Windir pointe vers le répertoire dans lequel se trouve le registre de l'utilisateur. Sur un réseau, cela peut être différent de celui où Windows est installé.
Winbootdir est utilisé s'il n'y a pas de config.sys / autoexec.bat, pour charger les pilotes comme himem.sys, ifs $ hlp.sys, et co. Il peut s'agir d'une image de démarrage envoyée via le réseau, par exemple.
Windir comme dans 3.0, doit contenir win.com, mais win.com est alors responsable du démarrage de Windows (en exécutant win32.vxd ou quelque chose.)
== Modifier ==
http://reboot.pro/topic/22047-dual-boot-msdos-710-and-630/
Cet article décrit la création d'une installation DOS minimale, à l'aide du DOS de Win98se et d'un MS-DOS 6.22 légèrement modifié.
Des exemples de ce qui se passe lorsque winbootdir et windir sont modifiés. La commande setmdir change windir après le démarrage du système, nous ne l'utilisons pas ici.
http://reboot.pro/topic/18130-ms-dos-7-help-file/
Cette rubrique contient les commentaires de travail pour créer un fichier d'aide qbasic pour DOS 5 à 7 (c'est-à-dire en remplacement de ce qui se trouve sur le CD-ROM).
https://www.betaarchive.com/forum/viewtopic.php?f=72&t=34798&p=401645#p401645
C'est là que nous documentons l'exécution de plusieurs versions de Windows 9x en tant qu'options dans le fichier config.sys. Jusqu'à présent, nous avons surmonté la plupart des problèmes liés au lancement de Win95 à partir de DOS98SE.
https://www.betaarchive.com/forum/viewtopic.php?f=60&t=41489
Il s'agit de la progression de l'exécution de Windows 95 et ME à partir de DOS98SE. Il a un lien vers les fichiers DOS utilisés dans les expériences.
Toutes ces expériences sont basées sur des sessions VPC qui font ce qui est décrit. Par exemple, après que Offer ait publié la construction de c: \ MSDOS7, j'ai exécuté l'expérience avec plusieurs NT5x au-dessus de différentes installations Win98 et ME, en anglais et en allemand. C'est là que j'ai eu l'idée d'utiliser c: \ msdos7.