เหตุใดจึงมีการตั้งค่าที่แตกต่างกันสามแบบในส่วน [Paths] ของ 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 การปรากฏตัวของWinDirในMSDOS.SYSคือสิ่งที่ได้รับคำสั่งIO.SYS(ก่อน Windows Me) ว่ามีการติดตั้ง Windows ที่ควรเตรียมพร้อมที่จะเปิดใช้งาน (ซึ่งต่างจากการบู๊ตไปยังพรอมต์คำสั่งเช่นบนฟล็อปปี้ดิสก์สำหรับบูตฉุกเฉิน) หากWinDirตั้งค่าไว้เคอร์เนลโหมดจริงจะทำสิ่งต่อไปนี้:

  • ใส่สองรายการในPATHตัวแปรสภาพแวดล้อม: ไดเรกทอรีที่ชี้ไปตามWinDirและไดเรกทอรีย่อยของCOMMAND;
  • สร้างไดเร็กทอรีย่อยTEMPภายใต้ไดเร็กทอรีนี้และชี้ตัวแปรสภาพแวดล้อมTEMPและTMPไปที่มัน
  • ล้างแฟล็กส่งคืนโดย0x2fบริการขัดจังหวะ0x1611ใน BL register bit 5 ซึ่งCOMMAND.COMตรวจสอบเพื่อตัดสินใจว่าจะเปิดใช้งานWIN.COMหลังจากการประมวลผลAUTOEXEC.BATหรือไม่
  • เริ่มตัวจัดการการกำหนดค่าอุปกรณ์ก่อนประมวลผลCONFIG.SYS(สามารถระงับได้โดยการSystemReg=0ตั้งค่าใน[Options]ส่วน)
  • ค้นหาไฟล์สำคัญบางไฟล์ในไดเร็กทอรีนี้รวมถึงSYSTEM.DAT(Registry) COMMAND.COM(ซึ่งจะถอยกลับไปที่ไดเร็กทอรีรูทหากไม่มี) และไดรเวอร์โหมดจริงเช่นHIMEM.SYSและIFSHLP.SYS(ซึ่งสามารถระงับได้โดยการตั้งค่าDOS=NOAUTOในCONFIG.SYS)
  • เก็บไดเร็กทอรีไว้ในwinbootdirตัวแปรสภาพแวดล้อม (ตัวพิมพ์เล็กทั้งหมด!)

สองสิ่งสุดท้ายคือสิ่งที่สามารถแทนที่ได้โดยการตั้งค่าWinBootDir: หากมีการตั้งค่านั้นด้วยเช่นกันไฟล์เหล่านั้นจะถูกค้นหาWinBootDirแทนและแน่นอนว่าเป็นไดเร็กทอรีนั้นซึ่งจะลงเอยด้วยwinbootdirตัวแปรสภาพแวดล้อม

มีริ้วรอยบางอย่างอยู่ที่นี่ WIN.COMแต่สำหรับตัวอย่างเช่นด้วยความเคารพ เมื่อไม่มีAUTOEXEC.BATไฟล์ว่างเปล่าหรือถูกข้าม (เช่นใน Safe Mode) COMMAND.COMจะไม่ถูกโหลดและเคอร์เนลในโหมดจริงจะดำเนินการโดยตรงWIN.COMจากWinBootDirไฟล์. แต่ถ้าAUTOEXEC.BATเป็นปัจจุบันCOMMAND.COMจะได้รับการเปิดตัวที่จะดำเนินการได้หลังจากที่มันจะเปิดดำเนินการคำสั่งWINเปิดตัวWIN.COM... โดยการมองหามันได้ในซึ่งจากจุดเริ่มต้นPATHWinDir


ดีดี แต่ทำไมWinDirและWinBootDirการตั้งค่าแยกต่างหากที่ทั้งหมดหรือไม่ มันยังไม่ชัดเจนสำหรับฉัน แต่จากสิ่งที่ฉันสามารถรวบรวมได้เล็กน้อยมันอาจหมายถึงการรองรับการบูต Windows ผ่าน LAN ในการกำหนดค่าดังกล่าว DOS จะถูกโหลดจากระบบไฟล์ปกติก่อน (หรือแม้แต่ตัวมันเองจากภาพดิสก์ที่ดาวน์โหลดผ่านเครือข่าย) โหลดไดรเวอร์ที่จำเป็นเช่นHIMEM.SYSจากที่WinBootDirอยู่ในระบบไฟล์เดียวกันจากนั้นโหลดไดรเวอร์เครือข่าย DOS แมปแชร์ (มีWinDir) ไปยังอักษรระบุไดรฟ์จากนั้นทำการบูทต่อจากที่นั่น หากนั่นเป็นสถานการณ์ที่ตั้งใจไว้แม้แต่ความWIN.COMแปลกประหลาดก็เริ่มมีเหตุผลในตอนนี้: อาจมีสำเนา Windows 'หลัก' เริ่มต้นเมื่อบูตจากปกติWinDirและสำเนา 'ฉุกเฉิน' ขั้นต่ำอีกชุดที่บูตใน Safe Mode จาก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:)

นอกจากนี้ยังมีบทความและชุดบทความโดย 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 อาจอยู่ในอิมเมจสำหรับบูตที่ส่งผ่านเครือข่ายเช่น

Windir เช่นเดียวกับใน 3.0 จำเป็นต้องมี win.com แต่ win.com จะรับผิดชอบในการเริ่มต้น windows (โดยเรียกใช้ 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 จาก