बूटलोडर को ROM में होने और MBR में होने के बारे में आप जो कहते हैं, उसके बीच का टकराव संभवतः बूटलोडर के किसी कोड के लिए इस्तेमाल होने के कारण होता है, जो कंप्यूटर को कुछ उपयोगी बनाने के लिए कोड को लोड करने के लिए न्यूनतम लोड करने के लिए कैसे काम करता है, प्रत्येक सहित मल्टी-स्टेज बूट में स्थिति।
तो, शुरुआती अवस्था में एक कंप्यूटर होना चाहिए, जो एक प्रोग्राम करने योग्य उपकरण है, लेकिन यह नहीं जानता कि सॉफ्टवेयर को चलाने के लिए कैसे लोड किया जाए क्योंकि इसमें कोई सॉफ़्टवेयर लोड नहीं है। (और इसलिए बूट से अपनी बूटस्ट्रैप से खींच ही ऊपर )।
ऐतिहासिक रूप से, इस समस्या के कुछ अलग-अलग समाधान थे, लेकिन इन दिनों हम ROM (कुछ हद तक सख्ती से EEPROM) में कुछ कोड के साथ शुरू करते हैं, जो इसे अलग-अलग उपकरणों को देखने के लिए और उन्हें बारी-बारी से आजमाकर देखने के लिए पर्याप्त है। बूट।
(यही कारण है कि अगर आप OS इंस्टॉलर डिस्क को हार्ड-ड्राइव से या अन्यथा, BIOS [ROM पर कोड, जिसमें हम जिस कोड के बारे में बात कर रहे हैं और जिसमें कुछ अन्य शामिल हैं, से कई सिस्टम सीडी या डीवीडी को बंद कर देंगे। -वह सामान जो शुरू हो जाता है] पहले सीडी / डीवीडी ड्राइव को देखने के लिए सेट है, फिर एक हार्ड-ड्राइव पर अगर उसे कुछ नहीं मिलता है, तो अक्सर सीडी / डीवीडी ड्राइव को अनदेखा करने के लिए इसे सेट किया जाता है जब तक कि मैन्युअल रूप से अनुरोध नहीं किया जाता है। एक गैर-बूट करने योग्य डिस्क को स्पिन करने में समय बर्बाद नहीं करता है जो ड्राइव में छोड़ दिया गया था)।
ROM में इस कोड को कभी-कभी बूटलोडर कहा जाता है ।
जब यह पता होता है कि किस ड्राइव को देखना है, तो यह एमबीआर को देखेगा, जिसमें प्राथमिक विभाजन के बारे में जानकारी है - आप बाद में / या बूट या सी पर कैसे देख सकते हैं: / (विंडोज सिस्टम पर) अगर आपने भी नहीं किया पता है कि डिस्क का कौन सा हिस्सा कौन सा विभाजन था, कभी ध्यान नहीं दिया कि प्रत्येक विभाजन को कैसे माउंट किया गया था? - और निष्पादन के निर्देश के साथ कुछ कोड। (संयोग से, यह बताता है कि कुछ ओएस - जैसे विंडोज - केवल एक प्राथमिक विभाजन पर स्थापित किया जा सकता है, उन विभाजन का विवरण एमबीआर में है और यह एकमात्र विभाजन जानकारी है जिसे उनके बूटलोडर ने पढ़ा है, और यह ईबीआर को लोड नहीं करता है तार्किक विभाजनों के बारे में जानें, जहाँ तक यह चिंतित है कि उन विभाजनों का अभी तक अस्तित्व नहीं है)।
उस निष्पादन योग्य कोड को एक बूटलोडर भी कहा जाता है । जब हम इसके बीच अंतर करने के लिए परवाह करते हैं और आगे क्या आता है, तो इसे प्राथमिक बूट लोडर कहा जाता है (क्योंकि जब तक हम अपना खुद का BIOS नहीं बनाते हैं तब तक हम अपने नियंत्रण से बाहर ROM बिट को अनदेखा करते हैं)।
यह कोड बहुत छोटा होगा क्योंकि इसमें फिट होने के लिए केवल लगभग 400 बाइट्स हैं, इसलिए कुछ भी वास्तविक करने के लिए, यह कुछ और कोड लोड करेगा, जो बड़ा हो सकता है क्योंकि इसे इस बाधा से निपटने की आवश्यकता नहीं है।
इस कोड को एक बूटलोडर के रूप में भी जाना जाता है । जब हम इसके बीच अंतर करने के लिए परवाह करते हैं और पहले क्या आया था, तो इसे द्वितीयक बूट लोडर कहा जाता है ।
यह कोड संभवतः प्रक्रिया का अंतिम चरण हो सकता है। यदि आपके पास केवल एक ही OS है, या यदि आपके सिस्टम के सभी OS संगत बूट-लोडर का उपयोग करते हैं (जैसे दो लिनक्स स्थापित हैं जो दोनों GRUB का उपयोग करते हैं, तो जो भी GRUB अंतिम बार अपडेट किया गया था, उनमें से किसी एक में बूट करने की पेशकश कर सकता है) मेनू (यदि वांछित है) एक कर्नेल में लोड करता है, और ऑपरेटिंग सिस्टम पर नियंत्रण पास करता है।
उस स्थिति में जहां आप एक OS है जो उस बूटलोडर के साथ संगत नहीं है, यह चेनलोड हो सकता है। उदाहरण के लिए, यदि आपके पास एक ही मशीन पर विंडोज और लिनक्स है, तो विंडोज लोड करने के लिए GRUB विकल्प वास्तव में अभी तक एक और बूटलोडर को लोड करेगा जो केवल विंडोज इंस्टॉलेशन (एस) के बारे में जानता है, और इसके ऊपर से गुजरता है। हालांकि यह प्रक्रिया में एक तृतीयक चरण था, इसे अभी भी एक द्वितीयक बूट लोडर कहा जाता है , क्योंकि यह न तो जानता है और न ही परवाह करता है कि इससे पहले एक और माध्यमिक बूट लोडर चल रहा था। यह एक Linux अधिष्ठापन के साथ भी होगा जो एक अलग प्रकार के द्वितीयक बूटलोडर का उपयोग करता है।
ज्यादातर जब हम लिनक्स के संदर्भ में बूटलोडर के बारे में बात करते हैं , तो हम आम तौर पर रॉम कोड (यह लिनक्स का हिस्सा नहीं है, या लिनक्स को स्थापित करके बदल दिया जाता है) का मतलब नहीं है। जब हम करते update-grub
हैं तो हम द्वितीयक बूटलोडर को बदल रहे होते हैं, जो आमतौर पर किसी विशेष इंस्टॉलेशन के बूट में होता है। जब हम install-grub
इसे बदल रहे हैं और एमबीआर में प्राथमिक बूटलोडर भी है, तो यह जानने के लिए पर्याप्त कोड है कि कहां / बूट है (शायद एक सॉफ्टवेयर RAID शुरू होता है जैसा कि यह जाता है) और लोड करेगा और निष्पादित करेगा जब यह, स्वयं निष्पादित हो जाता है ।
तो, सारांश में आप गलत थे जब आपने कहा कि ROM मुख्य मेमोरी का हिस्सा था * क्योंकि यह अलग है। (वास्तव में, रैम को एन्टोनॉमस टू रॉम के रूप में लिया जाता है)। आप यह कहने में दोनों सही थे कि वहाँ एक बूटलोडर था और एमबीआर में, क्योंकि वे प्रक्रिया के दो चरण हैं और दोनों को कभी-कभी उस नाम से भी बुलाया जाता है। और "अलग-अलग ओएस अपने बूट लोडर को अलग-अलग जगहों पर स्टोर करते हैं?" "ज्यादातर" है, क्योंकि यदि आप असंगत माध्यमिक बूटलोडर्स या तो अन्य बूटलोडर्स (यदि आप लिनक्स स्थापित करने के बाद विंडोज स्थापित करते हैं) या चेनलोड को दूसरे में छिपा देंगे यदि अनुरोध किया गया है (यदि आप उस स्थिति को ठीक करते हैं, या विंडोज के बाद लिनक्स स्थापित करते हैं), लेकिन एक ओएस यदि वे संगत हैं तो एक द्वितीयक बूटलोडर साझा कर सकते हैं (यदि आप एक और लिनक्स के बाद लिनक्स स्थापित करते हैं जो एक ही प्रकार के सेकेंडरी बूट लोडर का उपयोग करता है, और यह अन्य लिनक्स को देख सकता है [कभी-कभी सॉफ़्टवेयर RAID चीजों को भ्रमित करता है और चेनलोडिंग को आवश्यक बनाता है)।
* उन दिनों में जहां कोई व्यक्ति ROM और RAM दोनों का उपयोग करता है, यह अलग था। उदाहरण के लिए एक ZX स्पेक्ट्रम पर, ROM 16kiB होगा और इसमें एक BASIC दुभाषिया शामिल होगा, इसलिए आपको इसके 48kiB या 128KiB (पृष्ठांकित) या RAM में कुछ लोड करने के लिए शुरुआती बिंदु देना होगा, (इस मामले में, यह अनिवार्य रूप से बूट हो रहा है। उस BASIC दुभाषिया और फिर उस टेप में बूट करने के लिए उस का उपयोग करते हुए), BASIC दुभाषिया से कार्यों का एक पूरा गुच्छा था जो RAM में प्रोग्राम का उपयोग कर सकता है (क्यों एक ट्रिगर फ़ंक्शन लिखता है जब कंप्यूटर पहले से ही ज्ञात स्थिति में एक है विशेष रूप से जब आप अपने सभी अपने कोड में चलाने के लिए केवल 48kiB है)। यह रॉम भी उसी तरह से दिखाई देता था जैसे RAM, अलग-अलग पते पर। ऐसे मामले में ROM रैम के रूप में मुख्य मेमोरी का एक हिस्सा था, लेकिन लिखने योग्य नहीं था।
A small portion of a computer's main memory where the CPU expects to find its initial program is constructed from special nonvolatile memory cells. Such memory is known as read-only memory(ROM)
अनुसार है। मुख्य मेमोरी दो भागों, रैम और रोम से बनी होती है। मैं सिर्फ यह जानना चाहता हूं कि क्या तथाकथित बूटलोडर मुख्य मेमोरी के रोम भाग पर स्थापित है ... @Sergey