Mengapa ada tiga pengaturan berbeda di bagian [Paths] pada MSDOS.SYS?

Aug 17 2020

Di Windows 9x, file konfigurasi MSDOS.SYS berisi [Paths]bagian yang isinya biasanya terlihat seperti ini:

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

Keduanya WinDirdan WinBootDirarahkan ke direktori instalasi Windows, yang biasanya C:\WINDOWS, dan HostWinBootDrvarahkan ke huruf drive yang memuatnya. Memiliki pengaturan yang berbeda menunjukkan bahwa kemungkinan ini bisa berbeda. Apakah ada situasi di mana hal ini terjadi? Mengapa ada tiga pengaturan berbeda? Apa tujuan mereka sebenarnya?

Jawaban

9 user3840170 Aug 17 2020 at 14:22

HostWinBootDrvadalah yang paling mudah untuk dijelaskan: ini berkaitan dengan kompresi disk, yaitu DoubleSpace / DriveSpace. Apa yang dilakukan DriveSpace adalah membuat file dengan nama seperti DRVSPACE.nnn( nnnberupa angka tiga digit) yang berisi konten disk yang dikompresi. Sistem file terkompresi diberi huruf drive dari partisi yang berisi file tersebut, dan yang terakhir (disebut drive host dalam konteks ini) diberikan huruf drive lain, atau terkadang disembunyikan seluruhnya. Jika partisi tempat Windows mulai dikompresi, HostWinBootDrvarahkan ke drive host dari partisi tersebut, yang secara default adalah H, sedangkan pengaturan lainnya mengarah ke sistem file yang dikompresi.


Adapun WinDirdan WinBootDir, apa yang mereka lakukan relatif mudah ditemukan. Beberapa eksperimen mengungkapkan yang berikut:

WinDirmenunjuk ke direktori tempat Windows diinstal. Kehadiran WinDirin MSDOS.SYSadalah apa yang diinstruksikan IO.SYS(sebelum Windows Me) bahwa ada instalasi Windows yang harus disiapkan untuk diluncurkan (bukan hanya boot ke prompt perintah, seperti pada disket boot darurat). Jika WinDirdisetel, kernel mode-nyata akan melakukan hal berikut:

  • Letakkan dua entri dalam PATHvariabel lingkungan: direktori yang ditunjuk oleh WinDirdan subdirektori COMMAND;
  • Buat subdirektori di TEMPbawah direktori ini dan arahkan variabel lingkungan TEMPdan TMPke sana;
  • Kosongkan sebuah bendera, yang dikembalikan oleh 0x2flayanan interupsi 0x1611di BL register bit 5, yang COMMAND.COMmemeriksa untuk memutuskan apakah akan diluncurkan WIN.COMsetelah diproses AUTOEXEC.BAT;
  • Mulai manajer konfigurasi perangkat sebelum memproses CONFIG.SYS(ini dapat disembunyikan dengan SystemReg=0pengaturan di [Options]bagian)
  • Carilah file tertentu kritis dalam direktori ini, termasuk SYSTEM.DAT(Registry), COMMAND.COM(yang akan jatuh kembali ke direktori root jika tidak hadir) dan real-mode driver seperti HIMEM.SYSdan IFSHLP.SYS(yang dapat ditekan dengan menetapkan DOS=NOAUTOdi CONFIG.SYS);
  • Simpan direktori itu sendiri dalam winbootdirvariabel lingkungan (huruf kecil semua!).

Dua yang terakhir adalah apa yang dapat diganti dengan pengaturan WinBootDir: jika pengaturan itu ada juga, file-file itu akan dicari WinBootDir, dan tentu saja direktori itulah yang akan berakhir di winbootdirvariabel lingkungan.

Namun ada beberapa kerutan di sini, misalnya yang berkaitan dengan WIN.COM. Ketika AUTOEXEC.BATfile tidak ada, kosong atau sedang dilewati (seperti dalam Safe Mode), COMMAND.COMtidak dimuat dan kernel real-mode akan langsung dijalankan WIN.COMdari WinBootDir. Namun, jika AUTOEXEC.BATada, COMMAND.COMakan diluncurkan untuk memprosesnya, setelah itu pada gilirannya akan menjalankan perintah WIN, meluncurkan WIN.COM… dengan mencarinya di PATH, yang secara default menunjuk ke WinDir.


