MSDOS.SYSの[パス]セクションに3つの異なる設定があるのはなぜですか?

Aug 17 2020

Windows 9xでは、MSDOS.SYS構成ファイルには、[Paths]通常次のような内容のセクションが含まれています。

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

とは両方ともWinDirWinBootDir通常はC:\WINDOWSであるWindowsインストールディレクトリをHostWinBootDrv指し、それを含むドライブ文字を指します。異なる設定があることは、これらが異なる可能性があることを示唆しています。これが当てはまる状況はありますか?なぜ3つの異なる設定があるのですか?とにかく彼らの目的は何ですか?

回答

9 user3840170 Aug 17 2020 at 14:22

HostWinBootDrv説明するのが最も簡単です:それはディスク圧縮、すなわちDoubleSpace / DriveSpaceと関係があります。DriveSpaceが行うことは、ディスクの圧縮された内容を含むDRVSPACE.nnnnnn3桁の数字である)のような名前のファイルを作成することです。圧縮ファイルシステムには、ファイルを含むパーティションのドライブ文字が割り当てられ、後者(このコンテキストではホストドライブと呼ばれます)には別のドライブ文字が割り当てられるか、完全に非表示になる場合があります。Windowsの起動元のパーティションが圧縮HostWinBootDrvされている場合、はそのパーティションのホストドライブを指します。これはデフォルトではですがH、他の設定は圧縮されたファイルシステムを指します。


とに関してはWinDirWinBootDir彼らがしていることは比較的簡単に発見できます。いくつかの実験により、次のことが明らかになりました。

WinDirWindowsがインストールされているディレクトリを指します。存在WinDirではMSDOS.SYS、指示するものであるIO.SYS(のような緊急ブートフロッピーには、コマンドプロンプトにだけブートではなく)それは打ち上げに準備されるべきであることをWindowsインストール存在があったこと(Windows Meの前に)。場合はWinDir設定されている、リアルモードカーネルは、次の操作を行います:

  • PATH環境変数に2つのエントリを配置します。が指すWinDirディレクトリとそのサブディレクトリCOMMANDです。
  • TEMPこのディレクトリの下にサブディレクトリを作成し、環境変数TEMPとそのディレクトリをポイントしますTMP
  • BLレジスタビット5の割り込み0x2fサービスによって返されるフラグをクリアします。このフラグは、処理後に起動するかどうかを決定します。0x1611COMMAND.COMWIN.COMAUTOEXEC.BAT
  • 処理する前にデバイス構成マネージャーを起動しますCONFIG.SYS(これSystemReg=0[Options]セクションの設定で抑制できます)
  • このディレクトリで、SYSTEM.DAT(レジストリ)COMMAND.COM(存在しない場合はルートディレクトリにフォールバックします)やHIMEM.SYSand IFSHLP.SYS(で設定DOS=NOAUTOすることで抑制できます)などのリアルモードドライバを含む特定の重要なファイルを探しますCONFIG.SYS
  • ディレクトリ自体をwinbootdir環境変数(すべて小文字!)に格納します。

これらの最後の2つは、設定によってオーバーライドできるものWinBootDirです。その設定も存在する場合、それらのファイルはWinBootDir代わりに検索されwinbootdirます。もちろん、環境変数で終わるのはそのディレクトリです。

ただし、ここにはいくつかのしわがありますWIN.COM。たとえば、に関してです。ときにAUTOEXEC.BATファイルが存在しない、空またはビーイングは、(セーフモードで例えばのように)スキップされ、COMMAND.COMロードされず、リアルモードカーネルではなく、直接実行されますWIN.COMからWinBootDir。ただし、AUTOEXEC.BATが存在する場合は、COMMAND.COMそれを処理するために起動され、その後、コマンドを実行し、WINで検索してWIN.COM…を起動PATHしますWinDir。これは、デフォルトでを指します。


まあ、素晴らしいですが、なぜWinDirWinBootDir個別の設定があるのですか?まだ完全にはわかりませんが、私が収集できることからすると、LAN経由でのWindowsの起動をサポートすることを意図していたのでしょう。このような構成では、DOSは最初に通常のファイルシステムから(またはネットワーク経由でダウンロードされたディスクイメージからそれ自体を)ロードし、同じファイルシステム上にあるような重要なドライバーをロードしてHIMEM.SYSからWinBootDir、DOSネットワークドライバーをロードし、共有をマップします。 (を含むWinDir)をドライブ文字に追加し、そこから起動を続けます。それが意図したシナリオである場合は、WIN.COM奇妙なことでも意味があり始めます。ネットワークブートが失敗すると、から通常の起動時に「メイン」のWindowsコピーが開始されWinDir、からセーフモードで起動される「緊急」のコピーがもう1つある可能性がありWinBootDirます。

いずれにせよ、このシナリオの要件では、これら2つの設定に異なる値を設定する必要があります。これは、まさにそのような構成を説明しているドキュメントからの短い断片です。

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:)

あり、紙とMicho Durdevich(で一連の記事パート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、coなどのドライバーをロードします。たとえば、ネットワークを介して送信されるブートイメージ上にある可能性があります。

3.0のWindirには、win.comが含まれている必要がありますが、win.comは(win32.vxdなどを実行して)Windowsを起動する責任があります。

==編集==

http://reboot.pro/topic/22047-dual-boot-msdos-710-and-630/

この投稿では、Win98seのDOSと、わずかに変更されたMS-DOS 6.22を使用して、最小限のDOSセットアップを作成する方法について説明します。

winbootdirとwindirが変更されたときに何が起こるかの例。コマンドsetmdirは、システムの起動後にwindirを変更します。ここでは使用していません。

http://reboot.pro/topic/18130-ms-dos-7-help-file/

このトピックには、DOS 5から7用のqbasicヘルプファイルを作成するための実用的なコメントが含まれています(つまり、CDROMにあるものの代わりとして)。

https://www.betaarchive.com/forum/viewtopic.php?f=72&t=34798&p=401645#p401645

これは、config.sysのオプションとして複数のWindows9xバージョンの実行を文書化する場所です。これまでのところ、DOS98SEからWin95を起動する際の問題のほとんどを克服しました。

https://www.betaarchive.com/forum/viewtopic.php?f=60&t=41489

これは、DOS98SEからWindows95およびMEを実行する際の進捗状況です。実験で使用したDOSファイルへのリンクがあります。

これらの実験はすべて、説明されていることを実行するVPCセッションに基づいています。たとえば、Offerがc:\ MSDOS7の構築を投稿した後、英語とドイツ語で、さまざまなWin98とMEのインストールの上にいくつかのNT5xを使用して実験を実行しました。ここで、c:\ msdos7を使用することを思いつきました。