Почему в разделе [Пути] MSDOS.SYS есть три разных параметра?
В Windows 9x файл конфигурации MSDOS.SYS содержит [Paths]
раздел, содержимое которого обычно выглядит следующим образом:
[Paths]
WinDir=C:\WINDOWS
WinBootDir=C:\WINDOWS
HostWinBootDrv=C
Оба WinDir
и WinBootDir
указывают на каталог установки Windows, который обычно есть C:\WINDOWS
, и HostWinBootDrv
указывают на букву диска, содержащую его. Наличие различных настроек предполагает, что потенциально они могут быть разными. Бывают ли ситуации, когда это так? Почему вообще есть три разных параметра? Какова их цель?
Ответы
HostWinBootDrv
проще всего объяснить: это связано со сжатием диска, то есть DoubleSpace / DriveSpace. DriveSpace создает файл с таким именем DRVSPACE.nnn
( nnn
трехзначным числом), который содержит сжатое содержимое диска. Сжатой файловой системе назначается буква диска раздела, содержащего файл, а последнему (называемому в данном контексте ведущим диском ) назначается другая буква диска или иногда полностью скрыта. Если раздел, с которого запускается Windows, является сжатым, HostWinBootDrv
указывает на главный диск этого раздела, который по умолчанию является H
, в то время как другие настройки указывают на сжатую файловую систему.
Что касается WinDir
и WinBootDir
, то относительно легко обнаружить, что они делают. Некоторые эксперименты показывают следующее:
WinDir
указывает на каталог, в котором установлена Windows. Наличие WinDir
in MSDOS.SYS
- это то, что указывало IO.SYS
(до Windows Me), что существовала установка Windows, которую следует подготовить к запуску (в отличие от простой загрузки из командной строки, как на аварийной загрузочной дискете). Если WinDir
установлено, ядро реального режима будет делать следующее:
- Поместите две записи в
PATH
переменную среды: каталог, на который указывает,WinDir
и его подкаталогCOMMAND
; - Создайте подкаталог
TEMP
в этом каталоге и укажите в нем переменные средыTEMP
иTMP
; - Очистить флаг, возвращаемый прерывания
0x2f
обслуживания0x1611
в BL регистра бит 5, которыйCOMMAND.COM
проверяет , чтобы решить , следует ли запускWIN.COM
после обработкиAUTOEXEC.BAT
; - Запустите диспетчер конфигурации устройства перед обработкой
CONFIG.SYS
(это можно запретитьSystemReg=0
настройкой в[Options]
разделе) - Посмотрите на некоторые важные файлы в этом каталоге, в том числе
SYSTEM.DAT
(реестр),COMMAND.COM
(которые будут падать обратно в корневом каталог , если отсутствует) и реальный режим драйвера , какHIMEM.SYS
иIFSHLP.SYS
(которые могут быть подавлены путем установкиDOS=NOAUTO
вCONFIG.SYS
); - Сохраните сам каталог в
winbootdir
переменной окружения (все в нижнем регистре!).
Последние два из них - это то, что можно переопределить, установив WinBootDir
: если этот параметр также присутствует, WinBootDir
вместо этого будут выполняться поиск этих файлов , и, конечно же, это тот каталог, который окажется в winbootdir
переменной среды.
Однако здесь есть некоторые морщинки, например, в отношении WIN.COM
. Когда AUTOEXEC.BAT
файл отсутствует, пуст или пропускается (например, в безопасном режиме), COMMAND.COM
он не загружается, и ядро реального режима вместо этого будет напрямую выполняться WIN.COM
из WinBootDir
. Однако, если AUTOEXEC.BAT
он присутствует, COMMAND.COM
будет запущен для его обработки, после чего он, в свою очередь, выполнит команду WIN
, запустив WIN.COM
... путем поиска PATH
, что по умолчанию указывает на WinDir
.
Ну отлично, а зачем вообще WinDir
и WinBootDir
отдельные настройки? Мне это все еще не совсем понятно, но из того немногого, что я могу понять, вероятно, это предназначалось для поддержки загрузки Windows по локальной сети. В такой конфигурации DOS сначала загружается из обычной файловой системы (или даже из образа диска, загруженного по сети), загружаются важные драйверы, например, HIMEM.SYS
из WinBootDir
той же файловой системы, затем загружаются сетевые драйверы DOS, сопоставляется общий ресурс. (содержащий WinDir
) на букву диска, а затем продолжите загрузку оттуда. Если это предполагаемый сценарий, то WIN.COM
теперь даже эта странность начинает иметь смысл: может быть «основная» копия Windows, запускаемая при обычной загрузке из WinDir
, а другая минимальная «аварийная» копия загружается в безопасном режиме WinBootDir
, когда происходит сбой сетевой загрузки.
В любом случае, требования этого сценария могут легко потребовать, чтобы эти два параметра имели разные значения. Вот небольшой фрагмент из документа, описывающий именно такую конфигурацию:
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:)
Также есть статья и серия статей Мичо Дурдевича ( части 1 , 2 , 3 , 4 , 5 и 6 ), в которых описывается, как добиться сетевой загрузки с Windows 9x.
Они несколько скупо рассказывают о том, как все это работает, но в обоих источниках упоминается SETMDIR
утилита, которая распространяется как часть Windows 95. Это означает, что загрузка по сети, вероятно, была вариантом использования, задуманным Microsoft.
Winbootdir указывает на каталог, в котором находятся файлы запуска DOS. Он может отличаться от Windir.
Windir указывает на каталог, в котором находится реестр пользователя. В сети он может отличаться от каталога, в котором установлены Windows.
Winbootdir используется, если config.sys / autoexec.bat отсутствует, для загрузки драйверов, таких как himem.sys, ifs $ hlp.sys и т. Д. Это может быть, например, загрузочный образ, отправленный по сети.
Windir, как и в версии 3.0, должен содержать win.com, но win.com отвечает за запуск окон (путем запуска win32.vxd или чего-то еще).
== Редактировать ==
http://reboot.pro/topic/22047-dual-boot-msdos-710-and-630/
В этом посте описывается создание минимальной установки DOS с использованием DOS из Win98se и слегка измененной MS-DOS 6.22.
Примеры того, что происходит при изменении winbootdir и windir. Команда setmdir изменяет windir после загрузки системы, мы здесь не используем.
http://reboot.pro/topic/18130-ms-dos-7-help-file/
Этот раздел содержит рабочие комментарии по созданию файла справки qbasic для DOS 5–7 (то есть в качестве замены тому, что находится на CDROM).
https://www.betaarchive.com/forum/viewtopic.php?f=72&t=34798&p=401645#p401645
Здесь мы документируем запуск нескольких версий Windows 9x в качестве параметров в config.sys. Пока что мы преодолели большинство проблем при запуске Win95 из DOS98SE.
https://www.betaarchive.com/forum/viewtopic.php?f=60&t=41489
Это прогресс по запуску Windows 95 и ME из DOS98SE. В нем есть ссылка на файлы DOS, использованные в экспериментах.
Все эти эксперименты основаны на сеансах VPC, которые делают то, что описано. Например, после того, как Offer опубликовал конструкцию c: \ MSDOS7, я провел эксперимент с несколькими NT5x поверх различных установок Win98 и ME на английском и немецком языках. Отсюда у меня возникла идея использовать c: \ msdos7.