Nah, besar, tetapi mengapa WinDirdan WinBootDirpengaturan terpisah sama sekali? Ini masih belum sepenuhnya jelas bagi saya, tetapi dari sedikit yang dapat saya kumpulkan, itu mungkin dimaksudkan untuk mendukung boot Windows melalui LAN. Dalam konfigurasi seperti itu, DOS pertama-tama akan dimuat dari sistem file normal (atau bahkan itu sendiri dari gambar disk yang diunduh melalui jaringan), memuat driver penting seperti HIMEM.SYSdari WinBootDirterletak di sistem file yang sama, kemudian memuat driver jaringan DOS, memetakan pembagian (berisi WinDir) ke huruf drive, dan kemudian lanjutkan boot dari sana. Jika itu skenario yang dimaksudkan, bahkan WIN.COMkeanehan mulai masuk akal sekarang: mungkin ada salinan Windows 'utama' yang dimulai saat boot secara normal dari WinDir, dan salinan 'darurat' minimal lainnya yang di-boot dalam Mode Aman dari WinBootDir, saat boot jaringan gagal.

Dalam kasus apa pun, persyaratan skenario ini dapat dengan mudah mengharuskan kedua pengaturan tersebut memiliki nilai yang berbeda. Berikut adalah fragmen singkat dari dokumen yang menjelaskan konfigurasi seperti itu:

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

Ada juga makalah dan serangkaian artikel oleh Micho Durdevich ( bagian 1 , 2 , 3 , 4 , 5 dan 6 ) yang menjelaskan cara mencapai booting jaringan dengan Windows 9x.

Mereka agak kurang detail tentang bagaimana semua ini bekerja, tetapi kedua sumber tersebut menyebutkan SETMDIRutilitas, yang didistribusikan sebagai bagian dari Windows 95. Ini menyiratkan bahwa boot jaringan mungkin adalah kasus penggunaan yang dimaksudkan oleh Microsoft.

2 wendy.krieger Sep 22 2020 at 19:34

Winbootdir menunjuk ke direktori tempat file startup DOS berada. Ini bisa berbeda dengan Windir.

Windir menunjuk ke direktori tempat registri pengguna berada. Pada jaringan, ini bisa berbeda dengan tempat windows diinstal.

Winbootdir digunakan jika tidak ada config.sys / autoexec.bat, untuk memuat driver seperti himem.sys, ifs $ hlp.sys, dan co. Ini bisa berupa gambar boot yang dikirim melalui jaringan, misalnya.

Windir seperti pada 3.0, perlu berisi win.com, tetapi win.com kemudian bertanggung jawab untuk memulai windows (dengan menjalankan win32.vxd atau semacamnya.)

== Edit ==

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

Posting ini menjelaskan pembuatan setup DOS minimal, menggunakan DOS dari Win98se, dan MS-DOS 6.22 yang sedikit dimodifikasi.

Contoh dari apa yang terjadi ketika winbootdir dan windir diubah. Perintah setmdir mengubah windir setelah sistem di-boot, kami tidak menggunakannya di sini.

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

Topik ini berisi komentar-komentar yang berfungsi untuk membuat file bantuan qbasic untuk DOS 5 hingga 7 (yaitu sebagai pengganti dari apa yang ada di CDROM).

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

Di sinilah kami mendokumentasikan menjalankan beberapa versi Windows 9x sebagai opsi di config.sys. Sejauh ini kami telah mengatasi sebagian besar masalah dalam meluncurkan Win95 dari DOS98SE.

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

Ini adalah kemajuan saat menjalankan Windows 95 dan ME dari DOS98SE. Ini memiliki link ke file DOS yang digunakan dalam percobaan.

Semua eksperimen ini didasarkan pada sesi VPC yang melakukan apa yang dijelaskan. Misalnya, setelah Offer memposting konstruksi c: \ MSDOS7, saya menjalankan percobaan dengan beberapa NT5x di atas instalasi Win98 dan ME yang berbeda, dalam bahasa Inggris dan Jerman. Dari situlah saya mendapat ide untuk menggunakan c: \ msdos7.