MBR: यदि कोई ड्राइव बूट करने योग्य है या नहीं तो BIOS कैसे तय करता है?


12

Askubuntu पर इस सवाल का जवाब देने की कोशिश करते हुए: मैं GRUB की स्थापना कैसे रद्द करूं, मैंने एमबीआर पर विकिपीडिया लेख पढ़ा और सुपरसुसर पर कुछ हद तक संबंधित प्रश्न का सही उत्तर दिया, हालांकि, एक बात अभी भी मेरे लिए स्पष्ट नहीं है:

क्या वास्तव में BIOS यह तय करता है कि कोई ड्राइव बूट करने योग्य है या नहीं? बूट अनुक्रम ड्राइव # 1 से कैसे निकलता है और अगर सिस्टम में एक से अधिक ड्राइव स्थापित है, तो ड्राइव # 2 से बूट करने की कोशिश कर रहा है?

मेरी समझ यह है कि एमबीआर पर सामान्य रूप से जांचने वाली एकमात्र चीज़ 512-बाइट सेक्टर के अंत में उसका हस्ताक्षर है, और फिर यह बूट सेक्टर के पहले 446 बाइट्स में स्थित प्रारंभिक बूटलोडर पर नियंत्रण स्थानांतरित करता है।

क्या इसका मतलब यह है कि बूट सेक्टर के पहले 446 बाइट्स में कुछ सार्थक बूटलोडर कोड होना चाहिए, भले ही डिस्क बूट करने योग्य न हो?

BIOS के बाद ड्राइव # 1 पर बूटलोडर पर नियंत्रण स्थानांतरित हो गया जो कि "बूट करने योग्य" विभाजन नहीं हुआ - वास्तव में दूसरी ड्राइव पर बूटलोडर को कैसे लगाया जाता है?

क्षमा करें यदि यह बहुत तकनीकी है :) लघु प्रश्न यह है: "वास्तव में BIOS एक ड्राइव को कैसे छोड़ता है और अगले एक से बूट करने की कोशिश करने के लिए आगे बढ़ता है?"

जवाबों:


16

क्या वास्तव में BIOS यह तय करता है कि कोई ड्राइव बूट करने योग्य है या नहीं?

यदि कोई ड्राइव 16-बाइट विभाजन रिकॉर्ड पर आधारित है, तो MBR कोड क्षेत्र (446 वें बाइट पर शुरू होने वाली तालिका में आयोजित) के बाद BIOS तय करता है । प्रत्येक विभाजन रिकॉर्ड में पहला बाइट ड्राइव के बूट करने योग्य स्थिति का प्रतिनिधित्व करता है (और यदि बूट करने योग्य है, या यदि नहीं तो) पर सेट है। कुछ BIOS एमबीआर के अन्य भागों (जैसे विभाजन प्रकार, चेकसम) की जांच कर सकते हैं, लेकिन मूल आवश्यकता बूट करने योग्य ध्वज है।0x800x00

बूट अनुक्रम ड्राइव # 1 से कैसे निकलता है और अगर सिस्टम में एक से अधिक ड्राइव स्थापित है, तो ड्राइव # 2 से बूट करने की कोशिश कर रहा है?

यह कार्यान्वयन पर निर्भर है, और यही कारण है कि आपको बूट ऑर्डर को ठीक से चुनने की आवश्यकता है। ज्यादातर मामलों में, BIOS आपके द्वारा सेट किए गए क्रम में प्रत्येक भंडारण माध्यम से दिखेगा, और यह निर्धारित करेगा कि यह उस डिवाइस से (एमबीआर डेटा के माध्यम से) बूट हो सकता है। यदि यह हो सकता है, यह करता है - यदि नहीं, तो यह अन्य उपकरणों (फिर से, आपके द्वारा चयनित क्रम में) के माध्यम से लूपिंग जारी रखता है।

BIOS के बाद ड्राइव # 1 पर बूटलोडर पर नियंत्रण स्थानांतरित हो गया जो कि "बूट करने योग्य" विभाजन नहीं हुआ - वास्तव में दूसरी ड्राइव पर बूटलोडर को कैसे लगाया जाता है?

एक बार वैध बूट डिवाइस मिल जाने पर (यानी बूट करने योग्य झंडा सेट हो जाता है, और अन्य अतिरिक्त चेक पास हो जाते हैं), BIOS एमबीआर सेक्टर को रैम में कॉपी कर लेता है। तब BIOS इस स्थान की शुरुआत (एक JUMPअनुदेश का उपयोग करके ) को निर्देश सूचक को स्थानांतरित करता है , जहां एमबीआर कोड खंड स्थित है, और कंप्यूटर तब शुरू होता है।

यदि BIOS BIOS बूट विशिष्टता का समर्थन करता है , तो MBR कोड एक निश्चित निर्देश के साथ BIOS पर नियंत्रण वापस कर सकता है, इसे बूट विफलता का संकेत देता है और अगले डिवाइस को आज़माने के लिए संकेत देता है। पुराने BIOS अभी एक त्रुटि संदेश मुद्रित करते हैं। यदि आप BIOS का समर्थन करते हैं तो एक अच्छा विवरण यह है कि क्या आप USB से बूट कर सकते हैं।

