Почему в разделе [Пути] MSDOS.SYS есть три разных параметра?

Aug 17 2020

В Windows 9x файл конфигурации MSDOS.SYS содержит [Paths]раздел, содержимое которого обычно выглядит следующим образом:

[Paths]
WinDir=C:\WINDOWS
WinBootDir=C:\WINDOWS
HostWinBootDrv=C

Оба WinDirи WinBootDirуказывают на каталог установки Windows, который обычно есть C:\WINDOWS, и HostWinBootDrvуказывают на букву диска, содержащую его. Наличие различных настроек предполагает, что потенциально они могут быть разными. Бывают ли ситуации, когда это так? Почему вообще есть три разных параметра? Какова их цель?

Ответы

9 user3840170 Aug 17 2020 at 14:22

HostWinBootDrvпроще всего объяснить: это связано со сжатием диска, то есть DoubleSpace / DriveSpace. DriveSpace создает файл с таким именем DRVSPACE.nnn( nnnтрехзначным числом), который содержит сжатое содержимое диска. Сжатой файловой системе назначается буква диска раздела, содержащего файл, а последнему (называемому в данном контексте ведущим диском ) назначается другая буква диска или иногда полностью скрыта. Если раздел, с которого запускается Windows, является сжатым, HostWinBootDrvуказывает на главный диск этого раздела, который по умолчанию является H, в то время как другие настройки указывают на сжатую файловую систему.


Что касается WinDirи WinBootDir, то относительно легко обнаружить, что они делают. Некоторые эксперименты показывают следующее:

WinDirуказывает на каталог, в котором установлена ​​Windows. Наличие WinDirin 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.

2 wendy.krieger Sep 22 2020 at 19:34

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.