âW3x4NTFSâ डिस्क छवि पर पाया जाने वाला यह FreeDOS कर्नेल लोडर क्या है?

image

मुझे एक io.sys फ़ाइल मिली है जो एक असंपीड़ित FreeDOS कर्नेल (kernel.sys) की तरह दिखती है, जिसके पहले MZ से शुरू होने वाला 4048-बाइट लोडर लगा होता है, जिसमें निम्नलिखित ASCII स्ट्रिंग्स होती हैं:

यह लोडर क्या है? क्या यह किसी प्रसिद्ध सॉफ़्टवेयर का भाग है? क्या स्रोत उपलब्ध है? कर्नेल.sys को सीधे बूट करने की तुलना में इस लोडर का उपयोग करना बेहतर क्यों है?

मैंने इसे http://www.multiboot.ru/download/ पर पाया है। लिंक W3x4NTFS पर क्लिक करें, यह w3l.zip को डाउनलोड करता है, इसे अनकंप्रेस करता है, फिर w3l.gz को अनकंप्रेस करता है, फिर इसे कॉपी करता है mcopy -i w3l ::io.sys ./.

यह (मेरा) lDOS iniload है। ऑफसेट 1020 (1024 - 4) पर आपको एक "lDXX" हस्ताक्षर मिलना चाहिए, "XX" में संभवतः fdkernpl + FreeDOS कर्नेल पेलोड के लिए "FD" शामिल है। मुझे जंगली में इसके किसी भी उपयोग के बारे में पता नहीं था इसलिए सूचक के लिए धन्यवाद!

यह बेहतर क्यों है, इसे MS-DOS v6 io.sys और सहित कई अलग-अलग कर्नेल के रूप में लोड किया जा सकता है MS-DOS v7 io.sys:

एलडीओएस इनिलोड चरण को इस मैनुअल में वर्णित किसी भी सेक्टर लोड प्रोटोकॉल के लिए (पहली) लोड फ़ाइल के रूप में लोड किया जा सकता है:

(io. sys फ़ाइल में वह डिस्क छवि 2023-04-02 के रूप में दिनांकित है, इसलिए ऐसा लगता है कि यह 2023-02-28 के बाद iniload और fdkernpl का कोई बाद का संशोधन नहीं होगा। यह अभी तक EDR-DOS drbio.sys फ़ाइल के रूप में लोड करने का समर्थन नहीं करता है। )

lDOS का इनिलोड MZ एप्लिकेशन के रूप में या DOS डिवाइस ड्राइवर के रूप में भी लोड हो सकता है, या तो सिंगल (डुअल-मोड या) के साथ ट्रिपल-मोड) छवि या दूसरे पेलोड का उपयोग करना जो एमजेड छवि के रूप में उपयोग किया जाता है जबकि पहली छवि केवल कर्नेल के रूप में बूट करने के लिए उपयोग की जाती है। यह संभावना है कि आपको जो उपयोग मिला है वह केवल कर्नेल है, ऐसी स्थिति में एमजेड हेडर को एक असंभव आकार को एन्कोड करना चाहिए ताकि यदि आप इसे लोड करने का प्रयास करें तो डॉस लोडर बंद हो जाएगा। (उदाहरण के लिए, io.sys का नाम बदलकर test.com कर दें और इसे चलाने का प्रयास करें।)

केवल कर्नेल फ़ाइल के लिए MZ हेडर को शामिल करने का कारण यह है, जैसा कि user3840170 ने एक टिप्पणी में बताया है, MS-DOS v7 लोड प्रोटोकॉल के लिए इसकी आवश्यकता है:

इसके अलावा, ऑफसेट 2046 में हम एक "MS" हस्ताक्षर शामिल करते हैं, हालांकि ऐसा लगता है कि इसकी किसी को आवश्यकता नहीं है:

आप ऐसा कर सकते हैं आपके द्वारा सूचीबद्ध इन त्रुटि स्ट्रिंग्स को, ज्यादातर कॉल त्रुटि निर्देशों के बाद, स्रोतों में खोजें:

इनलोड चरण में कर्नेल का "प्रारंभिक लोडर" चरण होता है जो शुरुआत से कम से कम 1536 बाइट्स लोड के साथ चल सकता है फ़ाइल. इसे MS-DOS के लिए ibmload या msload कहा जाता है, लेकिन मूल FreeDOS लोड प्रोटोकॉल के लिए मौजूद नहीं है (क्योंकि इस मामले में संपूर्ण कर्नेल फ़ाइल लोड की गई है)। मेरी एक टिप्पणी उद्धृत करते हुए:

नहीं, एमएसलोड "गैर-सन्निहित IBMBIO लोडर (एमएसलोड)" है, मैंने इसके बारे में अपने ब्लॉग पर कुछ लिखा है। MSload चरण io.sys के पहले 1536 बाइट्स में संग्रहीत प्रारंभिक लोडर है। (MS-DOS v7 बूट लोड प्रोटोकॉल ने msload लंबाई को 2048 बाइट्स में बदल दिया है।) बूट सेक्टर को v6 + v7 दोनों के लिए msload को 00700h पर लोड करना होगा। V4 में इसका प्रारंभ क्लस्टर क्लस्टर 2 होना चाहिए।

इनिलोड के लिए कर्नेल/पहला पेलोड इनिलोड चरण के कोड के बाद 16-बाइट (पैराग्राफ) सीमा पर संग्रहीत किया जाता है (एमएस-डॉस वी4 एमएसलोड के विपरीत जो नहीं किया गया था) इसके MSbio को MSload के पेलोड के रूप में संरेखित न करें):

मैंने जाकर ldosboot, lmacros, और scanptab के सटीक संशोधनों को फिर से बनाया https://pushbx.org/ecm/test/20250104.txt

तो यह fdkernpl.asm और iniload.asm में 2023-01-10 के संशोधन a4823a5555d4 के समान कोड है। मुझे सबसे पुराना संशोधन भी मिला जो कोड से मेल खाता है:

यह 2022-12-29 का संशोधन 9c885120139d है।

एमजेड से शुरू होने वाले 4048-बाइट लोडर के साथ उपसर्ग किया गया है, जिसमें निम्नलिखित ASCII स्ट्रिंग्स शामिल हैं:

दरअसल fdkernpl का हिस्सा इसके पेलोड (कर्नेल.sys की सामग्री) के बाद स्थित है, यही कारण है कि मैंने इसे निर्दिष्ट किया है count=$((0x13378)) dd कमांड पर जिसे मैंने कर्नेल.sys निकालने के लिए सूचीबद्ध किया था। सटीक लंबाई ज्ञात करना आसान था क्योंकि fdkernpl का पेलोड अंत में एलाइन 16, डीबी 38 का उपयोग करके एक पैराग्राफ सीमा से जुड़ा हुआ है, इसलिए इस मामले में हमें सटीक पेलोड समाप्ति के बाद कई बार दोहराए गए '&' टेक्स्ट अक्षर मिलते हैं।

Ask AI
#1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 #16 #17 #18 #19 #20 #21 #22 #23 #24 #25 #26 #27 #28 #29 #30 #31 #32 #33 #34 #35 #36 #37 #38 #39 #40 #41 #42 #43 #44 #45 #46 #47 #48 #49 #50 #51 #52 #53 #54 #55 #56 #57 #58 #59 #60 #61 #62 #63 #64 #65 #66 #67 #68 #69 #70