मेरी समझ यह है कि एमबीआर पर सामान्य रूप से जांचने वाली एकमात्र चीज़ 512-बाइट सेक्टर के अंत में उसका हस्ताक्षर है, और फिर यह बूट सेक्टर के पहले 446 बाइट्स में स्थित प्रारंभिक बूटलोडर पर नियंत्रण स्थानांतरित करता है।

यह सही है, हालांकि यह ध्यान दिया जाना चाहिए कि अधिकांश आधुनिक BIOS एक GUID विभाजन तालिका के साथ-साथ पुराने, पारंपरिक MBR- शैली तालिका भी देखेंगे।

क्या इसका मतलब यह है कि बूट सेक्टर के पहले 446 बाइट्स में कुछ सार्थक बूटलोडर कोड होना चाहिए, भले ही डिस्क बूट करने योग्य न हो?

नहीं , लेकिन ड्राइव में एक वैध MBR या GUID विभाजन तालिका होनी चाहिए - अन्यथा, यह कंप्यूटर द्वारा पता नहीं लगाया जाएगा। जबकि एमबीआर का कोड हिस्सा वास्तव में खाली हो सकता है, ड्राइव के पहले सेक्टर में एक अच्छी तरह से गठित एमबीआर / जीपीटी होना चाहिए।


बहुत विस्तृत जवाब के लिए धन्यवाद। तो एक वैध बूट करने योग्य डिवाइस के लिए मानदंड विभाजन तालिका में बूट करने योग्य विभाजन की उपस्थिति और कुछ "अन्य अतिरिक्त जांच" है? मैं बस थोड़ा उलझन में हूँ क्योंकि AskUbuntu पर मूल प्रश्न में लेखक दिखाता है कि ड्राइव पर सभी विभाजन बूट करने योग्य नहीं हैं और फिर भी वह टूटी हुई GRUB के कारण हुई त्रुटि को देखता है - जिसे BIOS द्वारा बिल्कुल भी लागू नहीं किया जाना चाहिए। क्योंकि ड्राइव "बूट करने योग्य" मानदंडों को पूरा नहीं करता है, इसलिए BIOS को ड्राइव को छोड़ देना चाहिए और अगले एक पर जाना चाहिए
सर्गेई

@ Sergey मैंने उस सवाल को देखा, और मैं अनिश्चित हूं। यह संभव है कि एमबीआर दूषित हो, या बूट करने योग्य ध्वज अमान्य मान पर सेट है (यह सुनिश्चित नहीं है कि fdiskउन मामलों को कैसे संभालना होगा, हालांकि मूल संस्करण ने अवैध एमबीआर हेडर को ध्वजांकित किया था )। मैंने ओपी को कच्चे एमबीआर हेडर पोस्ट करने की सलाह दी, लेकिन वह बूट करने योग्य ध्वज को / बंद (मैन्युअल रूप से ध्वज को सेट / रीसेट करने) के लिए "टॉगल" करना चाह सकता है।
ब्रेकथ्रू

ध्यान रखें कि BIOS कोड जेनेरिक नहीं है। यह प्रत्येक मेनबोर्ड के लिए विशिष्ट है, इसलिए यह जानता है कि किस प्रकार के ड्राइव को किस पोर्ट से जोड़ा जा सकता है।
लैटिनसुद

यह उत्तर पूरी तरह से सही नहीं है। एफडब्ल्यूआईयू, एक सक्रिय विभाजन की जांच कर रहा है और कुछ ऐसा नहीं है जो "डिफ़ॉल्ट" एमबीआर बूट कोड करता है, न कि BIOS। नियोस्मार्ट अधिक प्रशंसनीय विवरण प्रस्तुत करता है: “आईबीएम-संगत पीसी (मूल रूप से, सब कुछ) 512-बाइट एमबीआर के अंतिम दो बाइट्स को बूट हस्ताक्षर कहा जाता है और यह निर्धारित करने के लिए BIOS द्वारा उपयोग किया जाता है कि चयनित बूट ड्राइव वास्तव में उपयुक्त है या नहीं नहीं।" पिछला हिस्सा सिर्फ गलत है। विरासत BIOS GPT से बूट कर सकता है (उपयुक्त BIOS बूट कोड के साथ), क्योंकि यह अनिवार्य रूप से "फ्री-स्टाइल" बूटिंग है।
डैनियल बी

@ डैनियलबी इन दोनों चीजों को सीधे जवाब में संबोधित किया गया है: "एमबीआर पर सामान्य रूप से जांचता है 512-बाइट सेक्टर के बहुत अंत में इसका हस्ताक्षर है, और फिर यह केवल शुरुआती 446 बाइट्स में स्थित प्रारंभिक बूटलोडर पर नियंत्रण स्थानांतरित करता है। बूट सेक्टर " और " अधिकांश आधुनिक BIOS एक GUID विभाजन तालिका के साथ-साथ पुराने, पारंपरिक MBR- शैली तालिका "के लिए भी देखेंगे"
ब्रेकथ्रू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.