मास्टर बूट रिकॉर्ड: Difference between revisions
No edit summary |
|||
Line 642: | Line 642: | ||
== प्रोग्रामिंग विचार == | == प्रोग्रामिंग विचार == | ||
एमबीआर की उत्पत्ति पीसी एक्सटी में हुई थी।<ref name="Sakamoto_2010_MBR"/> आईबीएम पीसी-संगत कंप्यूटर [[endianness|छोटे-एंडियन]] हैं, जिसका अर्थ है कि प्रोसेसर [[कम से कम महत्वपूर्ण बाइट]] पहले मेमोरी में दो या दो से अधिक बाइट्स वाले संख्यात्मक मानों को संग्रहीत करता है। मीडिया पर एमबीआर का प्रारूप इस परिपाटी को दर्शाता है। इस प्रकार, एमबीआर हस्ताक्षर [[डिस्क संपादक]] में अनुक्रम <code>55 AA</code> के रूप में दिखाई देगा।{{efn|name="NB_Magic_AA55"}} | |||
BIOS | BIOS में बूटस्ट्रैप अनुक्रम पहले मान्य MBR को लोड करेगा जो इसे कंप्यूटर की भौतिक मेमोरी में [[स्मृति पता]] {{mono|0x0000}}:{{mono|0x7C00}} पर मिलता है।<ref name="Sakamoto_2010_MBR" /> एमबीआर कॉपी की शुरुआत में निष्पादन को निर्देशित करने के लिए BIOS कोड में निष्पादित अंतिम निर्देश उस पते पर "कूद" होगा। अधिकांश BIOS के लिए प्राथमिक सत्यापन ऑफ़सेट {{mono|0x01FE}} पर हस्ताक्षर है, हालांकि एक BIOS कार्यान्वयनकर्ता अन्य जांचों को शामिल करना चुन सकता है, जैसे कि यह सत्यापित करना कि MBR में डिस्क की रिपोर्ट की गई क्षमता से परे क्षेत्रों को संदर्भित किए बिना एक मान्य विभाजन तालिका शामिल है। | ||
जबकि एमबीआर बूट सेक्टर कोड भौतिक पते | BIOS के लिए, रिमूवेबल (जैसे फ्लॉपी) और फिक्स्ड डिस्क अनिवार्य रूप से समान हैं। या तो, BIOS मीडिया के पहले भौतिक क्षेत्र को 0x7C00 के पूर्ण पते पर रैम में पढ़ता है, लोड किए गए क्षेत्र के अंतिम दो बाइट्स में हस्ताक्षर की जांच करता है, और फिर, यदि सही हस्ताक्षर पाया जाता है, तो नियंत्रण को पहले बाइट में स्थानांतरित कर देता है जंप (JMP) निर्देश वाला सेक्टर। एकमात्र वास्तविक अंतर जो BIOS बनाता है वह यह है कि (डिफ़ॉल्ट रूप से, या यदि बूट क्रम कॉन्फ़िगर करने योग्य नहीं है) यह पहली निश्चित डिस्क से बूट करने का प्रयास करने से पहले पहली हटाने योग्य डिस्क से बूट करने का प्रयास करता है। BIOS के दृष्टिकोण से, RAM में वॉल्यूम बूट रिकॉर्ड को MBR लोड करने की क्रिया ठीक वैसी ही है, जैसे ऑपरेटिंग सिस्टम लोडर के ऑब्जेक्ट कोड को RAM में लोड करने वाली फ़्लॉपी डिस्क वॉल्यूम बूट रिकॉर्ड की क्रिया। किसी भी मामले में, BIOS लोड किया गया प्रोग्राम ऑपरेटिंग सिस्टम को लोड करने की श्रृंखला के काम के बारे में जा रहा है। | ||
जबकि एमबीआर बूट सेक्टर कोड भौतिक पते {{mono|0x0000}}:{{mono|0x7C00}} पर लोड होने की उम्मीद करता है,{{efn|name="NB_Load-address"}} भौतिक पते से सभी मेमोरी {{mono|0x0000}}:{{mono|0x0501}} (पता {{mono|0x0000}}:{{mono|0x0500}} फीनिक्स BIOS द्वारा उपयोग किया जाने वाला अंतिम है<ref name="Phoenix_1989_System-BIOS" />) से {{mono|0x0000}}:{{mono|0x7FFF}},<ref name="Compaq-Phoenix-Intel_1996_BBS101" /> बाद में 0x0000: 0xFFFF<ref name="Sakamoto_2010_MBR" /> (और कभी-कभी{{efn|name="NB_EBDA"}} 0x9000: 0xFFFF तक) के लिए आराम दिया गया - पहले 640 KB का अंत वास्तविक मोड में उपलब्ध है।{{efn|name="NB_free-memory"}} <code>INT 12h</code> [[BIOS इंटरप्ट कॉल]] यह निर्धारित करने में मदद कर सकता है कि कितनी मेमोरी को सुरक्षित रूप से आवंटित किया जा सकता है (डिफ़ॉल्ट रूप से, यह केबी में आधार [[स्मृति विभाजन]] आकार को खंड से पढ़ता है: ऑफ़सेट स्थान {{mono|0x0040}}:{{mono|0x0013}}, लेकिन यह अन्य निवासी प्री-बूट सॉफ़्टवेयर जैसे BIOS ओवरले द्वारा हुक किया जा सकता है, [[रिमोट प्रोग्राम लोडर]] कोड या वायरस उपलब्ध मेमोरी की रिपोर्ट की गई मात्रा को कम करने के लिए बूट सेक्टर जैसे अन्य बूट स्टेज सॉफ़्टवेयर को ओवरराइट करने से रोकने के लिए)। | |||
512-बाइट एमबीआर के अंतिम 66 बाइट्स विभाजन तालिका और अन्य जानकारी के लिए आरक्षित हैं, इसलिए एमबीआर बूट सेक्टर प्रोग्राम 446 बाइट्स मेमोरी या उससे कम में फिट होने के लिए पर्याप्त छोटा होना चाहिए। | 512-बाइट एमबीआर के अंतिम 66 बाइट्स विभाजन तालिका और अन्य जानकारी के लिए आरक्षित हैं, इसलिए एमबीआर बूट सेक्टर प्रोग्राम 446 बाइट्स मेमोरी या उससे कम में फिट होने के लिए पर्याप्त छोटा होना चाहिए। | ||
एमबीआर कोड विभाजन तालिका की जांच करता है, एक उपयुक्त विभाजन का चयन करता है और उस प्रोग्राम को लोड करता है जो बूट प्रक्रिया के अगले चरण | एमबीआर कोड विभाजन तालिका की जांच करता है, एक उपयुक्त विभाजन का चयन करता है और उस प्रोग्राम को लोड करता है जो बूट प्रक्रिया के अगले चरण को आमतौर पर INT 13h BIOS कॉल का उपयोग करके करेगा। एमबीआर बूटस्ट्रैप कोड लोड करता है और चलाता है (एक बूट लोडर- या ऑपरेटिंग सिस्टम पर निर्भर) वॉल्यूम बूट रिकॉर्ड कोड जो "सक्रिय" विभाजन की शुरुआत में स्थित है। वॉल्यूम बूट रिकॉर्ड 512-बाइट सेक्टर के भीतर फिट होगा, लेकिन एमबीआर कोड के लिए अतिरिक्त सेक्टरों को एक सेक्टर से अधिक लंबे बूट लोडर को समायोजित करने के लिए लोड करना सुरक्षित है, बशर्ते कि वे सेक्टर आकार के बारे में कोई अनुमान न लगाएं। वास्तव में, प्रत्येक IBM XT- और AT-क्लास मशीन में {{mono|0x7C00}} पते पर कम से कम 1 KB RAM उपलब्ध है, इसलिए 1 KB सेक्टर का उपयोग बिना किसी समस्या के किया जा सकता है। एमबीआर की तरह, एक वॉल्यूम बूट रिकॉर्ड सामान्य रूप से {{mono|0x0000}}:{{mono|0x7C00}} पते पर लोड होने की अपेक्षा करता है। यह इस तथ्य से निकला है कि वॉल्यूम बूट रिकॉर्ड डिजाइन अविभाजित मीडिया पर उत्पन्न हुआ, जहां वॉल्यूम बूट रिकॉर्ड सीधे BIOS बूट प्रक्रिया द्वारा लोड किया जाएगा; जैसा कि ऊपर उल्लेख किया गया है, BIOS एमबीआर और वॉल्यूम बूट रिकॉर्ड (वीबीआर) {{efn|name="NB_VBRs"}} को बिल्कुल समान मानता है। चूंकि यह वही स्थान है जहां एमबीआर लोड किया गया है, एमबीआर के पहले कार्यों में से एक स्मृति में कहीं और खुद को स्थानांतरित करना है। स्थानांतरण पता MBR द्वारा निर्धारित किया जाता है, लेकिन यह अक्सर {{mono|0x0000}}:{{mono|0x0600}} (MS-DOS/PC DOS, OS/2 और Windows MBR कोड के लिए) या {{mono|0x0060}}:{{mono|0x0000}} (अधिकांश DR-DOS MBRs) होता है। (भले ही ये दोनों खंडित पते वास्तविक मोड में एक ही भौतिक मेमोरी पते को हल करते हैं, Apple डार्विन को बूट करने के लिए, MBR को {{mono|0x0060}}:{{mono|0x0000}} के बजाय {{mono|0x0000}}:{{mono|0x0600}} पर स्थानांतरित किया जाना चाहिए, क्योंकि कोड DS पर निर्भर करता है: SI सूचक एमबीआर द्वारा प्रदान की गई विभाजन प्रविष्टि के लिए, लेकिन यह ग़लती से इसे केवल {{mono|0x0000}}:एसआई के माध्यम से संदर्भित करता है।<ref name="Elliott_2009_Darwin"/>) यह महत्वपूर्ण है कि स्मृति में अन्य पतों को स्थानांतरित न किया जाए क्योंकि कई वीबीआर अपने बूट को लोड करते समय एक निश्चित मानक मेमोरी लेआउट ग्रहण करेंगे। फ़ाइल। | ||
विभाजन तालिका रिकॉर्ड में स्थिति फ़ील्ड का उपयोग सक्रिय विभाजन को इंगित करने के लिए किया जाता है। मानक-अनुरूप एमबीआर केवल एक विभाजन को सक्रिय चिह्नित करने की अनुमति देगा और एक वैध विभाजन तालिका के अस्तित्व को निर्धारित करने के लिए इसे विवेक-जांच के हिस्से के रूप में उपयोग करेगा। यदि एक से अधिक पार्टीशन को सक्रिय चिह्नित किया गया है, तो वे एक त्रुटि संदेश प्रदर्शित करेंगे। कुछ गैर-मानक एमबीआर इसे एक त्रुटि स्थिति के रूप में नहीं मानेंगे और केवल पंक्ति में पहले चिह्नित विभाजन का उपयोग करेंगे। | |||
परंपरागत रूप से, {{mono|0x00}} (सक्रिय नहीं) और {{mono|0x80}} (सक्रिय) के अलावा अन्य मान अमान्य थे और बूटस्ट्रैप प्रोग्राम उनका सामना करने पर एक त्रुटि संदेश प्रदर्शित करेगा। हालांकि, [[प्लग एंड प्ले BIOS विशिष्टता]] और [[BIOS बूट विशिष्टता]] (BBS) ने 1994 से अन्य उपकरणों को भी बूट करने योग्य बनने की अनुमति दी थी।<ref name="Compaq-Phoenix-Intel_1996_BBS101" /><ref name="Compaq-Phoenix-Intel_1994_PnP10A" /> नतीजतन, MS-DOS 7.10 (Windows 95B) और उच्चतर की शुरुआत के साथ, MBR ने सेट बिट 7 को सक्रिय ध्वज के रूप में मानना शुरू कर दिया और केवल {{mono|0x01}}..{{mono|0x7F}} मानों के लिए एक त्रुटि संदेश दिखाया। यह बाद में संबंधित विभाजन के VBR को लोड करते समय उपयोग की जाने वाली भौतिक ड्राइव इकाई के रूप में प्रविष्टि का उपयोग करना जारी रखता है, जिससे अब {{mono|0x80}} के अलावा अन्य बूट ड्राइव को भी मान्य माना जाता है, हालाँकि, MS-DOS ने इस एक्सटेंशन का उपयोग स्वयं नहीं किया। विभाजन तालिका में वास्तविक भौतिक ड्राइव संख्या को संग्रहीत करना सामान्य रूप से पश्चगामी संगतता समस्याओं का कारण नहीं बनता है, क्योंकि मान 0x80 से केवल पहले वाले के अलावा अन्य ड्राइव पर भिन्न होगा (जो पहले बूट करने योग्य नहीं है, वैसे भी)। हालाँकि, अन्य ड्राइव को बूट करने के लिए सक्षम सिस्टम के साथ भी, एक्सटेंशन अभी भी सार्वभौमिक रूप से काम नहीं कर सकता है, उदाहरण के लिए, भौतिक ड्राइव के BIOS असाइनमेंट के बाद जब ड्राइव को हटा दिया जाता है, जोड़ा या स्वैप किया जाता है। इसलिए, BIOS बूट स्पेसिफिकेशन (बीबीएस) के अनुसार,<ref name="Compaq-Phoenix-Intel_1996_BBS101" /> यह एक आधुनिक एमबीआर के लिए सबसे अच्छा अभ्यास है जो विभाजन तालिका में प्रविष्टि का उपयोग करने के बजाय मूल रूप से BIOS द्वारा प्रदान किए गए डीएल मान को पारित करने के लिए सक्रिय ध्वज के रूप में बिट 7 को स्वीकार करता है। | |||
परंपरागत रूप से, | |||
=== BIOS से MBR इंटरफ़ेस | === BIOS से MBR इंटरफ़ेस === | ||
MBR को | MBR को स्मृति स्थान {{mono|0x0000}}:{{mono|0x7C00}} पर लोड किया जाता है और निम्न CPU रजिस्टरों के साथ सेट किया जाता है जब पूर्व बूटस्ट्रैप लोडर (सामान्य रूप से BIOS में [[प्रारंभिक कार्यक्रम लोडर]]) [[सी पी यू]] के वास्तविक मोड में {{mono|0x0000}}:{{mono|0x7C00}} पर कूद कर निष्पादन पास करता है। | ||
* [[सीएस रजिस्टर]]:[[आईपी रजिस्टर]] = {{mono|0x0000}}:{{mono|0x7C00}} (हल किया गया) | * [[सीएस रजिस्टर]]:[[आईपी रजिस्टर]] = {{mono|0x0000}}:{{mono|0x7C00}} (हल किया गया) | ||
: कुछ कॉम्पैक BIOS | :कुछ कॉम्पैक BIOS इसके बजाय गलती से {{mono|0x07C0}}:{{mono|0x0000}} का उपयोग करते हैं। हालांकि यह वास्तविक मोड मेमोरी में एक ही स्थान पर हल होता है, यह गैर-मानक है और इससे बचा जाना चाहिए, क्योंकि एमबीआर कोड कुछ रजिस्टर मूल्यों को मानता है या स्थानांतरित करने योग्य नहीं लिखा जाता है, अन्यथा काम नहीं कर सकता है। | ||
* {{cn span|date=April 2021|text=[[DL register|DL]] = boot drive unit ([[fixed disk]]s / [[removable drive]]s: {{mono|0x80}} = first, {{mono|0x81}} = second, ..., {{mono|0xFE}}; [[floppy|floppies]] / [[superfloppy|superfloppies]]: {{mono|0x00}} = first, {{mono|0x01}} = second, ..., {{mono|0x7E}}; values {{mono|0x7F}} and {{mono|0xFF}} are reserved for ROM / remote drives and must not be used on disk<!-- by Microsoft/IBM and Digital Research/Novell/Caldera. -->).}} | * {{cn span|date=April 2021|text=[[DL register|DL]] = boot drive unit ([[fixed disk]]s / [[removable drive]]s: {{mono|0x80}} = first, {{mono|0x81}} = second, ..., {{mono|0xFE}}; [[floppy|floppies]] / [[superfloppy|superfloppies]]: {{mono|0x00}} = first, {{mono|0x01}} = second, ..., {{mono|0x7E}}; values {{mono|0x7F}} and {{mono|0xFF}} are reserved for ROM / remote drives and must not be used on disk<!-- by Microsoft/IBM and Digital Research/Novell/Caldera. -->).}} | ||
: DL IBM BIOS के साथ-साथ अधिकांश अन्य BIOS द्वारा समर्थित है। Toshiba T1000 BIOS इसे ठीक से समर्थन नहीं करने के लिए जाना जाता है, और कुछ पुराने Wyse 286 BIOS निश्चित डिस्क के लिए DL मानों को 2 से अधिक या बराबर का उपयोग करते हैं (जिससे BIOS के भौतिक ड्राइव नंबरों के बजाय DOS के तहत लॉजिकल ड्राइव नंबरों को | :DL IBM BIOS के साथ-साथ अधिकांश अन्य BIOS द्वारा समर्थित है। Toshiba T1000 BIOS इसे ठीक से समर्थन नहीं करने के लिए जाना जाता है, और कुछ पुराने Wyse 286 BIOS निश्चित डिस्क के लिए DL मानों को 2 से अधिक या बराबर का उपयोग करते हैं (जिससे BIOS के भौतिक ड्राइव नंबरों के बजाय DOS के तहत लॉजिकल ड्राइव नंबरों को दर्शाता है)। हटाने योग्य ड्राइव के रूप में कॉन्फ़िगर की गई USB स्टिक्स को आमतौर पर DL = 0x80, 0x81, आदि का असाइनमेंट मिलता है। हालाँकि, कुछ दुर्लभ BIOS ने गलती से उन्हें DL = 0x01 के तहत प्रस्तुत कर दिया, जैसे कि उन्हें सुपरफ्लॉपी के रूप में कॉन्फ़िगर किया गया हो। | ||
: एक मानक अनुरूप BIOS | :एक मानक अनुरूप BIOS विशेष रूप से निश्चित डिस्क/हटाने योग्य ड्राइव के लिए {{mono|0x80}} से अधिक या बराबर संख्या निर्दिष्ट करता है, और पारंपरिक रूप से केवल {{mono|0x80}} तथा {{mono|0x00}} मान बूट के दौरान भौतिक ड्राइव इकाइयों के रूप में पारित किए गए थे। परिपाटी के अनुसार, केवल फिक्स्ड डिस्क/रिमूवेबल ड्राइव का विभाजन किया जाता है, इसलिए, पारंपरिक रूप से MBR केवल DL मान देख सकता था जो {{mono|0x80}} था। कई एमबीआर को डीएल मान को अनदेखा करने और हार्ड-वायर्ड मान (सामान्य रूप से {{mono|0x80}}) के साथ काम करने के लिए कोडित किया गया था। | ||
: प्लग एंड प्ले BIOS विशिष्टता और BIOS बूट विशिष्टता (BBS) 1994 से अन्य उपकरणों को भी बूट करने योग्य बनाने की अनुमति देते हैं।<ref name="Compaq-Phoenix-Intel_1996_BBS101"/><ref name="Compaq-Phoenix-Intel_1994_PnP10A"/>बाद में | :प्लग एंड प्ले BIOS विशिष्टता और BIOS बूट विशिष्टता (BBS) 1994 से अन्य उपकरणों को भी बूट करने योग्य बनाने की अनुमति देते हैं।<ref name="Compaq-Phoenix-Intel_1996_BBS101" /><ref name="Compaq-Phoenix-Intel_1994_PnP10A" /> बाद में अनुशंसा की गई कि MBR और VBR कोड को आंतरिक रूप से हार्डवेयर्ड डिफ़ॉल्ट के बजाय DL का उपयोग करना चाहिए।<ref name="Compaq-Phoenix-Intel_1996_BBS101" /> जहां तक एमबीआर कोड का संबंध है, यह विभिन्न गैर-मानक असाइनमेंट (उपरोक्त उदाहरण देखें) के साथ संगतता भी सुनिश्चित करेगा। | ||
: एल टोरिटो | :एल टोरिटो विनिर्देश के बाद बूट करने योग्य सीडी-रोम में इस इंटरफ़ेस पर फ्लॉपी या सुपरफ्लॉपी के रूप में होने के लिए BIOS द्वारा माउंट की गई डिस्क छवियां हो सकती हैं। {{mono|0x00}} और {{mono|0x01}} के DL मानों का उपयोग [[संरक्षित क्षेत्र रन टाइम इंटरफेस एक्सटेंशन सेवाएं]] (पार्टीज़) और [[विश्वसनीय कंप्यूटिंग समूह]] (TCG) BIOS एक्सटेंशन द्वारा विश्वसनीय मोड में किया जा सकता है, अन्यथा अदृश्य पार्टियों के विभाजन, [[बूट इंजीनियरिंग एक्सटेंशन रिकॉर्ड]] के माध्यम से स्थित डिस्क छवि फ़ाइलों तक पहुँचने के लिए (BEER) हार्ड डिस्क के होस्ट प्रोटेक्टेड एरिया (HPA) के अंतिम भौतिक क्षेत्र में। जबकि फ्लॉपी या सुपरफ्लॉपी का अनुकरण करने के लिए डिज़ाइन किया गया है, एमबीआर कोड इन गैर-मानक डीएल मूल्यों को स्वीकार करते हुए कम से कम ऑपरेटिंग सिस्टम के बूट चरण में विभाजित मीडिया की छवियों का उपयोग करने की अनुमति देता है | ||
* [[डीएच रजिस्टर]] बिट 5 = 0: INT 13h के माध्यम से समर्थित डिवाइस; अन्य: परवाह नहीं है (शून्य होना चाहिए)। DH कुछ IBM BIOS द्वारा समर्थित है। | * [[डीएच रजिस्टर]] बिट 5 = 0: INT 13h के माध्यम से समर्थित डिवाइस; अन्य: परवाह नहीं है (शून्य होना चाहिए)। DH कुछ IBM BIOS द्वारा समर्थित है। | ||
* कुछ अन्य रजिस्टरों में | *कुछ अन्य रजिस्टरों में मूल IBM ROM BIOS के साथ विशेष रूप से कुछ रजिस्टर मान (डीएस, ईएस, एसएस = {{mono|0x0000}}; एसपी = {{mono|0x0400}}) हो सकते हैं, लेकिन इस पर भरोसा करने के लिए कुछ भी नहीं है, क्योंकि अन्य BIOS अन्य मानों का उपयोग कर सकते हैं। इसी वजह से आईबीएम, माइक्रोसॉफ्ट, डिजिटल रिसर्च आदि के एमबीआर कोड ने कभी इसका फायदा नहीं उठाया। बूट सेक्टरों में इन रजिस्टर मूल्यों पर भरोसा करने से चेन-बूट परिदृश्यों में भी समस्या हो सकती है। | ||
[[प्लग करें और खेलें]] BIOS या BBS समर्थन वाले सिस्टम, DL के अतिरिक्त PnP डेटा के लिए | [[प्लग करें और खेलें|प्लग-एंड-प्ले]] BIOS या BBS समर्थन वाले सिस्टम, DL के अतिरिक्त PnP डेटा के लिए एक सूचक प्रदान करेंगे:<ref name="Compaq-Phoenix-Intel_1996_BBS101"/><ref name="Compaq-Phoenix-Intel_1994_PnP10A"/> | ||
* [[डीआई रजिस्टर]]:DI रजिस्टर = पॉइंट टू<code>$PnP</code>स्थापना जांच संरचना | * [[डीआई रजिस्टर]]:DI रजिस्टर = पॉइंट टू<code>$PnP</code>स्थापना जांच संरचना | ||
: यह जानकारी एमबीआर में बूट लोडर (या वीबीआर, यदि | :यह जानकारी एमबीआर में बूट लोडर (या वीबीआर, यदि पास हो) को सक्रिय रूप से BIOS या एक निवासी PnP / BBS BIOS ओवरले के साथ बूट ऑर्डर को कॉन्फ़िगर करने के लिए मेमोरी में ओवरले करने की अनुमति देती है, आदि, हालांकि, इस जानकारी को नजरअंदाज कर दिया जाता है अधिकांश मानक एमबीआर और वीबीआर द्वारा। आदर्श रूप से, लोडेड ऑपरेटिंग सिस्टम द्वारा बाद में उपयोग के लिए ES:DI को VBR पर भेज दिया जाता है, लेकिन PnP-सक्षम ऑपरेटिंग सिस्टम में आमतौर पर PnP BIOS प्रविष्टि बिंदु को बाद में पुनर्प्राप्त करने के लिए फ़ॉलबैक विधियाँ भी होती हैं ताकि अधिकांश ऑपरेटिंग सिस्टम इस पर भरोसा न करें। | ||
=== | === एमबीआर से वीबीआर इंटरफ़ेस === | ||
सम्मेलन के अनुसार, एक मानक अनुरूप एमबीआर मेमोरी स्थान पर लोड किए गए सफलतापूर्वक लोड किए गए वीबीआर को निष्पादन पास करता है {{mono|0x0000}}:{{mono|0x7C00}}, पर कूद कर {{mono|0x0000}}:{{mono|0x7C00}} सीपीयू के वास्तविक मोड में निम्नलिखित रजिस्टरों को बनाए रखा जाता है या विशेष रूप से स्थापित किया जाता है: | सम्मेलन के अनुसार, एक मानक अनुरूप एमबीआर मेमोरी स्थान पर लोड किए गए सफलतापूर्वक लोड किए गए वीबीआर को निष्पादन पास करता है {{mono|0x0000}}:{{mono|0x7C00}}, पर कूद कर {{mono|0x0000}}:{{mono|0x7C00}} सीपीयू के वास्तविक मोड में निम्नलिखित रजिस्टरों को बनाए रखा जाता है या विशेष रूप से स्थापित किया जाता है: | ||
* सीएस: आईपी = {{mono|0x0000}}:{{mono|0x7C00}}{{efn|name="NB_CS-IP"}} (लगातार) | * सीएस: आईपी = {{mono|0x0000}}:{{mono|0x7C00}}{{efn|name="NB_CS-IP"}} (लगातार) | ||
Line 698: | Line 700: | ||
== सामग्री का संपादन और प्रतिस्थापन == | == सामग्री का संपादन और प्रतिस्थापन == | ||
यद्यपि विभिन्न डिस्क संपादकों का उपयोग करके सीधे एमबीआर सेक्टर में बाइट्स में हेरफेर करना संभव है, एमबीआर को कार्य कोड के निश्चित सेट लिखने के लिए उपकरण हैं। | यद्यपि विभिन्न डिस्क संपादकों का उपयोग करके सीधे एमबीआर सेक्टर में बाइट्स में हेरफेर करना संभव है, एमबीआर को कार्य कोड के निश्चित सेट लिखने के लिए उपकरण हैं। MS-DOS 5.0 के बाद से, प्रोग्राम <code>[[FDISK]]</code> में स्विच <code>/MBR</code> शामिल है, जो MBR कोड को फिर से लिखेगा।<ref name="Microsoft_KB69013"/> [[विंडोज 2000]] और [[विन्डोज़ एक्सपी]] के तहत, [[रिकवरी कंसोल]] का उपयोग इसके <code>fixmbr</code> कमांड का उपयोग करके स्टोरेज डिवाइस में नया एमबीआर कोड लिखने के लिए किया जा सकता है। और [[विंडोज 7]] के अंतर्गत, [[पुनर्प्राप्ति पर्यावरण]] का उपयोग <code>BOOTREC /FIXMBR</code> कमांड का उपयोग करके नया MBR कोड लिखने के लिए किया जा सकता है। कुछ तृतीय-पक्ष उपयोगिताओं का उपयोग विभाजन तालिकाओं की सामग्री को सीधे संपादित करने के लिए भी किया जा सकता है (हेक्साडेसिमल या डिस्क/सेक्टर संपादकों के किसी भी ज्ञान की आवश्यकता के बिना), जैसे [[एमबीआर विज़ार्ड]]।{{efn|name="NB_PTEDIT32"}} | ||
कुछ तृतीय-पक्ष उपयोगिताओं का उपयोग विभाजन तालिकाओं की सामग्री को सीधे संपादित करने के लिए भी किया जा सकता है (हेक्साडेसिमल या डिस्क/सेक्टर संपादकों के ज्ञान की आवश्यकता के बिना), जैसे [[एमबीआर विज़ार्ड]]।{{efn|name="NB_PTEDIT32"}} | |||
<code>dd</code> एक POSIX कमांड है जिसका उपयोग आमतौर पर स्टोरेज डिवाइस पर किसी भी स्थान को पढ़ने या लिखने के लिए किया जाता है, जिसमें MBR शामिल है। Linux में, ms-sys का उपयोग Windows MBR को स्थापित करने के लिए किया जा सकता है। [[GRUB]] और LILO परियोजनाओं में MBR क्षेत्र के लिए कोड लिखने के लिए उपकरण हैं, अर्थात् <code>grub-install</code> और <code>lilo -mbr</code>। GRUB लीगेसी इंटरएक्टिव कंसोल MBR को <code>setup</code> और <code>embed</code> कमांड का उपयोग करके लिख सकता है, लेकिन GRUB2 को वर्तमान में एक ऑपरेटिंग सिस्टम के भीतर से चलाने के लिए <code>grub-install</code> की आवश्यकता होती है। | |||
विभिन्न प्रोग्राम प्राथमिक विभाजन तालिका और विस्तारित विभाजन में तार्किक विभाजन दोनों का "बैकअप" बनाने में सक्षम हैं। | |||
लिनक्स <code>sfdisk</code> ([[SystemRescueCD]] पर) प्राथमिक और विस्तारित विभाजन तालिका के बैकअप को सहेजने में सक्षम है। यह एक फाइल बनाता है जिसे टेक्स्ट एडिटर में पढ़ा जा सकता है, या इस फाइल का उपयोग sfdisk द्वारा प्राथमिक/विस्तारित विभाजन तालिका को पुनर्स्थापित करने के लिए किया जा सकता है। विभाजन तालिका का बैकअप लेने के लिए एक उदाहरण कमांड <code>sfdisk -d /dev/hda > hda.out</code> है और पुनर्स्थापित करने के लिए <code>sfdisk /dev/hda < hda.out</code> है। विभाजन तालिका को एक डिस्क से दूसरी डिस्क में इस तरह से कॉपी करना संभव है, मिररिंग की स्थापना के लिए उपयोगी है, लेकिन <code>sfdisk -d /dev/sda | sfdisk /dev/sdb</code> ।<ref name="Linux_MAN_sfdisk"/> | |||
== यह भी देखें == | == यह भी देखें == | ||
{{Div col|colwidth=22em}} | {{Div col|colwidth=22em}} |
Revision as of 16:03, 14 December 2022
एक मास्टर बूट रिकॉर्ड (एमबीआर) एक विशेष प्रकार का बूट क्षेत्र है जो आईबीएम पीसी-संगत और उससे आगे के उपयोग के लिए निश्चित डिस्क या हटाने योग्य ड्राइव जैसे विभाजित कंप्यूटर मॉस स्टोरेज उपकरण की शुरुआत में होता है। MBRs की अवधारणा को 1983 में PC DOS 2.0 के साथ सार्वजनिक रूप से पेश किया गया था।
एमबीआर में यह जानकारी होती है कि कैसे डिस्क के क्षेत्रों को विभाजन में विभाजित किया जाता है, प्रत्येक विभाजन में एक फाइल सिस्टम होता है। एमबीआर में स्थापित ऑपरेटिंग सिस्टम के लिए लोडर के रूप में कार्य करने के लिए निष्पादन योग्य कोड भी होता है - आमतौर पर लोडर के दूसरे चरण पर नियंत्रण पारित करके, या प्रत्येक विभाजन के वॉल्यूम बूट रिकॉर्ड (वीबीआर) के संयोजन के साथ। यह एमबीआर कोड आमतौर पर बूट लोडर के रूप में जाना जाता है।[1]
MBR में विभाजन तालिका का संगठन एक विभाजित डिस्क के अधिकतम पता योग्य भंडारण स्थान को 2 टेबिबाइट (232 × 512 बाइट्स) तक सीमित करता है।[2] 32-बिट अंकगणित या 4096-बाइट सेक्टर मानते हुए इस सीमा को थोड़ा बढ़ाने के दृष्टिकोण आधिकारिक रूप से समर्थित नहीं हैं, क्योंकि वे मौजूदा बूट लोडर और अधिकांश एमबीआर-अनुरूप ऑपरेटिंग सिस्टम और सिस्टम टूल्स के साथ अनुकूलता को तोड़ते हैं, और बाहर उपयोग किए जाने पर गंभीर डेटा भ्रष्टाचार का कारण बन सकते हैं। संकीर्ण रूप से नियंत्रित सिस्टम वातावरण। इसलिए, MBR-आधारित विभाजन योजना नए कंप्यूटरों में GUID विभाजन तालिका (GPT) योजना द्वारा प्रतिस्थापित किए जाने की प्रक्रिया में है। पुराने सिस्टम के लिए बैकवर्ड कम्पैटिबिलिटी का कुछ सीमित रूप प्रदान करने के लिए एक GPT एक MBR के साथ सह-अस्तित्व में हो सकता है।
एमबीआर गैर-विभाजित मीडिया जैसे फ्लॉपी, सुपरफ्लॉपी या अन्य स्टोरेज डिवाइस पर मौजूद नहीं हैं जो इस तरह व्यवहार करने के लिए कॉन्फ़िगर किए गए हैं।
अवलोकन
मार्च 1983 में IBM PC DOS 2.0 के साथ विभाजित मीडिया के लिए समर्थन, और इस तरह मास्टर बूट रिकॉर्ड (MBR) पेश किया गया था, ताकि तत्कालीन नए IBM पर्सनल कंप्यूटर XT की 10 एमबी हार्ड डिस्क का समर्थन किया जा सके, जो अभी भी FAT12 फ़ाइल सिस्टम का उपयोग कर रहा है। . MBR का मूल संस्करण IBM के डेविड लिटन द्वारा जून 1982 में लिखा गया था। विभाजन तालिका चार प्राथमिक विभाजनों तक का समर्थन करती है, जिनमें से DOS केवल एक का उपयोग कर सकता है। यह तब नहीं बदला जब FAT16 को DOS 3.0 के साथ एक नई फाइल सिस्टम के रूप में पेश किया गया। विस्तारित विभाजन के लिए समर्थन, अन्य विभाजनों को रखने के लिए कंटेनर के रूप में उपयोग किया जाने वाला एक विशेष प्राथमिक विभाजन प्रकार, DOS 3.2 के साथ जोड़ा गया था, और एक विस्तारित विभाजन के अंदर नेस्टेड लॉजिकल ड्राइव DOS 3.30 के साथ आया था। चूंकि MS-DOS, PC DOS, OS/2 और Windows कभी भी उन्हें बूट करने के लिए सक्षम नहीं थे, MBR प्रारूप और बूट कोड कार्यक्षमता में लगभग अपरिवर्तित रहे, कुछ तृतीय-पक्ष कार्यान्वयनों को छोड़कर, DOS और OS/ के पूरे युग में 2 1996 तक।
1996 में, 8 जीबी से बड़े डिस्क का समर्थन करने के लिए विंडोज 95बी और डॉस 7.10 में तार्किक ब्लॉक एड्रेसिंग (एलबीए) के लिए समर्थन पेश किया गया था। डिस्क टाइमस्टैम्प भी पेश किए गए थे।[3] यह इस विचार को भी दर्शाता है कि एमबीआर ऑपरेटिंग सिस्टम और फाइल सिस्टम स्वतंत्र होने के लिए है। हालाँकि, MBR के हालिया Microsoft कार्यान्वयन में इस डिज़ाइन नियम को आंशिक रूप से समझौता किया गया था, जो FAT16B और FAT32 विभाजन प्रकार 0x06/0x0B के लिए सिलेंडर-हेड-सेक्टर पहुँच को लागू करता है, जबकि LBA का उपयोग 0x0E/0x0C के लिए किया जाता है।
एमबीआर प्रारूप (जो कभी-कभी संगतता समस्याओं का कारण बनता है) के कुछ आंतरिक विवरणों के कभी-कभी खराब दस्तावेज़ीकरण के बावजूद, पीसी-संगत कंप्यूटरों की व्यापक लोकप्रियता और दशकों से इसकी अर्ध-स्थैतिक प्रकृति के कारण इसे वास्तविक उद्योग मानक के रूप में व्यापक रूप से अपनाया गया है। . यह अन्य प्लेटफार्मों के लिए कंप्यूटर ऑपरेटिंग सिस्टम द्वारा समर्थित होने की सीमा तक भी था। कभी-कभी यह बूटस्ट्रैपिंग और विभाजन के लिए अन्य पहले से मौजूद या क्रॉस-प्लेटफ़ॉर्म मानकों के अतिरिक्त होता था।[4]
एमबीआर विभाजन प्रविष्टियां और वाणिज्यिक ऑपरेटिंग सिस्टम में उपयोग किए जाने वाले एमबीआर बूट कोड, हालांकि, 32 बिट्स तक सीमित हैं।[2] इसलिए, एमबीआर विभाजन योजना (33-बिट अंकगणित के बिना) द्वारा 512-बाइट क्षेत्रों (चाहे वास्तविक या नकली) का उपयोग करने वाले डिस्क पर समर्थित अधिकतम डिस्क आकार 2 टीआईबी तक सीमित है।[2] नतीजतन, बड़ी डिस्क के लिए एक अलग विभाजन योजना का उपयोग किया जाना चाहिए, क्योंकि वे 2010 से व्यापक रूप से उपलब्ध हो गए हैं। एमबीआर विभाजन योजना इसलिए GUID विभाजन तालिका (GPT) द्वारा अधिक्रमित होने की प्रक्रिया में है। आधिकारिक दृष्टिकोण सुरक्षात्मक एमबीआर को नियोजित करके डेटा अखंडता सुनिश्चित करने से थोड़ा अधिक है। विशेष रूप से, यह ऑपरेटिंग सिस्टम के साथ पश्चगामी संगतता प्रदान नहीं करता है जो GPT योजना का भी समर्थन नहीं करता है। इस बीच, दोनों विभाजन योजनाओं में "समानांतर" और/या पुराने ऑपरेटिंग सिस्टम को जीपीटी से बूट करने की अनुमति देने के लिए डिस्क के पहले भौतिक 2 टीआईबी में स्थित विभाजन को बनाए रखने के लिए हाइब्रिड एमबीआर के कई रूपों को तीसरे पक्ष द्वारा डिजाइन और कार्यान्वित किया गया है। विभाजन भी। इन समाधानों की वर्तमान गैर-मानक प्रकृति कुछ परिदृश्यों में विभिन्न अनुकूलता समस्याओं का कारण बनती है।
MBR में ड्राइव के पहले डिस्क क्षेत्र में स्थित 512 या अधिक बाइट होते हैं।
इसमें इनमें से एक या अधिक हो सकते हैं:
- स्टोरेज डिवाइस के विभाजन का वर्णन करने वाली एक विभाजन तालिका। इस संदर्भ में बूट सेक्टर को पार्टीशन सेक्टर भी कहा जा सकता है।
- बूटस्ट्रैप कोड : कॉन्फ़िगर किए गए बूट करने योग्य विभाजन की पहचान करने के निर्देश, फिर एक चेन लोडर के रूप में इसके वॉल्यूम बूट रिकॉर्ड (VBR) को लोड और निष्पादित करें।
- वैकल्पिक 32-बिट डिस्क टाइमस्टैम्प।[3]
- वैकल्पिक 32-बिट डिस्क हस्ताक्षर।[5][6][7][8]
डिस्क विभाजन
आईबीएम पीसी डॉस 2.0 ने एमबीआर विभाजन को स्थापित करने और बनाए रखने के लिए FDISK
उपयोगिता की शुरुआत की। जब एक स्टोरेज डिवाइस को इस योजना के अनुसार विभाजित किया जाता है, तो इसके MBR में एक विभाजन तालिका होती है, जो विभाजन के रूप में संदर्भित रैखिक क्षेत्रों के स्थान, आकार और अन्य विशेषताओं का वर्णन करती है।
अधिक जटिल विभाजन योजनाओं, जैसे कि विस्तारित बूट रिकॉर्ड (EBRs), BSD डिस्कलेबल, या तार्किक डिस्क प्रबंधक मेटाडेटा विभाजन का वर्णन करने के लिए स्वयं विभाजन में भी डेटा हो सकता है।[9]
एमबीआर एक विभाजन में स्थित नहीं है; यह पहले विभाजन से पहले डिवाइस के पहले सेक्टर (भौतिक ऑफ़सेट 0) पर स्थित है। (एक गैर-विभाजित डिवाइस पर या एक अलग विभाजन के भीतर मौजूद बूट सेक्टर को वॉल्यूम बूट रिकॉर्ड कहा जाता है।) उन मामलों में जहां कंप्यूटर डायनेमिक ड्राइव BIOS ओवरले या बूट प्रबंधक चला रहा है, विभाजन तालिका को किसी अन्य भौतिक में ले जाया जा सकता है। डिवाइस पर स्थान; उदाहरण के लिए, ऑनट्रैक डिस्क मैनेजर अक्सर दूसरे सेक्टर में मूल एमबीआर सामग्री की एक प्रति रखता है, फिर बाद में बूट किए गए ओएस या एप्लिकेशन से खुद को छुपाता है, इसलिए एमबीआर कॉपी को ऐसा माना जाता है जैसे कि यह अभी भी पहले सेक्टर में रह रहा हो।
सेक्टर लेआउट
परिपाटी के अनुसार, एमबीआर विभाजन तालिका योजना में बिल्कुल चार प्राथमिक विभाजन तालिका प्रविष्टियाँ हैं, हालाँकि कुछ ऑपरेटिंग सिस्टम और सिस्टम टूल्स ने इसे पाँच तक बढ़ा दिया है (उन्नत सक्रिय विभाजन (AAP) PTS-DOS 6.60[10] और DR-DOS 7.07 के साथ) , आठ (AST Research और NEC MS-DOS 3.x[11][12] और साथ ही स्पीडस्टोर स्टोरेज डायमेंशन स्पीडस्टोर), या सोलह प्रविष्टियाँ (ऑनट्रैक डिस्क मैनेजर के साथ)।
Address | Description | Size (bytes) | |
---|---|---|---|
0x0000 (0)
|
Bootstrap code area | 446 | |
0x01BE (446)
|
Partition entry №1 | Partition table (for primary partitions) |
16 |
0x01CE (462)
|
Partition entry №2 | 16 | |
0x01DE (478)
|
Partition entry №3 | 16 | |
0x01EE (494)
|
Partition entry №4 | 16 | |
0x01FE (510)
|
0x55
|
Boot signature[lower-alpha 1] | 2 |
0x01FF (511)
|
0xAA
| ||
Total size: 446 + 4×16 + 2 | 512 |
Address | Description | Size (bytes) | |
---|---|---|---|
0x0000 (0) |
Bootstrap code area (part 1) | 218 | |
0x00DA (218)
|
0x0000
|
Disk timestamp[3][lower-alpha 2] (optional; Windows 95B/98/98SE/ME (MS-DOS 7.1–8.0). Alternatively, can serve as OEM loader signature with NEWLDR) | 2 |
0x00DC (220)
|
Original physical drive (0x80 –0xFF )
|
1 | |
0x00DD (221)
|
Seconds (0–59) | 1 | |
0x00DE (222)
|
Minutes (0–59) | 1 | |
0x00DF (223)
|
Hours (0–23) | 1 | |
0x00E0 (224) |
Bootstrap code area (part 2, code entry at 0x0000 )
|
216 (or 222) | |
0x01B8 (440)
|
32-bit disk signature | Disk signature (optional; UEFI, Linux, Windows NT family and other OSes) | 4 |
0x01BC (444)
|
0x0000 (0x5A5A if copy-protected)
|
2 | |
0x01BE (446)
|
Partition entry №1 | Partition table (for primary partitions) |
16 |
0x01CE (462)
|
Partition entry №2 | 16 | |
0x01DE (478)
|
Partition entry №3 | 16 | |
0x01EE (494)
|
Partition entry №4 | 16 | |
0x01FE (510)
|
0x55
|
Boot signature[lower-alpha 1] | 2 |
0x01FF (511)
|
0xAA
| ||
Total size: 218 + 6 + 216 + 6 + 4×16 + 2 | 512 |
Address | Description | Size (bytes) | |
---|---|---|---|
0x0000 (0) |
Bootstrap code area | 428 | |
0x01AC (428)
|
0x78
|
AAP signature (optional) | 2 |
0x01AD (429)
|
0x56
| ||
0x01AE (430)
|
AAP physical drive (0x80 -0xFE ; 0x00 : not used; 0x01 -0x7F , 0xFF : reserved)
|
AAP record (optional) (AAP partition entry #0 with special semantics) | 1 |
0x01AF (431)
|
CHS (start) address of AAP partition/image file or VBR/EBR | 3 | |
0x01B2 (434)
|
Reserved for AAP partition type (0x00 if not used) (optional)
|
1 | |
0x01B3 (435)
|
Reserved for CHS end address in AAP (optional; byte at offset 0x01B5 is also used for MBR checksum (PTS DE, BootWizard); 0x000000 if not used)
|
3 | |
0x01B6 (438)
|
Start LBA of AAP image file or VBR/EBR or relative sectors of AAP partition (copied to offset +01Chex in the loaded sector over the "hidden sectors" entry of a DOS 3.31 BPB (or emulation thereof) to also support EBR booting)
|
4 | |
0x01BA (442)
|
Reserved for sectors in AAP (optional; 0x00000000 if not used)
|
4 | |
0x01BE (446)
|
Partition entry №1 | Partition table (for primary partitions) |
16 |
0x01CE (462)
|
Partition entry №2 | 16 | |
0x01DE (478)
|
Partition entry №3 | 16 | |
0x01EE (494)
|
Partition entry №4 | 16 | |
0x01FE (510)
|
0x55
|
Boot signature[lower-alpha 1] | 2 |
0x01FF (511)
|
0xAA
| ||
Total size: 428 + 2 + 16 + 4×16 + 2 | 512 |
Address | Description | Size (bytes) | |
---|---|---|---|
0x0000 (0)
|
JMPS (EBhex ) / NEWLDR record size (often 0x0A /0x16 /0x1C for code start at 0x000C /0x0018 /0x001E )
|
NEWLDR record (optional) | 2 |
0x0002 (2)
|
"NEWLDR " signature
|
6 | |
0x0008 (8)
|
LOADER physical drive and boot flag (0x80 -0xFE , 0x00 -0x7E , 0xFF , 0x7F ) (if not used, this and following 3 bytes must be all 0)
|
1 | |
0x0009 (9)
|
CHS address of LOADER boot sector or image file (f.e. IBMBIO.LDR) (0x000000 if not used)
|
3 | |
0x000C (12)
|
Allowed DL minimum, else take from partition table (0x80 : default; 0x00 : always use DL; 0xFF : always use table entry)
|
1 | |
0x000D (13)
|
Reserved (default: 0x000000 )
|
3 | |
0x0010 (16)
|
LBA of LOADER boot sector or image file (optional; 0x00000000 if not used)
|
4 | |
0x0014 (20)
|
Patch offset of VBR boot unit (default 0x0000 if not used, else 0024hex or 01FDhex )
|
2 | |
0x0016 (22)
|
Checksum (0x0000 if not used)
|
2 | |
0x0018 (24)
|
OEM loader signature ("MSWIN4 " for REAL/32, see also offset +0DAhex , corresponds with OEM label at offset +003hex in VBRs (optional)
|
6 | |
Varies | Bootstrap code area (code entry at 0x0000 )
|
Varies | |
0x01AC (428)
|
0x78
|
AAP signature (optional) | 2 |
0x01AD (429)
|
0x56
| ||
0x01AE (430)
|
AAP partition entry №0 with special semantics | AAP record (optional) | 16 |
0x01BE (446)
|
Partition entry №1 | Partition table (for primary partitions) |
16 |
0x01CE (462)
|
Partition entry №2 | 16 | |
0x01DE (478)
|
Partition entry №3 | 16 | |
0x01EE (494)
|
Partition entry №4 | 16 | |
0x01FE (510)
|
0x55
|
Boot signature[lower-alpha 1] | 2 |
0x01FF (511)
|
0xAA
| ||
Total size: 30 + 398 + 2 + 16 + 4×16 + 2 | 512 |
Address | Description | Size (bytes) | |
---|---|---|---|
0x0000 (0) |
Bootstrap code area | 380 | |
0x017C (380)
|
0x5A
|
AST/NEC signature (optional; not for SpeedStor) | 2 |
0x017D (381)
|
0xA5
| ||
0x017E (382)
|
Partition entry №8 | AST/NEC expanded partition table (optional; also for SpeedStor) |
16 |
0x018E (398)
|
Partition entry №7 | 16 | |
0x019E (414)
|
Partition entry №6 | 16 | |
0x01AE (430)
|
Partition entry №5 | 16 | |
0x01BE (446)
|
Partition entry №4 | Partition table (for primary partitions) |
16 |
0x01CE (462)
|
Partition entry №3 | 16 | |
0x01DE (478)
|
Partition entry №2 | 16 | |
0x01EE (494)
|
Partition entry №1 | 16 | |
0x01FE (510)
|
0x55
|
Boot signature[lower-alpha 1] | 2 |
0x01FF (511)
|
0xAA
| ||
Total size: 380 + 2 + 4×16 + 4×16 + 2 | 512 |
Address | Description | Size (bytes) | |
---|---|---|---|
0x0000 (0) |
Bootstrap code area | 252 | |
0x00FC (252)
|
0xAA
|
DM signature (optional) | 2 |
0x00FD (253)
|
0x55
| ||
0x00FE (254)
|
Partition entry | DM expanded partition table (optional) |
16 |
0x010E (270)
|
Partition entry | 16 | |
0x011E (286)
|
Partition entry | 16 | |
0x012E (302)
|
Partition entry | 16 | |
0x013E (318)
|
Partition entry | 16 | |
0x014E (334)
|
Partition entry | 16 | |
0x015E (350)
|
Partition entry | 16 | |
0x016E (366)
|
Partition entry | 16 | |
0x017E (382)
|
Partition entry | 16 | |
0x018E (398)
|
Partition entry | 16 | |
0x019E (414)
|
Partition entry | 16 | |
0x01AE (430)
|
Partition entry | 16 | |
0x01BE (446)
|
Partition entry №1 | Partition table (for primary partitions) |
16 |
0x01CE (462)
|
Partition entry №2 | 16 | |
0x01DE (478)
|
Partition entry №3 | 16 | |
0x01EE (494)
|
Partition entry №4 | 16 | |
0x01FE (510)
|
0x55
|
Boot signature[lower-alpha 1] | 2 |
0x01FF (511)
|
0xAA
| ||
Total size: 252 + 2 + 12×16 + 4×16 + 2 | 512 |
विभाजन तालिका प्रविष्टियाँ
Offset (bytes) |
Field length |
Description | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x00 | 1 byte | Status or physical drive (bit 7 set is for active or bootable, old MBRs only accept 0x80, 0x00 means inactive, and 0x01–0x7F stand for invalid)[lower-alpha 3] | ||||||||||||||||||
0x01 | 3 bytes | CHS address of first absolute sector in partition.[lower-alpha 4] The format is described by three bytes, see the next three rows. | ||||||||||||||||||
0x01 | 1 byte |
| ||||||||||||||||||
0x02 | 1 बाइट |
| ||||||||||||||||||
0x03 | 1 बाइट |
| ||||||||||||||||||
0x04 | [15]|- | 0x05 | 3 बाइट | विभाजन में अंतिम निरपेक्ष क्षेत्र का सिलेंडर-हेड-सेक्टर।[lower-alpha 4] प्रारूप 3 बाइट्स द्वारा वर्णित है, अगली 3 पंक्तियाँ देखें। | ||||||||||||||||
0x05 | 1 बाइट |
| ||||||||||||||||||
0x06 | 1 बाइट |
| ||||||||||||||||||
0x07 | 1 बाइट |
| ||||||||||||||||||
0x08 | 4 बाइट | विभाजन में पहले निरपेक्ष सेक्टर का तार्किक ब्लॉक एड्रेसिंग[lower-alpha 6] | ||||||||||||||||||
0x0C | 4 बाइट | विभाजन में क्षेत्रों की संख्या[lower-alpha 6] |
पीसी एक्सटी के युग से हार्ड डिस्क प्रौद्योगिकी का एक आर्टिफैक्ट, विभाजन तालिका सिलेंडर (डिस्क ड्राइव), डिस्क रीड-एंड-राइट हेड और सेक्टर (सीएचएस एड्रेसिंग) की इकाइयों का उपयोग करके भंडारण माध्यम को उप-विभाजित करती है। ये मान अब आधुनिक डिस्क ड्राइव में उनके हमनाम के अनुरूप नहीं हैं, साथ ही ठोस-राज्य ड्राइव जैसे अन्य उपकरणों में अप्रासंगिक हैं, जिनमें भौतिक रूप से सिलेंडर या हेड नहीं होते हैं।
सीएचएस योजना में, सेक्टर इंडेक्स (लगभग) हमेशा सेक्टर 0 के बजाय सेक्टर 1 के साथ शुरू होता है, और MS-DOS/PC DOS के सभी संस्करणों में त्रुटि के कारण 7.10 तक, हेड्स की संख्या आम तौर पर सीमित होती है 256 के बजाय 255[lower-alpha 7]। जब इन क्षेत्रों में फ़िट होने के लिए एक सीएचएस पता बहुत बड़ा होता है, तो टपल (1023, 254, 63) आज आमतौर पर उपयोग किया जाता है, हालांकि पुराने सिस्टम पर, और पुराने डिस्क टूल्स के साथ, सिलेंडर वैल्यू अक्सर मॉड्यूलो के चारों ओर 8 जीबी के करीब सीएचएस बैरियर लपेटा जाता है, जिससे अस्पष्टता और डेटा भ्रष्टाचार का जोखिम होता है। (यदि स्थिति में GPT के साथ डिस्क पर "सुरक्षात्मक" MBR शामिल है, तो Intel के एक्स्टेंसिबल फ़र्मवेयर इंटरफ़ेस विनिर्देश के लिए आवश्यक है कि टपल (1023, 255, 63) का उपयोग किया जाए।) 10-बिट सिलेंडर मान क्रम में दो बाइट्स के भीतर दर्ज किया गया है मूल/विरासत INT 13h BIOS डिस्क एक्सेस रूटीन में कॉल करने की सुविधा के लिए, जहां 16 बिट्स को सेक्टर और सिलेंडर भागों में विभाजित किया गया था, न कि बाइट सीमाओं पर।[14]
सीएचएस एड्रेसिंग की सीमाओं के कारण,[17][18] एलबीए, या लॉजिकल ब्लॉक एड्रेसिंग का उपयोग करने के लिए एक संक्रमण किया गया था। विभाजन की लंबाई और विभाजन प्रारंभ पता दोनों विभाजन तालिका प्रविष्टियों में 32-बिट मात्रा के रूप में संग्रहीत क्षेत्र मान हैं। क्षेत्र का आकार 512 (29) बाइट्स पर निश्चित माना जाता था, और चिपसेट, बूट सेक्टर, ऑपरेटिंग सिस्टम, डेटाबेस इंजन, विभाजन उपकरण, बैकअप और फाइल सिस्टम उपयोगिताओं और अन्य सॉफ़्टवेयर सहित महत्वपूर्ण घटकों की एक विस्तृत श्रृंखला का यह मान कठिन था- कोडित। 2009 के अंत से, 4096-बाइट सेक्टरों (4Kn या उन्नत प्रारूप) को नियोजित करने वाले डिस्क ड्राइव उपलब्ध हैं, हालांकि इनमें से कुछ ड्राइव के लिए सेक्टर का आकार अभी भी 512 बाइट्स के रूप में हार्ड-में रूपांतरण के माध्यम से होस्ट सिस्टम को रिपोर्ट किया गया था। ड्राइव फर्मवेयर और 512 एमुलेशन ड्राइव ((512e) के रूप में संदर्भित।
चूंकि ब्लॉक पते और आकार 32 बिट्स का उपयोग करके MBR की विभाजन तालिका में संग्रहीत किए जाते हैं, अधिकतम आकार, साथ ही उच्चतम प्रारंभ पता, 512-बाइट सेक्टर (वास्तविक या अनुकरणीय) वाले ड्राइव का उपयोग करने वाले विभाजन का 2 TiB से अधिक नहीं हो सकता है। −512 बाइट्स (2199023255040 बाइट्स या 4294967295 (232−1) सेक्टर × 512 (29) बाइट्स प्रति सेक्टर)।[2] इस क्षमता सीमा को कम करना जीपीटी के विकास के लिए प्रमुख प्रेरणाओं में से एक था।
चूंकि विभाजन जानकारी एमबीआर विभाजन तालिका में शुरुआती ब्लॉक पते और लंबाई का उपयोग करके संग्रहीत की जाती है, इसलिए सिद्धांत रूप में विभाजन को इस तरह से परिभाषित करना संभव हो सकता है कि 512-बाइट क्षेत्रों के साथ डिस्क के लिए आवंटित स्थान कुल आकार 4 देता है। TiB, यदि एक को छोड़कर सभी विभाजन 2 TiB सीमा से नीचे स्थित हैं और अंतिम विभाजन को 232−1 को शुरू करने या बंद करने के रूप में निर्दिष्ट किया गया है और 232−1 तक के आकार को निर्दिष्ट करता है, जिससे एक विभाजन को परिभाषित किया जाता है जिसके लिए 33 की बजाय आवश्यकता होती है एक्सेस किए जाने वाले सेक्टर एड्रेस के लिए 32 बिट्स। हालाँकि, व्यवहार में, केवल कुछ LBA-48-सक्षम ऑपरेटिंग सिस्टम, जिसमें Linux, FreeBSD और Windows 7[19] शामिल हैं, जो 64-बिट सेक्टर पतों का आंतरिक रूप से उपयोग करते हैं, वास्तव में इसका समर्थन करते हैं। कोड स्थान की कमी और एमबीआर विभाजन तालिका की प्रकृति के कारण केवल 32 बिट्स, बूट सेक्टरों का समर्थन करने के लिए, भले ही एलबीए-28 के बजाय एलबीए-48 का समर्थन करने के लिए सक्षम किया गया हो, अक्सर 32-बिट गणनाओं का उपयोग करते हैं, जब तक कि वे विशेष रूप से समर्थन करने के लिए डिज़ाइन नहीं किए जाते हैं LBA-48 की पूर्ण पता श्रेणी या केवल 64-बिट प्लेटफॉर्म पर चलने का इरादा है। आंतरिक रूप से 32-बिट सेक्टर पतों का उपयोग करने वाला कोई भी बूट कोड या ऑपरेटिंग सिस्टम पतों को इस विभाजन तक पहुँचने के लिए चारों ओर लपेट देगा और इसके परिणामस्वरूप सभी विभाजनों पर गंभीर डेटा भ्रष्टाचार होगा।
डिस्क के लिए जो 512 बाइट्स के अलावा एक सेक्टर आकार प्रस्तुत करता है, जैसे USB बाहरी ड्राइव, वहाँ भी सीमाएँ हैं। 4096 के एक सेक्टर आकार के परिणामस्वरूप एक विभाजन के आकार में आठ गुना वृद्धि होती है जिसे MBR का उपयोग करके परिभाषित किया जा सकता है, जिससे आकार में 16 TiB (232 × 4096 बाइट्स) तक के विभाजन की अनुमति मिलती है।[20] Windows XP की तुलना में हाल के संस्करण बड़े सेक्टर आकारों के साथ-साथ Mac OS X का समर्थन करते हैं, और लिनक्स ने 2.6.31[21] या 2.6.32,[22] के बाद से बड़े सेक्टर आकारों का समर्थन किया है, लेकिन बूट लोडर, विभाजन के साथ समस्याएँ उपकरण और कंप्यूटर BIOS कार्यान्वयन कुछ सीमाएँ प्रस्तुत करते हैं,[23] क्योंकि वे अक्सर सेक्टर बफ़र्स के लिए केवल 512 बाइट्स आरक्षित करने के लिए हार्ड-वायर्ड होते हैं, जिससे मेमोरी बड़े सेक्टर आकारों के लिए अधिलेखित हो जाती है। इससे अप्रत्याशित व्यवहार भी हो सकता है, और इसलिए जब अनुकूलता और मानक अनुरूपता एक मुद्दा हो तो इससे बचना चाहिए।
जहां एक डेटा स्टोरेज डिवाइस को GPT योजना के साथ विभाजित किया गया है, मास्टर बूट रिकॉर्ड में अभी भी एक विभाजन तालिका होगी, लेकिन इसका एकमात्र उद्देश्य GPT के अस्तित्व को इंगित करना और केवल MBR विभाजन तालिका योजना को समझने वाले उपयोगिता कार्यक्रमों को रोकना है। डिस्क पर मुक्त स्थान के रूप में वे अन्यथा जो देखेंगे, उसमें कोई भी विभाजन बनाना, जिससे गलती से GPT मिटा दिया जाएगा।
सिस्टम बूटस्ट्रैपिंग
आईबीएम पीसी-संगत कंप्यूटरों पर, बूटस्ट्रैपिंग फर्मवेयर (रीड ऑनली मैमोरी BIOS के भीतर निहित) मास्टर बूट रिकॉर्ड को लोड और निष्पादित करता है।[24] PC/XT (टाइप 5160) ने Intel 8088 कंप्यूटर प्रोसेसर का उपयोग किया। संगत बने रहने के लिए, सभी x86 आर्किटेक्चर सिस्टम एक ऑपरेटिंग मोड में माइक्रोप्रोसेसर से शुरू होते हैं जिसे वास्तविक मोड कहा जाता है। BIOS MBR को स्टोरेज डिवाइस से भौतिक मेमोरी में पढ़ता है, और फिर यह माइक्रोप्रोसेसर को बूट कोड की शुरुआत के लिए निर्देशित करता है। चूंकि BIOS वास्तविक मोड में चलता है, जब MBR प्रोग्राम निष्पादित होना शुरू होता है तो प्रोसेसर वास्तविक मोड में होता है, और इसलिए MBR की शुरुआत में वास्तविक-मोड मशीन कोड शामिल होने की उम्मीद है।[24]
चूंकि BIOS बूटस्ट्रैप रूटीन लोड करता है और भौतिक डिस्क से ठीक एक सेक्टर चलाता है, बूट कोड के साथ MBR में विभाजन तालिका होने से MBR प्रोग्राम के डिज़ाइन को सरल करता है। इसमें एक छोटा प्रोग्राम होता है जो लक्षित विभाजन के वॉल्यूम बूट रिकॉर्ड (वीबीआर) को लोड करता है। नियंत्रण तब इस कोड को दिया जाता है, जो वास्तविक ऑपरेटिंग सिस्टम को लोड करने के लिए जिम्मेदार होता है। इस प्रक्रिया को चेन लोडिंग के रूप में जाना जाता है।
लोकप्रिय एमबीआर कोड प्रोग्राम पीसी डॉस और एमएस-डॉस को बूट करने के लिए बनाए गए थे, और समान बूट कोड व्यापक उपयोग में रहता है। ये बूट सेक्टर FDISK
पार्टीशन टेबल स्कीम के उपयोग में होने की उम्मीद करते हैं और MBR के एम्बेडेड पार्टीशन टेबल में विभाजन की सूची को स्कैन करते हैं ताकि केवल एक को खोजा जा सके जो सक्रिय ध्वज के साथ चिह्नित है।[25] यह तब सक्रिय विभाजन के वॉल्यूम बूट रिकॉर्ड (वीबीआर) को लोड करता है और चलाता है।
वैकल्पिक बूट कोड कार्यान्वयन हैं, जिनमें से कुछ बूट प्रबंधकों द्वारा संस्थापित किए गए हैं, जो विभिन्न तरीकों से कार्य करते हैं। कुछ एमबीआर कोड डिस्क के पहले ट्रैक से बूट मैनेजर के लिए अतिरिक्त कोड लोड करता है, जिसे वह "मुक्त" स्थान मानता है जो किसी डिस्क विभाजन को आवंटित नहीं किया जाता है, और इसे निष्पादित करता है। एक एमबीआर प्रोग्राम उपयोगकर्ता के साथ बातचीत कर सकता है यह निर्धारित करने के लिए कि कौन सा विभाजन किस ड्राइव पर बूट होना चाहिए, और एक अलग ड्राइव के एमबीआर पर नियंत्रण स्थानांतरित कर सकता है। अन्य एमबीआर कोड में लोड करने और निष्पादित करने के लिए बूट प्रबंधक कोड के शेष के डिस्क स्थानों (अक्सर फाइल सिस्टम में फाइल की सामग्री के अनुरूप) की एक सूची होती है। (पहला व्यवहार उस व्यवहार पर निर्भर करता है जो सभी डिस्क विभाजन उपयोगिताओं में सार्वभौमिक नहीं है, विशेष रूप से वे जो GPTs को पढ़ते और लिखते हैं। अंतिम के लिए आवश्यक है कि डिस्क स्थानों की एम्बेडेड सूची को अद्यतन किया जाए जब परिवर्तन किए जाते हैं जो कोड के शेष भाग को स्थानांतरित कर देंगे। )
उन मशीनों पर जो x86 प्रोसेसर का उपयोग नहीं करते हैं, या x86 मशीनों पर गैर-BIOS फ़र्मवेयर जैसे कि ओपन फ़र्मवेयर या एक्स्टेंसिबल फ़र्मवेयर इंटरफ़ेस (EFI) फ़र्मवेयर, यह डिज़ाइन अनुपयुक्त है, और MBR सिस्टम बूटस्ट्रैप के हिस्से के रूप में उपयोग नहीं किया जाता है।[26] इसके बजाय EFI फर्मवेयर सीधे GPT विभाजन योजना और FAT फाइल सिस्टम प्रारूप को समझने में सक्षम है, और EFI सिस्टम विभाजन में फाइलों के रूप में रखे प्रोग्राम को लोड और चलाता है।[27] यदि GPT विभाजन तालिका योजना का उपयोग किया गया है, तो MBR केवल उसी हद तक शामिल होगा, जिसमें संगतता उद्देश्यों के लिए एक विभाजन तालिका शामिल हो सकती है।
कुछ एमबीआर प्रतिस्थापन कोड है जो ईएफआई फर्मवेयर के बूटस्ट्रैप का अनुकरण करता है, जो गैर-ईएफआई मशीनों को जीपीटी विभाजन योजना का उपयोग करके डिस्क से बूट करने में सक्षम बनाता है। यह एक GPT का पता लगाता है, प्रोसेसर को सही ऑपरेटिंग मोड में रखता है, और इस कार्य को पूरा करने के लिए EFI संगत कोड को डिस्क से लोड करता है।
डिस्क पहचान
बूटस्ट्रैप कोड और विभाजन तालिका के अतिरिक्त, मास्टर बूट रिकॉर्ड में डिस्क हस्ताक्षर हो सकते हैं। यह एक 32-बिट मान है जिसका उद्देश्य विशिष्ट रूप से डिस्क माध्यम की पहचान करना है (जैसा कि डिस्क इकाई के विपरीत है - दो आवश्यक रूप से हटाने योग्य हार्ड डिस्क के लिए समान नहीं हैं)।
डिस्क हस्ताक्षर विंडोज एनटी संस्करण 3.5 द्वारा पेश किया गया था, लेकिन अब इसका उपयोग कई ऑपरेटिंग सिस्टमों द्वारा किया जाता है, जिसमें लिनक्स कर्नेल संस्करण 2.6 और बाद में शामिल है। Linux उपकरण NT डिस्क हस्ताक्षर का उपयोग यह निर्धारित करने के लिए कर सकते हैं कि मशीन किस डिस्क से बूट हुई है।[28] विंडोज एनटी (और बाद में माइक्रोसॉफ्ट ऑपरेटिंग सिस्टम) उस ओएस के तहत कंप्यूटर से जुड़े किसी भी डिस्क पर सभी विभाजनों के लिए एक इंडेक्स के रूप में डिस्क हस्ताक्षर का उपयोग करता है; ये हस्ताक्षर विंडोज रजिस्ट्री कुंजियों में रखे जाते हैं, मुख्य रूप से डिस्क विभाजन और ड्राइव अक्षरों के बीच लगातार मैपिंग को संग्रहित करने के लिए। बूट करने योग्य Windows NT (या बाद के) विभाजन के स्थान का वर्णन करने के लिए इसका उपयोग Windows NT BOOT.INI फ़ाइलों में भी किया जा सकता है (हालांकि अधिकांश ऐसा नहीं करते हैं)।[29]एक कुंजी (कई के बीच), जहां Windows 2000/XP रजिस्ट्री में NT डिस्क हस्ताक्षर दिखाई देते हैं, वह है:
विंडोज एनटी (और बाद में माइक्रोसॉफ्ट ऑपरेटिंग सिस्टम) उस ओएस के तहत कंप्यूटर से जुड़े किसी भी डिस्क पर सभी विभाजनों के लिए एक इंडेक्स के रूप में डिस्क हस्ताक्षर का उपयोग करता है; ये हस्ताक्षर विंडोज रजिस्ट्री कुंजियों में रखे जाते हैं, मुख्य रूप से डिस्क विभाजन और ड्राइव अक्षरों के बीच लगातार मैपिंग को संग्रहित करने के लिए। बूट करने योग्य Windows NT (या बाद के) विभाजनों के स्थान का वर्णन करने के लिए इसका उपयोग Windows NT BOOT.INI फ़ाइलों में भी किया जा सकता है (हालांकि अधिकांश ऐसा नहीं करते हैं)।[29] एक कुंजी (कई के बीच), जहां Windows 2000/XP रजिस्ट्री में NT डिस्क हस्ताक्षर दिखाई देते हैं, वह है:
HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices\
यदि MBR में संग्रहीत डिस्क का हस्ताक्षर A8 E1 B9 D2 (उस क्रम में) था और इसका पहला विभाजन लॉजिकल ड्राइव C: Windows के अंतर्गत था, तो कुंजी मान \DosDevices\C:
के अंतर्गत REG_BINARY
डेटा होगा:
ए8 ई1 बी9 डी2 00 7ई 00 00 00 00 00 00
पहले चार बाइट्स को डिस्क सिग्नेचर कहा जाता है। (अन्य कुंजियों में, ये बाइट्स MBR सेक्टर में पाए जाने वाले क्रम से विपरीत क्रम में प्रकट हो सकते हैं।) इसके बाद आठ और बाइट्स होते हैं, जो 64-बिट पूर्णांक बनाते हैं, छोटे-अंत संकेतन में, जिनका उपयोग बाइट ऑफ़सेट का पता लगाने के लिए किया जाता है। इस विभाजन का। इस मामले में, 00 7E हेक्साडेसिमल मान 0x7E00 (32,256) के अनुरूप है। इस धारणा के तहत कि विचाराधीन ड्राइव 512 बाइट्स के एक सेक्टर आकार की रिपोर्ट करता है, फिर इस बाइट को 512 से विभाजित करके 63 परिणाम देता है, जो कि भौतिक सेक्टर नंबर (या LBA) है जिसमें विभाजन का पहला सेक्टर होता है (उपयोग किए गए सेक्टर काउंट के विपरीत) सीएचएस टुपल्स के सेक्टर वैल्यू में, जो एक से गिना जाता है, पूर्ण या एलबीए सेक्टर वैल्यू शून्य से शुरू होता है)।
यदि इस डिस्क में डिस्क सिग्नेचर के बाद मान 00 F8 93 71 02 के साथ एक और विभाजन था (उदाहरण के तहत, कुंजी मान \DosDevices\D:
, यह बाइट ऑफ़सेट 0x00027193F800 (10,495,457,280) पर शुरू होगा, जो कि पहला बाइट भी है भौतिक क्षेत्र की20,498,940।
विंडोज विस्टा से शुरू करते हुए, डिस्क सिग्नेचर को बूट कॉन्फ़िगरेशन डेटा (BCD) स्टोर में भी स्टोर किया जाता है, और बूट प्रक्रिया इस पर निर्भर करती है।[30] यदि डिस्क हस्ताक्षर बदलता है, पाया नहीं जा सकता है या कोई विरोध है, तो विंडोज़ बूट करने में असमर्थ है।[31] जब तक विंडोज को छद्म डिस्क हस्ताक्षर के रूप में उन्नत सक्रिय विभाजन प्रविष्टि के एलबीए पते के अतिव्यापी हिस्से का उपयोग करने के लिए मजबूर नहीं किया जाता है, तब तक विंडोज़ का उपयोग पीटीएस-डॉस 7 और डीआर-डॉस 7.07 की उन्नत सक्रिय विभाजन सुविधा के साथ विरोधाभासी है, विशेष रूप से यदि उनका बूट कोड डिस्क के पहले 8 GB के बाहर स्थित है, इसलिए LBA एड्रेसिंग का उपयोग किया जाना चाहिए।
प्रोग्रामिंग विचार
एमबीआर की उत्पत्ति पीसी एक्सटी में हुई थी।[32] आईबीएम पीसी-संगत कंप्यूटर छोटे-एंडियन हैं, जिसका अर्थ है कि प्रोसेसर कम से कम महत्वपूर्ण बाइट पहले मेमोरी में दो या दो से अधिक बाइट्स वाले संख्यात्मक मानों को संग्रहीत करता है। मीडिया पर एमबीआर का प्रारूप इस परिपाटी को दर्शाता है। इस प्रकार, एमबीआर हस्ताक्षर डिस्क संपादक में अनुक्रम 55 AA
के रूप में दिखाई देगा।[lower-alpha 1]
BIOS में बूटस्ट्रैप अनुक्रम पहले मान्य MBR को लोड करेगा जो इसे कंप्यूटर की भौतिक मेमोरी में स्मृति पता 0x0000:0x7C00 पर मिलता है।[32] एमबीआर कॉपी की शुरुआत में निष्पादन को निर्देशित करने के लिए BIOS कोड में निष्पादित अंतिम निर्देश उस पते पर "कूद" होगा। अधिकांश BIOS के लिए प्राथमिक सत्यापन ऑफ़सेट 0x01FE पर हस्ताक्षर है, हालांकि एक BIOS कार्यान्वयनकर्ता अन्य जांचों को शामिल करना चुन सकता है, जैसे कि यह सत्यापित करना कि MBR में डिस्क की रिपोर्ट की गई क्षमता से परे क्षेत्रों को संदर्भित किए बिना एक मान्य विभाजन तालिका शामिल है।
BIOS के लिए, रिमूवेबल (जैसे फ्लॉपी) और फिक्स्ड डिस्क अनिवार्य रूप से समान हैं। या तो, BIOS मीडिया के पहले भौतिक क्षेत्र को 0x7C00 के पूर्ण पते पर रैम में पढ़ता है, लोड किए गए क्षेत्र के अंतिम दो बाइट्स में हस्ताक्षर की जांच करता है, और फिर, यदि सही हस्ताक्षर पाया जाता है, तो नियंत्रण को पहले बाइट में स्थानांतरित कर देता है जंप (JMP) निर्देश वाला सेक्टर। एकमात्र वास्तविक अंतर जो BIOS बनाता है वह यह है कि (डिफ़ॉल्ट रूप से, या यदि बूट क्रम कॉन्फ़िगर करने योग्य नहीं है) यह पहली निश्चित डिस्क से बूट करने का प्रयास करने से पहले पहली हटाने योग्य डिस्क से बूट करने का प्रयास करता है। BIOS के दृष्टिकोण से, RAM में वॉल्यूम बूट रिकॉर्ड को MBR लोड करने की क्रिया ठीक वैसी ही है, जैसे ऑपरेटिंग सिस्टम लोडर के ऑब्जेक्ट कोड को RAM में लोड करने वाली फ़्लॉपी डिस्क वॉल्यूम बूट रिकॉर्ड की क्रिया। किसी भी मामले में, BIOS लोड किया गया प्रोग्राम ऑपरेटिंग सिस्टम को लोड करने की श्रृंखला के काम के बारे में जा रहा है।
जबकि एमबीआर बूट सेक्टर कोड भौतिक पते 0x0000:0x7C00 पर लोड होने की उम्मीद करता है,[lower-alpha 8] भौतिक पते से सभी मेमोरी 0x0000:0x0501 (पता 0x0000:0x0500 फीनिक्स BIOS द्वारा उपयोग किया जाने वाला अंतिम है[14]) से 0x0000:0x7FFF,[33] बाद में 0x0000: 0xFFFF[32] (और कभी-कभी[lower-alpha 9] 0x9000: 0xFFFF तक) के लिए आराम दिया गया - पहले 640 KB का अंत वास्तविक मोड में उपलब्ध है।[lower-alpha 10] INT 12h
BIOS इंटरप्ट कॉल यह निर्धारित करने में मदद कर सकता है कि कितनी मेमोरी को सुरक्षित रूप से आवंटित किया जा सकता है (डिफ़ॉल्ट रूप से, यह केबी में आधार स्मृति विभाजन आकार को खंड से पढ़ता है: ऑफ़सेट स्थान 0x0040:0x0013, लेकिन यह अन्य निवासी प्री-बूट सॉफ़्टवेयर जैसे BIOS ओवरले द्वारा हुक किया जा सकता है, रिमोट प्रोग्राम लोडर कोड या वायरस उपलब्ध मेमोरी की रिपोर्ट की गई मात्रा को कम करने के लिए बूट सेक्टर जैसे अन्य बूट स्टेज सॉफ़्टवेयर को ओवरराइट करने से रोकने के लिए)।
512-बाइट एमबीआर के अंतिम 66 बाइट्स विभाजन तालिका और अन्य जानकारी के लिए आरक्षित हैं, इसलिए एमबीआर बूट सेक्टर प्रोग्राम 446 बाइट्स मेमोरी या उससे कम में फिट होने के लिए पर्याप्त छोटा होना चाहिए।
एमबीआर कोड विभाजन तालिका की जांच करता है, एक उपयुक्त विभाजन का चयन करता है और उस प्रोग्राम को लोड करता है जो बूट प्रक्रिया के अगले चरण को आमतौर पर INT 13h BIOS कॉल का उपयोग करके करेगा। एमबीआर बूटस्ट्रैप कोड लोड करता है और चलाता है (एक बूट लोडर- या ऑपरेटिंग सिस्टम पर निर्भर) वॉल्यूम बूट रिकॉर्ड कोड जो "सक्रिय" विभाजन की शुरुआत में स्थित है। वॉल्यूम बूट रिकॉर्ड 512-बाइट सेक्टर के भीतर फिट होगा, लेकिन एमबीआर कोड के लिए अतिरिक्त सेक्टरों को एक सेक्टर से अधिक लंबे बूट लोडर को समायोजित करने के लिए लोड करना सुरक्षित है, बशर्ते कि वे सेक्टर आकार के बारे में कोई अनुमान न लगाएं। वास्तव में, प्रत्येक IBM XT- और AT-क्लास मशीन में 0x7C00 पते पर कम से कम 1 KB RAM उपलब्ध है, इसलिए 1 KB सेक्टर का उपयोग बिना किसी समस्या के किया जा सकता है। एमबीआर की तरह, एक वॉल्यूम बूट रिकॉर्ड सामान्य रूप से 0x0000:0x7C00 पते पर लोड होने की अपेक्षा करता है। यह इस तथ्य से निकला है कि वॉल्यूम बूट रिकॉर्ड डिजाइन अविभाजित मीडिया पर उत्पन्न हुआ, जहां वॉल्यूम बूट रिकॉर्ड सीधे BIOS बूट प्रक्रिया द्वारा लोड किया जाएगा; जैसा कि ऊपर उल्लेख किया गया है, BIOS एमबीआर और वॉल्यूम बूट रिकॉर्ड (वीबीआर) [lower-alpha 11] को बिल्कुल समान मानता है। चूंकि यह वही स्थान है जहां एमबीआर लोड किया गया है, एमबीआर के पहले कार्यों में से एक स्मृति में कहीं और खुद को स्थानांतरित करना है। स्थानांतरण पता MBR द्वारा निर्धारित किया जाता है, लेकिन यह अक्सर 0x0000:0x0600 (MS-DOS/PC DOS, OS/2 और Windows MBR कोड के लिए) या 0x0060:0x0000 (अधिकांश DR-DOS MBRs) होता है। (भले ही ये दोनों खंडित पते वास्तविक मोड में एक ही भौतिक मेमोरी पते को हल करते हैं, Apple डार्विन को बूट करने के लिए, MBR को 0x0060:0x0000 के बजाय 0x0000:0x0600 पर स्थानांतरित किया जाना चाहिए, क्योंकि कोड DS पर निर्भर करता है: SI सूचक एमबीआर द्वारा प्रदान की गई विभाजन प्रविष्टि के लिए, लेकिन यह ग़लती से इसे केवल 0x0000:एसआई के माध्यम से संदर्भित करता है।[34]) यह महत्वपूर्ण है कि स्मृति में अन्य पतों को स्थानांतरित न किया जाए क्योंकि कई वीबीआर अपने बूट को लोड करते समय एक निश्चित मानक मेमोरी लेआउट ग्रहण करेंगे। फ़ाइल।
विभाजन तालिका रिकॉर्ड में स्थिति फ़ील्ड का उपयोग सक्रिय विभाजन को इंगित करने के लिए किया जाता है। मानक-अनुरूप एमबीआर केवल एक विभाजन को सक्रिय चिह्नित करने की अनुमति देगा और एक वैध विभाजन तालिका के अस्तित्व को निर्धारित करने के लिए इसे विवेक-जांच के हिस्से के रूप में उपयोग करेगा। यदि एक से अधिक पार्टीशन को सक्रिय चिह्नित किया गया है, तो वे एक त्रुटि संदेश प्रदर्शित करेंगे। कुछ गैर-मानक एमबीआर इसे एक त्रुटि स्थिति के रूप में नहीं मानेंगे और केवल पंक्ति में पहले चिह्नित विभाजन का उपयोग करेंगे।
परंपरागत रूप से, 0x00 (सक्रिय नहीं) और 0x80 (सक्रिय) के अलावा अन्य मान अमान्य थे और बूटस्ट्रैप प्रोग्राम उनका सामना करने पर एक त्रुटि संदेश प्रदर्शित करेगा। हालांकि, प्लग एंड प्ले BIOS विशिष्टता और BIOS बूट विशिष्टता (BBS) ने 1994 से अन्य उपकरणों को भी बूट करने योग्य बनने की अनुमति दी थी।[33][35] नतीजतन, MS-DOS 7.10 (Windows 95B) और उच्चतर की शुरुआत के साथ, MBR ने सेट बिट 7 को सक्रिय ध्वज के रूप में मानना शुरू कर दिया और केवल 0x01..0x7F मानों के लिए एक त्रुटि संदेश दिखाया। यह बाद में संबंधित विभाजन के VBR को लोड करते समय उपयोग की जाने वाली भौतिक ड्राइव इकाई के रूप में प्रविष्टि का उपयोग करना जारी रखता है, जिससे अब 0x80 के अलावा अन्य बूट ड्राइव को भी मान्य माना जाता है, हालाँकि, MS-DOS ने इस एक्सटेंशन का उपयोग स्वयं नहीं किया। विभाजन तालिका में वास्तविक भौतिक ड्राइव संख्या को संग्रहीत करना सामान्य रूप से पश्चगामी संगतता समस्याओं का कारण नहीं बनता है, क्योंकि मान 0x80 से केवल पहले वाले के अलावा अन्य ड्राइव पर भिन्न होगा (जो पहले बूट करने योग्य नहीं है, वैसे भी)। हालाँकि, अन्य ड्राइव को बूट करने के लिए सक्षम सिस्टम के साथ भी, एक्सटेंशन अभी भी सार्वभौमिक रूप से काम नहीं कर सकता है, उदाहरण के लिए, भौतिक ड्राइव के BIOS असाइनमेंट के बाद जब ड्राइव को हटा दिया जाता है, जोड़ा या स्वैप किया जाता है। इसलिए, BIOS बूट स्पेसिफिकेशन (बीबीएस) के अनुसार,[33] यह एक आधुनिक एमबीआर के लिए सबसे अच्छा अभ्यास है जो विभाजन तालिका में प्रविष्टि का उपयोग करने के बजाय मूल रूप से BIOS द्वारा प्रदान किए गए डीएल मान को पारित करने के लिए सक्रिय ध्वज के रूप में बिट 7 को स्वीकार करता है।
BIOS से MBR इंटरफ़ेस
MBR को स्मृति स्थान 0x0000:0x7C00 पर लोड किया जाता है और निम्न CPU रजिस्टरों के साथ सेट किया जाता है जब पूर्व बूटस्ट्रैप लोडर (सामान्य रूप से BIOS में प्रारंभिक कार्यक्रम लोडर) सी पी यू के वास्तविक मोड में 0x0000:0x7C00 पर कूद कर निष्पादन पास करता है।
- सीएस रजिस्टर:आईपी रजिस्टर = 0x0000:0x7C00 (हल किया गया)
- कुछ कॉम्पैक BIOS इसके बजाय गलती से 0x07C0:0x0000 का उपयोग करते हैं। हालांकि यह वास्तविक मोड मेमोरी में एक ही स्थान पर हल होता है, यह गैर-मानक है और इससे बचा जाना चाहिए, क्योंकि एमबीआर कोड कुछ रजिस्टर मूल्यों को मानता है या स्थानांतरित करने योग्य नहीं लिखा जाता है, अन्यथा काम नहीं कर सकता है।
- DL = boot drive unit (fixed disks / removable drives: 0x80 = first, 0x81 = second, ..., 0xFE; floppies / superfloppies: 0x00 = first, 0x01 = second, ..., 0x7E; values 0x7F and 0xFF are reserved for ROM / remote drives and must not be used on disk).[citation needed]
- DL IBM BIOS के साथ-साथ अधिकांश अन्य BIOS द्वारा समर्थित है। Toshiba T1000 BIOS इसे ठीक से समर्थन नहीं करने के लिए जाना जाता है, और कुछ पुराने Wyse 286 BIOS निश्चित डिस्क के लिए DL मानों को 2 से अधिक या बराबर का उपयोग करते हैं (जिससे BIOS के भौतिक ड्राइव नंबरों के बजाय DOS के तहत लॉजिकल ड्राइव नंबरों को दर्शाता है)। हटाने योग्य ड्राइव के रूप में कॉन्फ़िगर की गई USB स्टिक्स को आमतौर पर DL = 0x80, 0x81, आदि का असाइनमेंट मिलता है। हालाँकि, कुछ दुर्लभ BIOS ने गलती से उन्हें DL = 0x01 के तहत प्रस्तुत कर दिया, जैसे कि उन्हें सुपरफ्लॉपी के रूप में कॉन्फ़िगर किया गया हो।
- एक मानक अनुरूप BIOS विशेष रूप से निश्चित डिस्क/हटाने योग्य ड्राइव के लिए 0x80 से अधिक या बराबर संख्या निर्दिष्ट करता है, और पारंपरिक रूप से केवल 0x80 तथा 0x00 मान बूट के दौरान भौतिक ड्राइव इकाइयों के रूप में पारित किए गए थे। परिपाटी के अनुसार, केवल फिक्स्ड डिस्क/रिमूवेबल ड्राइव का विभाजन किया जाता है, इसलिए, पारंपरिक रूप से MBR केवल DL मान देख सकता था जो 0x80 था। कई एमबीआर को डीएल मान को अनदेखा करने और हार्ड-वायर्ड मान (सामान्य रूप से 0x80) के साथ काम करने के लिए कोडित किया गया था।
- प्लग एंड प्ले BIOS विशिष्टता और BIOS बूट विशिष्टता (BBS) 1994 से अन्य उपकरणों को भी बूट करने योग्य बनाने की अनुमति देते हैं।[33][35] बाद में अनुशंसा की गई कि MBR और VBR कोड को आंतरिक रूप से हार्डवेयर्ड डिफ़ॉल्ट के बजाय DL का उपयोग करना चाहिए।[33] जहां तक एमबीआर कोड का संबंध है, यह विभिन्न गैर-मानक असाइनमेंट (उपरोक्त उदाहरण देखें) के साथ संगतता भी सुनिश्चित करेगा।
- एल टोरिटो विनिर्देश के बाद बूट करने योग्य सीडी-रोम में इस इंटरफ़ेस पर फ्लॉपी या सुपरफ्लॉपी के रूप में होने के लिए BIOS द्वारा माउंट की गई डिस्क छवियां हो सकती हैं। 0x00 और 0x01 के DL मानों का उपयोग संरक्षित क्षेत्र रन टाइम इंटरफेस एक्सटेंशन सेवाएं (पार्टीज़) और विश्वसनीय कंप्यूटिंग समूह (TCG) BIOS एक्सटेंशन द्वारा विश्वसनीय मोड में किया जा सकता है, अन्यथा अदृश्य पार्टियों के विभाजन, बूट इंजीनियरिंग एक्सटेंशन रिकॉर्ड के माध्यम से स्थित डिस्क छवि फ़ाइलों तक पहुँचने के लिए (BEER) हार्ड डिस्क के होस्ट प्रोटेक्टेड एरिया (HPA) के अंतिम भौतिक क्षेत्र में। जबकि फ्लॉपी या सुपरफ्लॉपी का अनुकरण करने के लिए डिज़ाइन किया गया है, एमबीआर कोड इन गैर-मानक डीएल मूल्यों को स्वीकार करते हुए कम से कम ऑपरेटिंग सिस्टम के बूट चरण में विभाजित मीडिया की छवियों का उपयोग करने की अनुमति देता है
- डीएच रजिस्टर बिट 5 = 0: INT 13h के माध्यम से समर्थित डिवाइस; अन्य: परवाह नहीं है (शून्य होना चाहिए)। DH कुछ IBM BIOS द्वारा समर्थित है।
- कुछ अन्य रजिस्टरों में मूल IBM ROM BIOS के साथ विशेष रूप से कुछ रजिस्टर मान (डीएस, ईएस, एसएस = 0x0000; एसपी = 0x0400) हो सकते हैं, लेकिन इस पर भरोसा करने के लिए कुछ भी नहीं है, क्योंकि अन्य BIOS अन्य मानों का उपयोग कर सकते हैं। इसी वजह से आईबीएम, माइक्रोसॉफ्ट, डिजिटल रिसर्च आदि के एमबीआर कोड ने कभी इसका फायदा नहीं उठाया। बूट सेक्टरों में इन रजिस्टर मूल्यों पर भरोसा करने से चेन-बूट परिदृश्यों में भी समस्या हो सकती है।
प्लग-एंड-प्ले BIOS या BBS समर्थन वाले सिस्टम, DL के अतिरिक्त PnP डेटा के लिए एक सूचक प्रदान करेंगे:[33][35]
- डीआई रजिस्टर:DI रजिस्टर = पॉइंट टू
$PnP
स्थापना जांच संरचना
- यह जानकारी एमबीआर में बूट लोडर (या वीबीआर, यदि पास हो) को सक्रिय रूप से BIOS या एक निवासी PnP / BBS BIOS ओवरले के साथ बूट ऑर्डर को कॉन्फ़िगर करने के लिए मेमोरी में ओवरले करने की अनुमति देती है, आदि, हालांकि, इस जानकारी को नजरअंदाज कर दिया जाता है अधिकांश मानक एमबीआर और वीबीआर द्वारा। आदर्श रूप से, लोडेड ऑपरेटिंग सिस्टम द्वारा बाद में उपयोग के लिए ES:DI को VBR पर भेज दिया जाता है, लेकिन PnP-सक्षम ऑपरेटिंग सिस्टम में आमतौर पर PnP BIOS प्रविष्टि बिंदु को बाद में पुनर्प्राप्त करने के लिए फ़ॉलबैक विधियाँ भी होती हैं ताकि अधिकांश ऑपरेटिंग सिस्टम इस पर भरोसा न करें।
एमबीआर से वीबीआर इंटरफ़ेस
सम्मेलन के अनुसार, एक मानक अनुरूप एमबीआर मेमोरी स्थान पर लोड किए गए सफलतापूर्वक लोड किए गए वीबीआर को निष्पादन पास करता है 0x0000:0x7C00, पर कूद कर 0x0000:0x7C00 सीपीयू के वास्तविक मोड में निम्नलिखित रजिस्टरों को बनाए रखा जाता है या विशेष रूप से स्थापित किया जाता है:
- सीएस: आईपी = 0x0000:0x7C00[lower-alpha 12] (लगातार)
- डीएल = बूट ड्राइव यूनिट (ऊपर देखें)
- एमएस-डॉस 2.0-7.0 / पीसी डॉस 2.0-6.3 MBRs प्रविष्टि पर प्राप्त DL मान को पारित नहीं करते हैं, बल्कि वे भौतिक बूट ड्राइव इकाई के रूप में चयनित प्राथमिक विभाजन के विभाजन तालिका प्रविष्टि में बूट स्थिति प्रविष्टि का उपयोग करते हैं। चूंकि यह सम्मेलन द्वारा है, 0x80 अधिकांश एमबीआर विभाजन तालिकाओं में, यह तब तक नहीं बदलेगा जब तक कि BIOS पंक्ति में पहली निश्चित डिस्क/हटाने योग्य ड्राइव के अलावा किसी भौतिक डिवाइस को बूट करने का प्रयास नहीं करता। यही कारण है कि ये ऑपरेटिंग सिस्टम दूसरी हार्ड डिस्क आदि को बूट नहीं कर सकते हैं। कुछ FDISK उपकरण द्वितीयक डिस्क पर भी विभाजन को सक्रिय के रूप में चिह्नित करने की अनुमति देते हैं। इस स्थिति में, यह जानते हुए कि ये ऑपरेटिंग सिस्टम वैसे भी अन्य ड्राइव को बूट नहीं कर सकते हैं, उनमें से कुछ पारंपरिक रूप से निश्चित मान का उपयोग करना जारी रखते हैं 0x80 सक्रिय मार्कर के रूप में, जबकि अन्य वर्तमान में निर्दिष्ट भौतिक ड्राइव यूनिट के अनुरूप मानों का उपयोग करते हैं (0x81, 0x82), जिससे कम से कम सिद्धांत रूप में अन्य ड्राइव से बूटिंग की अनुमति मिलती है। वास्तव में, यह कई एमबीआर कोड के साथ काम करेगा, जो बूट स्थिति प्रविष्टि के सेट बिट 7 को सक्रिय ध्वज के रूप में जोर देने के बजाय लेते हैं 0x80हालाँकि, MS-DOS/PC DOS MBRs के निश्चित मूल्य को स्वीकार करने के लिए हार्ड-वायर्ड हैं 0x80 केवल। विभाजन तालिका में वास्तविक भौतिक ड्राइव संख्या को संग्रहीत करने से भी समस्याएँ पैदा होंगी, जब भौतिक ड्राइव का BIOS असाइनमेंट बदलता है, उदाहरण के लिए जब ड्राइव को हटाया जाता है, जोड़ा जाता है या स्वैप किया जाता है। इसलिए, एक सामान्य एमबीआर के लिए बिट 7 को सक्रिय ध्वज के रूप में स्वीकार करना और अन्यथा केवल वीबीआर का उपयोग करना और पास करना, मूल रूप से BIOS द्वारा प्रदान किया गया डीएल मान अधिकतम लचीलेपन की अनुमति देता है। MS-DOS 7.1 - 8.0 MBR बिट 7 को सक्रिय ध्वज और किसी भी मान के रूप में मानने के लिए बदल गए हैं 0x01..0x7F अमान्य के रूप में, लेकिन वे अभी भी BIOS द्वारा प्रदान किए गए DL मान का उपयोग करने के बजाय विभाजन तालिका से भौतिक ड्राइव इकाई लेते हैं। DR-DOS 7.07 विस्तारित MBR बिट 7 को सक्रिय ध्वज के रूप में मानते हैं और डिफ़ॉल्ट रूप से BIOS DL मान का उपयोग करते हैं और पास करते हैं (गैर-मानक मान सहित) 0x00..0x01 कुछ BIOS द्वारा विभाजित मीडिया के लिए भी उपयोग किया जाता है), लेकिन वे LOADER और REAL/32 के संयोजन के साथ-साथ MBR के विस्तृत व्यवहार को बदलने के लिए वैकल्पिक बूट विधियों का समर्थन करने के लिए एक विशेष #NEWLDR कॉन्फ़िगरेशन ब्लॉक भी प्रदान करते हैं, ताकि यह विभाजन तालिका से प्राप्त ड्राइव मानों के साथ भी काम कर सकता है (LOADER और AAPs के संयोजन के साथ महत्वपूर्ण, NEWLDR ऑफ़सेट देखें
0x000C
), Wyse गैर-मानक ड्राइव इकाइयों का अनुवाद करें 0x02..0x7F प्रति 0x80..0xFD, और वैकल्पिक रूप से ड्राइव मान को ठीक करें (ऑफ़सेट0x019
विस्तारित BIOS पैरामीटर ब्लॉक (EBPB) में या सेक्टर ऑफसेट पर0x01FD
) लोड किए गए वीबीआर में उन्हें निष्पादन पास करने से पहले (देखें NEWLDR ऑफ़सेट0x0014
)—यह अन्य बूट लोडर को NEWLDR को चेन-लोडर के रूप में उपयोग करने की अनुमति देता है, फ्लाई पर इसकी इन-मेमोरी छवि को कॉन्फ़िगर करता है और NEWLDR के माध्यम से VBRs, EBRs, या AAPs की लोडिंग को टनल करता है।
- DH और ES की सामग्री: DI को पूर्ण प्लग-एंड-प्ले समर्थन (ऊपर देखें) के लिए MBR द्वारा संरक्षित किया जाना चाहिए, हालाँकि, MS-DOS 2.0 - 8.0 / PC DOS 2.0 - 6.3 सहित कई MBRs और Windows NT/2000/XP, नहीं। (यह आश्चर्यजनक नहीं है, क्योंकि DOS के वे संस्करण प्लग-एंड-प्ले BIOS मानक से पहले के हैं, और पिछले मानकों और सम्मेलनों ने DL के अलावा किसी अन्य रजिस्टर को संरक्षित करने की कोई आवश्यकता नहीं बताई है।) कुछ MBRs डीएच को 0 पर सेट करें।
एमबीआर कोड कई कार्यान्वयनों में वीबीआर को अतिरिक्त जानकारी देता है:
- DS:SI = सक्रिय VBR के अनुरूप 16-बाइट MBR विभाजन तालिका प्रविष्टि (स्थानांतरित MBR में) को इंगित करता है। पीसी-एमओएस 5.1 बूट करने के लिए इस पर निर्भर करता है यदि विभाजन तालिका में कोई विभाजन बूट करने योग्य के रूप में फ़्लैग नहीं किया गया है। लोडर के संयोजन के साथ, बहुउपयोगकर्ता डॉस और रीयल/32 बूट सेक्टर सक्रिय विभाजन के बूट सेक्टर का पता लगाने के लिए इसका उपयोग करते हैं (या अन्य बूटस्ट्रैप लोडर जैसे IBMBIO.LDR डिस्क पर एक निश्चित स्थिति पर) यदि बूट फ़ाइल (LOADER.SYS) कर सकता है नहीं मिला। पीटीएस-डॉस 6.6 और S/DOS 1.0 इसे अपने उन्नत सक्रिय विभाजन (AAP) सुविधा के संयोजन में उपयोग करते हैं। LOADER और AAPs के लिए समर्थन के अलावा, DR-DOS 7.07 अपने दोहरे CHS/LBA VBR कोड का उपयोग करते समय आवश्यक INT 13h एक्सेस विधि का निर्धारण करने के लिए इसका उपयोग कर सकता है और यह विभाजन प्रविष्टि में बूट ड्राइव/स्टेटस फ़्लैग फ़ील्ड को इसके अनुसार अपडेट करेगा प्रभावी रूप से उपयोग किए जाने वाले डीएल मूल्य। Apple डार्विन बूटलोडर्स (Apple's
boot1h
,boot1u
, और डेविड इलियट केboot1fat32
) इस सूचक पर भी निर्भर करते हैं, लेकिन इसके अतिरिक्त वे डीएस का उपयोग नहीं करते हैं, लेकिन इसे सेट करने के लिए मानते हैं 0x0000 बजाय।[34]यदि यह धारणा गलत है तो यह समस्याएँ पैदा करेगा। OS/2 का MBR कोड, MS-DOS 2.0 से 8.0, PC DOS 2.0 से 7.10 और Windows NT/2000/XP भी यही इंटरफ़ेस प्रदान करते हैं, हालाँकि ये सिस्टम इसका उपयोग नहीं करते हैं। Windows Vista/7 MBRs अब यह DS:SI सूचक प्रदान नहीं करते हैं। जबकि कुछ एक्सटेंशन केवल 16-बाइट पार्टीशन टेबल एंट्री पर ही निर्भर करते हैं, अन्य एक्सटेंशन के लिए पूरे 4 (या 5 एंट्री) पार्टीशन टेबल की भी आवश्यकता हो सकती है। - डीएस: बीपी रजिस्टर = वैकल्पिक रूप से सक्रिय वीबीआर के अनुरूप 16-बाइट एमबीआर विभाजन तालिका प्रविष्टि (स्थानांतरित एमबीआर में) को इंगित करता है। यह DS:SI (ऊपर देखें) द्वारा प्रदान किए गए पॉइंटर के समान है और MS-DOS 2.0-8.0, PC DOS 2.0-7.10, Windows NT/2000/XP/Vista/7 MBRs द्वारा प्रदान किया गया है. हालाँकि, यह अधिकांश तृतीय-पक्ष MBRs द्वारा समर्थित नहीं है।
DR-DOS 7.07 के तहत विस्तारित MBR द्वारा और LOADER के संयोजन में एक विस्तारित इंटरफ़ेस वैकल्पिक रूप से प्रदान किया जा सकता है:
- AX रजिस्टर = मैजिक सिग्नेचर इस NEWLDR एक्सटेंशन की मौजूदगी को दर्शाता है (0x0EDC)
- डीएल = बूट ड्राइव यूनिट (ऊपर देखें)
- DS:SI = प्रयुक्त 16-बाइट MBR विभाजन तालिका प्रविष्टि की ओर इशारा करता है (ऊपर देखें)
- ES:BX रजिस्टर = बूट सेक्टर की शुरुआत या NEWLDR सेक्टर इमेज (आमतौर पर 0x7C00)
- सीएक्स रजिस्टर = आरक्षित
जीपीटी के संयोजन के साथ, एक उन्नत डिस्क ड्राइव विशिष्टता (ईडीडी) 4 हाइब्रिड एमबीआर प्रस्ताव इंटरफ़ेस के लिए एक और विस्तार की सिफारिश करता है:[36]* ईएक्स रजिस्टर = 0x54504721 (!GPT
)
- डीएल = बूट ड्राइव यूनिट (ऊपर देखें)
- DS:SI = हाइब्रिड एमबीआर हैंडओवर स्ट्रक्चर की ओर इशारा करता है, जिसमें 16-बाइट डमी एमबीआर पार्टीशन टेबल एंट्री होती है (ऑफसेट पर बूट फ्लैग को छोड़कर सभी बिट्स सेट के साथ) 0x00 और विभाजन प्रकार ऑफसेट पर 0x04) इसके बाद अतिरिक्त डेटा। यह पुराने DS के साथ आंशिक रूप से संगत है: ऊपर चर्चा की गई SI एक्सटेंशन, यदि केवल 16-बाइट विभाजन प्रविष्टि है, तो इन पुराने एक्सटेंशन के लिए संपूर्ण विभाजन तालिका की आवश्यकता नहीं है।
- चूँकि पुराने ऑपरेटिंग सिस्टम (उनके VBRs सहित) इस विस्तार का समर्थन नहीं करते हैं और न ही वे 2 TiB बाधा से परे क्षेत्रों को संबोधित करने में सक्षम हैं, एक GPT-सक्षम हाइब्रिड बूट लोडर को अभी भी 16-बाइट डमी MBR विभाजन तालिका प्रविष्टि का अनुकरण करना चाहिए यदि बूट विभाजन पहले 2 TiB के भीतर स्थित है।[lower-alpha 13]
- ES:DI = इंगित करता है
$PnP
स्थापना जांच संरचना (ऊपर देखें)
सामग्री का संपादन और प्रतिस्थापन
यद्यपि विभिन्न डिस्क संपादकों का उपयोग करके सीधे एमबीआर सेक्टर में बाइट्स में हेरफेर करना संभव है, एमबीआर को कार्य कोड के निश्चित सेट लिखने के लिए उपकरण हैं। MS-DOS 5.0 के बाद से, प्रोग्राम FDISK
में स्विच /MBR
शामिल है, जो MBR कोड को फिर से लिखेगा।[37] विंडोज 2000 और विन्डोज़ एक्सपी के तहत, रिकवरी कंसोल का उपयोग इसके fixmbr
कमांड का उपयोग करके स्टोरेज डिवाइस में नया एमबीआर कोड लिखने के लिए किया जा सकता है। और विंडोज 7 के अंतर्गत, पुनर्प्राप्ति पर्यावरण का उपयोग BOOTREC /FIXMBR
कमांड का उपयोग करके नया MBR कोड लिखने के लिए किया जा सकता है। कुछ तृतीय-पक्ष उपयोगिताओं का उपयोग विभाजन तालिकाओं की सामग्री को सीधे संपादित करने के लिए भी किया जा सकता है (हेक्साडेसिमल या डिस्क/सेक्टर संपादकों के किसी भी ज्ञान की आवश्यकता के बिना), जैसे एमबीआर विज़ार्ड।[lower-alpha 14]
dd
एक POSIX कमांड है जिसका उपयोग आमतौर पर स्टोरेज डिवाइस पर किसी भी स्थान को पढ़ने या लिखने के लिए किया जाता है, जिसमें MBR शामिल है। Linux में, ms-sys का उपयोग Windows MBR को स्थापित करने के लिए किया जा सकता है। GRUB और LILO परियोजनाओं में MBR क्षेत्र के लिए कोड लिखने के लिए उपकरण हैं, अर्थात् grub-install
और lilo -mbr
। GRUB लीगेसी इंटरएक्टिव कंसोल MBR को setup
और embed
कमांड का उपयोग करके लिख सकता है, लेकिन GRUB2 को वर्तमान में एक ऑपरेटिंग सिस्टम के भीतर से चलाने के लिए grub-install
की आवश्यकता होती है।
विभिन्न प्रोग्राम प्राथमिक विभाजन तालिका और विस्तारित विभाजन में तार्किक विभाजन दोनों का "बैकअप" बनाने में सक्षम हैं।
लिनक्स sfdisk
(SystemRescueCD पर) प्राथमिक और विस्तारित विभाजन तालिका के बैकअप को सहेजने में सक्षम है। यह एक फाइल बनाता है जिसे टेक्स्ट एडिटर में पढ़ा जा सकता है, या इस फाइल का उपयोग sfdisk द्वारा प्राथमिक/विस्तारित विभाजन तालिका को पुनर्स्थापित करने के लिए किया जा सकता है। विभाजन तालिका का बैकअप लेने के लिए एक उदाहरण कमांड sfdisk -d /dev/hda > hda.out
है और पुनर्स्थापित करने के लिए sfdisk /dev/hda < hda.out
है। विभाजन तालिका को एक डिस्क से दूसरी डिस्क में इस तरह से कॉपी करना संभव है, मिररिंग की स्थापना के लिए उपयोगी है, लेकिन sfdisk -d /dev/sda | sfdisk /dev/sdb
।[38]
यह भी देखें
- विस्तारित बूट रिकॉर्ड (ईबीआर)
- वॉल्यूम बूट रिकॉर्ड (वीबीआर)
- GUID विभाजन तालिका (GPT)
- BIOS बूट विभाजन
- EFI सिस्टम विभाजन
- बूट इंजीनियरिंग एक्सटेंशन रिकॉर्ड (BEER)
- मेजबान संरक्षित क्षेत्र (HPA)
- डिवाइस कॉन्फ़िगरेशन ओवरले (DCO)
- Apple विभाजन मानचित्र (APM)
- अमिगा कठोर डिस्क ब्लॉक (आरडीबी)
- सामग्री की मात्रा तालिका (VTOC)
- बीएसडी डिस्कलेबल
- बूट लोडर
- डिस्क क्लोनिंग
- रिकवरी डिस्क
- जीएनयू जुदा
- विभाजन संरेखण
टिप्पणियाँ
- ↑ 1.0 1.1 1.2 1.3 1.4 1.5 1.6 The signature at offset 0x01FE in boot sectors is
55hex AAhex
, that is 0x55 at offset 0x01FE andAAhex
at offset 0x01FF. Since little-endian representation must be assumed in the context of IBM PC compatible machines, this can be written as 16-bit wordAA55hex
in programs for x86 processors (note the swapped order), whereas it would have to be written as55AAhex
in programs for other CPU architectures using a big-endian representation. Since this has been mixed up numerous times in books and even in original Microsoft reference documents, this article uses the offset-based byte-wise on-disk representation to avoid any possible misinterpretation. - ↑ In order to ensure the integrity of the MBR boot loader code, it is important that the bytes at 0x00DA to 0x00DF are never changed, unless either all six bytes represent a value of 0 or the whole MBR bootstrap loader code (except for the (extended) partition table) is replaced at the same time as well. This includes resetting these values to
00 00 00 00 00 00hex
unless the code stored in the MBR is known. Windows adheres to this rule. - ↑ Originally, status values other than 0x00 and 0x80 were invalid, but modern MBRs treat the bit 7 as active flag and use this entry to store the physical boot unit.
- ↑ 4.0 4.1 The starting sector fields are limited to 1023+1 cylinders, 255+1 heads, and 63 sectors; ending sector fields have the same limitations.
- ↑ 5.0 5.1 5.2 5.3 5.4 The range for sector is 1 through 63; the range for cylinder is 0 through 1023; the range for head is 0 through 255 inclusive.[14]
- ↑ 6.0 6.1 The number of sectors is an index field; thus, the zero value is invalid, reserved and must not be used in normal partition entries. The entry is used by operating systems in certain circumstances; in such cases the CHS addresses are ignored.[16]
- ↑ "Quote: [Most] versions of MS-DOS (including MS-DOS 7 [Windows 95]) have a bug which prevents booting on hard disks with 256 heads (FFh), so many modern BIOSes provide mappings with at most 255 (FEh) heads." RBIL[39][40]
- ↑ The address
0000hex
:7C00hex
is the first byte of the 32nd KB of RAM. The loading of the boot program at this address historically was the reason why, while the minimum RAM size of an original IBM PC (type 5150) was 16 KB, 32 KB were required for the disk option in the IBM XT. - ↑ If there is an EBDA, the available memory ends below it.
- ↑ Very old machines may have less than 640 KB (
A0000hex
or 655,360 bytes) of memory. In theory, only 32 KB (up to0000hex
:7FFFhex
) or 64 KB (up to0000hex
:FFFFhex
) are guaranteed to exist; this would be the case on an IBM XT-class machine equipped with only the required minimum amount of memory for a disk system. - ↑ This applies when the BIOS handles a VBR, which is when it is in the first physical sector of unpartitioned media. Otherwise, the BIOS has nothing to do with the VBR. The design of VBRs is such as it is because VBRs originated solely on unpartitioned floppy disk media—the type 5150 IBM PC originally had no hard disk option—and the partitioning system using an MBR was later developed as an adaptation to put more than one volume, each beginning with its own VBR as-already-defined, onto a single fixed disk. By this design, essentially the MBR emulates the BIOS boot routine, doing the same things the BIOS would do to process this VBR and set up the initial operating environment for it just as if the BIOS had found that VBR on an unpartitioned medium.
- ↑ IP is set as a result of the jump. CS may be set to 0 either by executing a far jump or by loading the register value explicitly before executing a near jump. (It is impossible for jumped-to x86 code to detect whether a near or far jump was used to reach it [unless the code that made the jump separately passes this information in some way].)
- ↑ This is not part of the above mentioned proposal, but a natural consequence of pre-existing conditions.
- ↑ For example, PowerQuest's Partition Table Editor (PTEDIT32.EXE), which runs under Windows operating systems, is still available here: Symantec's FTP site.
संदर्भ
- ↑ Howe, Denis (2009-05-19) [1985]. "master boot record". FOLDOC. Archived from the original on 24 August 2017. Retrieved 2015-05-02.
- ↑ 2.0 2.1 2.2 2.3 "Windows support for hard disks that are larger than 2 TB". 1. Microsoft. 2013-06-26. 2581408. Archived from the original on 2017-04-27. Retrieved 2013-08-28.
- ↑ 3.0 3.1 3.2 Sedory, Daniel B. (2004). "The Mystery Bytes (or the Drive/Timestamp Bytes) of the MS-Windows 95B, 98, 98SE and Me Master Boot Record (MBR)". Master Boot Records. thestarman.pcministry.com. Archived from the original on 2017-08-24. Retrieved 2012-08-25.
- ↑ Lucas, Michael (2003). Absolute OpenBSD: Unix for the practical paranoid. p. 73. ISBN 9781886411999. Retrieved 2011-04-09.
Every operating system includes tools to manage MBR partitions. Unfortunately, every operating system handles MBR partitions in a slightly different manner.
- ↑ Norton, Peter; Clark, Scott (2002). Peter Norton's New Inside the PC. Sams Publishing. pp. 360–361. ISBN 0-672-32289-7.
- ↑ Graves, Michael W. (2004). A+ Guide To PC Hardware Maintenance and Repair. Thomson Delmar. p. 276. ISBN 1-4018-5230-0.
- ↑ Andrews, Jean (2003). Upgrade and Repair with Jean Andrews. Thomson Course Technology. p. 646. ISBN 1-59200-112-2.
- ↑ Boswell, William (2003). Inside Windows Server 2003. Addison-Wesley Professional. p. 13. ISBN 0-7357-1158-5.
- ↑ Smith, Roderick W. (2000). The Multi-Boot Configuration Handbook. Que Publishing. pp. 260–261. ISBN 0-7897-2283-6.
- ↑ Brouwer, Andries Evert (2004-04-22) [2000]. "Properties of partition tables". Partition types. Archived from the original on 2017-08-24. Retrieved 2017-08-24.
Matthias [R.] Paul writes: "[…] PTS-DOS [uses] a special fifth partition entry in front of the other four entries in the MBR and corresponding AAP-aware MBR bootstrap code. […]"
- ↑ Sedory, Daniel B. (2007-05-18) [2003]. "Notes on the Differences in one OEM version of the DOS 3.30 MBR". Master Boot Records. Archived from the original on 2017-08-24. Retrieved 2017-08-24.
When we added partitions to this NEC table, the first one was placed at offsets 0x01EE through 0x01FD and the next entry was added just above it. So, the entries are inserted and listed backwards from that of a normal Table. Thus, looking at such a Table with a disk editor or partition listing utility, it would show the first entry in a NEC eight-entry table as being the last one (fourth entry) in a normal Partition Table.
(NB. Shows an 8-entry partition table and where its boot code differs from MS-DOS 3.30.) - ↑ Brouwer, Andries Evert (2004-04-22) [2000]. "Properties of partition tables". Partition types. Archived from the original on 2017-08-24. Retrieved 2017-08-24.
Some OEM systems, such as AST DOS (type
(NB. NEC MS-DOS 3.30 and AST MS-DOS partition tables with eight entries are preceded with a signature14hex
) and NEC DOS (type24hex
) had 8 instead of 4 partition entries in their MBR sectors. (Matthias R. Paul).A55Ahex
at offset 0x017C.) - ↑ "Partition Table". osdev.org. 2017-03-18 [2007-03-06]. Archived from the original on 2017-08-24. Retrieved 2017-08-24.
- ↑ 14.0 14.1 14.2 System BIOS for IBM PC/XT/AT Computers and Compatibles. Phoenix technical reference. Addison-Wesley. 1989. ISBN 0-201-51806-6.
- ↑ Brouwer, Andries Evert (2013) [1995]. "List of partition identifiers for PCs". Partition types. Archived from the original on 2017-08-24. Retrieved 2017-08-24.
- ↑ Wood, Sybil (2002). Microsoft Windows 2000 Server Operations Guide. Microsoft Press. p. 18. ISBN 978-0-73561796-4.
- ↑ "An Introduction to Hard Disk Geometry". Tech Juice. 2012-12-06 [2011-08-08]. Archived from the original on 2013-02-04.
- ↑ Kozierok, Charles M. (2001-04-17). "BIOS and the Hard Disk". The PC Guide. Archived from the original on 2017-06-17. Retrieved 2013-04-19.
- ↑ Smith, Robert (2011-06-26). "Working Around MBR's Limitations". GPT fdisk Tutorial. Archived from the original on 2017-08-24. Retrieved 2013-04-20.
- ↑ "More than 2 TiB on a MBR disk". superuser.com. 2013-03-07. Archived from the original on 2017-08-24. Retrieved 2013-10-22.
- ↑ "Transition to Advanced Format 4K Sector Hard Drives". Tech Insight. Seagate Technology. 2012. Archived from the original on 2017-08-24. Retrieved 2013-04-19.
- ↑ Calvert, Kelvin (2011-03-16). "WD AV‐GP Large Capacity Hard Drives" (PDF). Western Digital. Retrieved 2013-04-20.
- ↑ Smith, Roderick W. (2010-04-27). "Linux on 4KB-sector disks: Practical advice". DeveloperWorks. IBM. Archived from the original on 2017-08-24. Retrieved 2013-04-19.
- ↑ 24.0 24.1 "MBR (x86)". OSDev Wiki. OSDev.org. 2012-03-05. Archived from the original on 2017-08-24. Retrieved 2013-04-20.
- ↑ Sedory, Daniel B. (2003-07-30). "IBM DOS 2.00 Master Boot Record". The Starman's Realm. Archived from the original on 2017-08-24. Retrieved 2011-07-22.
- ↑ Singh, Amit (2009-12-25) [December 2003]. "Booting Mac OS X". Mac OS X Internals: The Book. Retrieved 2011-07-22.
- ↑ de Boyne Pollard, Jonathan (2011-07-10). "The EFI boot process". Frequently Given Answers. Archived from the original on 2017-08-24. Retrieved 2011-07-22.
- ↑ Domsch, Matt (2005-03-22) [2003-12-19]. "Re: RFC 2.6.0 EDD enhancements". Linux Kernel Mailing List. Archived from the original on 2017-08-24. Retrieved 2017-08-24.
- ↑ 29.0 29.1 "Windows may use Signature() syntax in the BOOT.INI file". KnowledgeBase. Microsoft.
- ↑ McTavish (February 2014). "Vista's MBR Disk Signature". Multibooters: Dual and Multibooting with Vista. Archived from the original on 2017-08-24. Retrieved 2017-08-24.
- ↑ Russinovich, Mark (2011-11-08). "Fixing Disk Signature Collisions". Mark Russinovich's Blog. Microsoft. Archived from the original on 2017-08-24. Retrieved 2013-04-19.
- ↑ 32.0 32.1 32.2 Sakamoto, Masahiko (2010-05-13). "Why BIOS loads MBR into
0x7C00
in x86?". Glamenv-Septzen.net. Archived from the original on 2017-08-24. Retrieved 2011-05-04. - ↑ 33.0 33.1 33.2 33.3 33.4 33.5 Compaq Computer Corporation; Phoenix Technologies Ltd.; Intel Corporation (1996-01-11). "BIOS Boot Specification 1.01" (PDF). 1.01. ACPICA. Archived (PDF) from the original on 2017-08-24. Retrieved 2013-04-20. [1]
- ↑ 34.0 34.1 Elliott, David F. (2009-10-12). "Why does the "standard" MBR set SI?". tgwbd.org. Archived from the original on 2017-08-24. Retrieved 2013-04-20.
- ↑ 35.0 35.1 35.2 Compaq Computer Corporation; Phoenix Technologies Ltd.; Intel Corporation (1994-05-05). "Plug and Play BIOS Specification 1.0A" (PDF). 1.0A. Intel. Archived from the original (PDF) on 2017-08-24. Retrieved 2013-04-20.
- ↑ Elliott, Robert (2010-01-04). "EDD-4 Hybrid MBR boot code annex" (PDF). Hewlett Packard, T13 Technical Committee. e09127r3. Archived (PDF) from the original on 2017-08-24. Retrieved 2013-04-20.
- ↑ "FDISK /MBR rewrites the Master Boot Record". Support. 1. Microsoft. 2011-09-23. 69013. Archived from the original on 2017-02-08. Retrieved 2013-04-19.
- ↑ "sfdisk(8) – Linux man page". die.net. 2013 [2007]. Archived from the original on 2017-08-24. Retrieved 2013-04-20.
- ↑ Brown, Ralf D. (2000-07-16). "Ralf Browns Interrupt List (v61 html)". Delorie Software. Retrieved 2016-11-03.
- ↑ Brown, Ralf D. (2000-07-16). "B-1302: INT 13 - DISK - READ SECTOR(S) INTO MEMORY". Ralf Brown's Interrupt List (RBIL) (61 ed.). Retrieved 2016-11-03. (NB. See file INTERRUP.B inside archive "INTER61A.ZIP.)
अग्रिम पठन
- Gilbert, Howard (1996-01-01) [1995]. "Partitions and Volumes". PC Lube & Tune. Archived from the original on 2016-03-03.
- Knights, Ray (2004-12-22) [2000-12-16]. "Ray's Place". MBR and Windows Boot Sectors (includes code disassembly and explanations of boot process). Archived from the original on 2017-08-24. Retrieved 2017-08-24.
- Landis, Hale (2002-05-06). "Master Boot Record". How It Works. Archived from the original on 2014-07-01.
- Sedory, Daniel B. (2015-06-25) [2007]. "MBRs (Master Boot Records)". Boot Records Revealed. Archived from the original on 2017-08-24. Retrieved 2017-08-24. [2] [3]
इस पेज में लापता आंतरिक लिंक की सूची
- आईबीएम पर्सनल कंप्यूटर एक्सटी
- बीएसडी डिस्कलेबल
- विभाजन प्रकार
- ठोस राज्य ड्राइव
- भौतिक स्मृति
- फाइल आवन्टन तालिका
- छोटा एंडियन
- स्व-स्थानांतरण
- सेब डार्विन
- एल टोरिटो (मानक सीडी-रोम)
- मेजबान संरक्षित क्षेत्र
- एन रजिस्टर
- एमबीआर विभाजन तालिका
- एक्स रजिस्टर
- बीएक्स रजिस्टर
- बढ़ी हुई डिस्क ड्राइव विशिष्टता
- लिलो (बूट लोडर)
- Apple विभाजन का नक्शा