เหตุใดจึงมีการตั้งค่าที่แตกต่างกันสามแบบในส่วน [Paths] ของ 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
ใน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
... โดยการมองหามันได้ในซึ่งจากจุดเริ่มต้นPATH
WinDir
ดีดี แต่ทำไม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 ตั้งใจไว้
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 จาก