paint-brush
फ़र्मवेयर की छिपी हुई दुनिया: आपके कंप्यूटर की बूट अप प्रक्रिया की खोजद्वारा@tristejoursoir
3,062 रीडिंग
3,062 रीडिंग

फ़र्मवेयर की छिपी हुई दुनिया: आपके कंप्यूटर की बूट अप प्रक्रिया की खोज

द्वारा Aleksandr Goncharov15m2023/04/21
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

इस लेख में, हम बूट प्रक्रिया का अवलोकन करते हैं, जिसमें इसके विभिन्न चरण, शामिल प्रमुख घटक और प्रक्रिया के दौरान आने वाली चुनौतियाँ शामिल हैं। जबकि हमारा प्राथमिक ध्यान **x86 आर्किटेक्चर** (सबसे व्यापक रूप से उपयोग किया जाता है) पर होगा, अन्य आर्किटेक्चर में उनकी बूट प्रक्रिया में कई समानताएँ होंगी।
featured image - फ़र्मवेयर की छिपी हुई दुनिया: आपके कंप्यूटर की बूट अप प्रक्रिया की खोज
Aleksandr Goncharov HackerNoon profile picture


बहुत सारे लोग रुचि रखते हैं कि कंप्यूटर कैसे शुरू होता है। यहीं से जादू शुरू होता है और तब तक चलता रहता है जब तक डिवाइस चालू रहता है। इस लेख में, हम बूट प्रक्रिया का अवलोकन करेंगे, जिसमें इसके विभिन्न चरण, शामिल प्रमुख घटक और प्रक्रिया के दौरान आने वाली चुनौतियाँ शामिल हैं।


जबकि हमारा प्राथमिक ध्यान x86 आर्किटेक्चर (सबसे व्यापक रूप से उपयोग किया जाने वाला) पर होगा, अन्य आर्किटेक्चर में उनकी बूट प्रक्रिया में कई समानताएँ होंगी। मुझे उम्मीद है कि यह लेख इस क्षेत्र में अपने ज्ञान को गहरा करने के इच्छुक किसी भी व्यक्ति के लिए एक मूल्यवान संसाधन होगा। ये रहा!

विषयसूची:

  • बूट रोम
    • नॉन - वोलेटाइल मेमोरी
      • वन टाइम प्रोग्रामेबल
      • फील्ड प्रोग्राम करने योग्य
    • जगह में निष्पादन (XIP)
      • कैश-अस-राम (सीएआर)
    • लेआउट और मेमोरी मैपिंग
      • गैर-वर्णनकर्ता मोड
      • इंटेल फ्लैश डिस्क्रिप्टर / डिस्क्रिप्टर मोड
      • इंटेल फ़र्मवेयर इंटरफ़ेस टेबल (FIT)
      • एएमडी एम्बेडेड फर्मवेयर संरचना
  • सिलिकॉन आरंभीकरण
    • इंटेल फर्मवेयर सपोर्ट पैकेज (FSP)
    • एएमडी जेनेरिक एनकैप्सुलेटेड सॉफ्टवेयर आर्किटेक्चर (AGESA)
  • स्वायत्त उपतंत्र
    • इंटेल एमई
    • एएमडी पीएसपी
  • हार्डवेयर पावर अनुक्रम

बूट रोम

एक इंटीग्रेटेड सर्किट (चिप) जो मदरबोर्ड पर स्थित होता है और कंप्यूटर को बूट करने के लिए जिम्मेदार फर्मवेयर कोड को स्टोर करता है , BOOT ROM कहलाता है। यह नाम मानकीकृत नहीं है, इसलिए अन्य डेवलपर्स अक्सर इसे FLASH ROM , BIOS FLASH , BOOT FLASH , SPI FLASH , आदि कहते हैं (ऐसे नाम उन्हें तकनीक, इंटरफ़ेस और उद्देश्य नामों के कारण दिए गए हैं)। चिंता न करें, ये शब्द विनिमेय हैं। BOOT ROM में फर्मवेयर कोड कंप्यूटर चालू होने पर पहले निष्पादित होता है। यह बुनियादी परीक्षण करता है, हार्डवेयर को इनिशियलाइज़ करता है, और फिर OS लोडर को बूट करने योग्य डिवाइस, जैसे कि हार्ड ड्राइव या USB ड्राइव, से मेमोरी में लोड करता है। इस चिप को नॉन-वॉलेटाइल मेमोरी (एनवीएम) से बनाया गया है।

नॉन - वोलेटाइल मेमोरी

गैर-वाष्पशील मेमोरी एक प्रकार की कंप्यूटर मेमोरी है जो बिजली बंद होने पर भी अपनी सामग्री को बरकरार रखती है। यह इस प्रकार की मेमोरी को महत्वपूर्ण डेटा संग्रहीत करने के लिए आदर्श बनाता है जिसे कंप्यूटर बंद होने पर भी बनाए रखने की आवश्यकता होती है। इसके अलावा, चर्चा केवल फर्मवेयर कोड रखने वाली मेमोरी पर केंद्रित होगी। हम हार्ड डिस्क ड्राइव (HDD), सॉलिड स्टेट ड्राइव (SSD), फ्लॉपी डिस्क आदि जैसे स्टोरेज के बारे में बात नहीं करेंगे।


मूल रूप से, हम इस प्रकार की मेमोरी को निम्नलिखित समूहों में वर्गीकृत कर सकते हैं।

वन टाइम प्रोग्रामेबल

  • नकाबपोश रोम: सामग्री निर्माण के समय निर्धारित की जाती है और उसके बाद इसे बदला नहीं जा सकता।
  • प्रोग्रामेबल ROM (PROM): मास्क्ड ROM के विपरीत, इस प्रकार की मेमोरी को निर्माण के बाद प्रोग्राम किया जा सकता है। लेकिन अभी भी केवल एक बार।

फील्ड प्रोग्राम करने योग्य

  • Erasable Programmable ROM (EPROM): कई बार प्रोग्राम किया जा सकता है, लेकिन इसकी सामग्री को पराबैंगनी प्रकाश का उपयोग करके मिटाया और फिर से प्रोग्राम किया जा सकता है।


  • विद्युत रूप से मिटाने योग्य प्रोग्रामेबल (EEPROM): विद्युत संकेतों का उपयोग करके कई बार पुन: प्रोग्राम किया जा सकता है।


    • NOR फ्लैश मेमोरी : आर्किटेक्चरल रूप से ब्लॉक में व्यवस्थित किया गया है जहां ब्लॉक स्तर पर डेटा मिटा दिया जाता है और बाइट स्तर पर पढ़ा या लिखा जा सकता है। बाइट समानांतर, I2C, या SPI जैसे मानक इंटरफ़ेस का उपयोग करके NOR मेमोरी सीधे एक्सेस की जा सकती है।


      उद्योग में, EEPROM शब्द को ब्लॉक-वार इरेजेबल फ्लैश मेमोरी की तुलना में बाइट-वार इरेजेबल मेमोरी के लिए आरक्षित करने की परंपरा है।


प्रोग्राम करने योग्य मेमोरी एक नियम के साथ आती है - लिखने से पहले मिटा दें । ऐसी मेमोरी में, नया डेटा लिखना अधिक जटिल होता है क्योंकि डेटा को फ्लोटिंग गेट पर चार्ज के रूप में संग्रहीत किया जाता है (इसका कारण ज्यादातर मेमोरी सेल के भौतिकी में निहित है)। गेट पर चार्ज की मात्रा निर्धारित करती है कि सेल "0" या "1" स्टोर करता है या नहीं।


जब आप फ्लैश मेमोरी चिप मिटाते हैं, तो आप उस पर संग्रहीत डेटा के सभी बिट्स को ज्ञात (डिफ़ॉल्ट) स्थिति में सेट करते हैं, आमतौर पर एक तर्क "1"। यह आपको एक साफ स्लेट के साथ शुरू करने की अनुमति देता है, इसलिए बोलने के लिए, और पुराने डेटा के अवशेषों के बिना चिप पर नए डेटा को प्रोग्राम करने के लिए अभी भी संग्रहीत किया गया है। जब चिप में नया डेटा लिखा जाता है, तो नए डेटा का प्रतिनिधित्व करने के लिए अलग-अलग बिट्स की स्थिति "1" से "0" में बदल जाती है।


यदि आप चिप को मिटाए बिना बस नया डेटा लिखते हैं, तो नए डेटा को पुराने डेटा के साथ जोड़ दिया जाएगा, जिसके परिणामस्वरूप अप्रत्याशित परिणाम होंगे। उदाहरण के लिए, एक फ्लैश मेमोरी चिप पर विचार करें जिसमें 8 बिट्स मेमोरी "0110 0010" मान संग्रहीत करती है। यदि आप चिप को पहले मिटाए बिना नया डेटा "1100 1001" लिखते हैं, तो चिप की परिणामी स्थिति "0100 0000" होगी, जो आपके द्वारा अपेक्षित नहीं हो सकती है।


मुख्य भ्रम ROM शब्द से संबंधित है जो रीड ओनली मेमोरी के लिए है। "रीड-ओनली मेमोरी" शब्द का उपयोग ऐतिहासिक रूप से स्मृति को संदर्भित करने के लिए किया गया है जो स्थायी है और उपयोगकर्ता द्वारा बदला नहीं जा सकता है। हालाँकि, जैसे-जैसे तकनीक उन्नत हुई है, ROM की परिभाषा बदल गई है, और अब इसका उपयोग अक्सर उस मेमोरी को संदर्भित करने के लिए किया जाता है जो कारखाने में पूर्व-प्रोग्राम की जाती है और अंत उपयोगकर्ता द्वारा आसानी से नहीं बदली जा सकती है। लेकिन अगर उपयोगकर्ता के पास वांछित कौशल और विशेष उपकरण हैं (उदाहरण के लिए, एक प्रोग्रामर), तो व्यक्ति चिप को फिर से प्रोग्राम कर सकता है। स्मृति के मूल उद्देश्य के ऐतिहासिक संदर्भ के रूप में, ROM नाम बना हुआ है, भले ही परिभाषा बदल गई हो।


लेखन सुरक्षा लागू करने से, कुछ प्रकार के रिप्रोग्रामेबल रोम अस्थायी रूप से रीड-ओनली मेमोरी बन सकते हैं।


ये सभी मौजूदा प्रकार की गैर-वाष्पशील मेमोरी नहीं हैं, लेकिन अधिकांश लोकप्रिय लोगों के बारे में आप केवल संयोग से सुन सकते हैं। आजकल, अधिकांश मदरबोर्ड पर, ये चिप्स NOR फ्लैश तकनीक का उपयोग करके बनाए जाते हैं।

जगह में निष्पादन (XIP)

एक्ज़ीक्यूट इन प्लेस (XIP) एक ऐसी विधि है जो प्रोसेसर को फ्लैश मेमोरी से सीधे वोलेटाइल मेमोरी (जैसे RAM ) में कॉपी किए बिना कोड को निष्पादित करने की अनुमति देती है। यह फ्लैश मेमोरी को प्रोसेसर के एड्रेस स्पेस में मैप करके प्राप्त किया जाता है, ताकि कोड निष्पादन सीधे फ्लैश से किया जा सके। इसलिए, सिस्टम जितनी जल्दी हो सके कोड को निष्पादित करना शुरू कर सकता है, बिना RAM के पहले आरंभ होने की प्रतीक्षा किए बिना।


प्रतीक्षा करें... CPU SPI/समानांतर/आदि प्रोटोकॉल के माध्यम से BOOT ROM के साथ संचार कर सकता है? बेशक नहीं, यह सिर्फ सिस्टम मेमोरी से निर्देश प्राप्त कर रहा है, इस मेमोरी क्षेत्र के अनुरोध इंटेल डायरेक्ट मीडिया इंटरफेस (डीएमआई ) या एएमडी इन्फिनिटी फैब्रिक (आईएफ) / यूनिफाइड मीडिया इंटरफेस (यूएमआई) (पूर्ववर्ती) पर रीडायरेक्ट किए जाते हैं। यह मदरबोर्ड पर सीपीयू और चिपसेट के बीच की कड़ी है। इस बिंदु पर, चिपसेट में स्थित डिकोडर्स के माध्यम से पते का डिकोडिंग किया जाता है, और चिप से डेटा प्रोसेसर को वापस कर दिया जाता है।


जब चिप NOR फ्लैश मेमोरी से बनाई जाती है, जो रैंडम एक्सेस रीड्स को सपोर्ट करती है, लेकिन रैंडम एक्सेस राइट्स नहीं एक समस्या आई। जहाँ तक लिखने योग्य मेमोरी उपलब्ध नहीं है, सभी संगणनाएँ प्रोसेसर रजिस्टरों के भीतर की जानी हैं। इस बिंदु पर, कोड केवल असेंबली भाषा में लिखा जा सकता है और यह उच्च-स्तरीय भाषा (आमतौर पर, C भाषा के लिए) के लिए वातावरण स्थापित करता है। इसका कारण यह है कि मेमोरी इनिशियलाइज़ेशन इतना जटिल हो गया है, कि असेंबली में शुद्ध रूप से लिखना मुश्किल होगा। चूंकि ऐसी भाषाओं में कम से कम ढेर और ढेर की आवश्यकता होती है, इसलिए हमें लिखने योग्य स्मृति की आवश्यकता होती है। कुछ प्रोसेसर में चिप में ही SRAM एम्बेडेड होता है, लेकिन एक अधिक आधुनिक दृष्टिकोण ऑनबोर्ड कैश मेमोरी को RAM (CAR) के रूप में उपयोग करना है।


कैश-अस-राम (सीएआर)

सीपीयू कैश एक हाई-स्पीड मेमोरी है जो मुख्य मेमोरी से अक्सर उपयोग किए जाने वाले डेटा और निर्देशों की एक कॉपी स्टोर करती है। एक कैश प्रोसेसर के करीब स्थित होता है और कई स्तरों (L1, L2, L3, ...) में व्यवस्थित होता है, जिसमें प्रत्येक स्तर पिछले एक से बड़ा और धीमा होता है।


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


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


हालाँकि, अगर हम CPU कैश को RAM के रूप में उपयोग करना चाहते हैं, तो हमें नॉन-इविक्शन मोड में काम करने के लिए कैश को सेट करना होगा, जिसे नो-फिल मोड भी कहा जाता है। यह तकनीक कैश मिस के कारण बेदखली को रोकती है। इसके बजाय, कैश को नियमित एसआरएएम के रूप में माना जाता है, और सभी एक्सेस (पढ़ने/लिखने) कैश को हिट करेंगे और मुख्य मेमोरी को हिट नहीं करेंगे। विक्रेता-विशिष्ट CPU निर्देशों का उपयोग करके मोड को सक्रिय किया जा सकता है।

लेआउट और मेमोरी मैपिंग

वास्तव में, BOOT ROM में कई प्रकार के फर्मवेयर होते हैं। BOOT ROM में फर्मवेयर का एक गुच्छा जमा हो जाने के बाद, उन्हें किसी तरह अलग करने के लिए व्यवस्थित करने की आवश्यकता होती है। आइए जानें कि यह कैसे किया जाता है।

गैर-वर्णनकर्ता मोड

मूल रूप से, चिपसेट पूरे BOOT ROM सामग्री को मेमोरी (4GB से 4GB - 16MB तक) की सीधी मैपिंग करता है। विशिष्ट रूप से, यदि BOOT ROM 16 MB से कम है, तो सामग्री को बार-बार मैप किया जाता है। सीपीयू और फर्मवेयर बिना किसी प्रतिबंध के फ्लैश को पढ़/लिख सकते हैं।





नए चिपसेट में अब नॉन-डिस्क्रिप्टर मोड समर्थित नहीं है।

इंटेल फ्लैश डिस्क्रिप्टर / डिस्क्रिप्टर मोड

आखिरकार, ICH8 में, Intel ने BOOT ROM के लिए एक विशेष लेआउट पेश किया। फ्लैश को निम्नलिखित क्षेत्रों में विभाजित किया गया है:


  • फ्लैश डिस्क्रिप्टर (एफडी) - यह डेटा संरचना 0x10 ऑफसेट के साथ डिवाइस की शुरुआत में स्थित होनी चाहिए। यह ग्यारह खंडों से बना है जैसा कि नीचे चित्र में दिखाया गया है:



डिस्क्रिप्टर एमएपी में अन्य क्षेत्रों और प्रत्येक के आकार के संकेत भी हैं।


घटक अनुभाग में सिस्टम में फ्लैश(एस) के बारे में जानकारी है (घटकों की संख्या, प्रत्येक का घनत्व, अमान्य निर्देश, और इसी तरह)।


मास्टर्स अनुभाग क्षेत्रों के लिए पढ़ने/लिखने की अनुमति को परिभाषित करता है। जहां तक पढ़ने/लिखने का संबंध है, अनुमतियों को केवल पढ़ने के लिए सेट किया जाना चाहिए, इस क्षेत्र में संग्रहीत जानकारी केवल निर्माण प्रक्रिया के दौरान ही लिखी जा सकती है।


  • BIOS - केवल इस क्षेत्र को मेमोरी में मैप किया जाता है।





  • Intel Converged Security and Management Engine (CSME / ME) - विभिन्न Intel तकनीकों और ME का समर्थन करने वाला फर्मवेयर।
  • गिगाबिट ईथरनेट (GbE) - केवल गीगाबिट ईथरनेट कंट्रोलर द्वारा सीधे एक्सेस किया जा सकता है।
  • प्लेटफ़ॉर्म डेटा
  • एम्बेडेड नियंत्रक (ईसी)


फ्लैश डिस्क्रिप्टर और इंटेल एमई केवल आवश्यक क्षेत्र हैं।

इंटेल फ़र्मवेयर इंटरफ़ेस टेबल (FIT)

FIT BIOS क्षेत्र के अंदर एक डेटा संरचना है और इसमें विभिन्न प्रविष्टियाँ होती हैं जो प्लेटफ़ॉर्म कॉन्फ़िगरेशन का वर्णन करती हैं। तालिका में प्रत्येक प्रविष्टि का आकार 16 बाइट्स है। पहले को FIT हैडर कहा जाता है, दूसरे को FIT प्रविष्टि कहा जाता है। यह एक भौतिक पते 0xFFFFFFC0 (4GB - 0x40) पर FIT सूचक द्वारा स्थित है।


रीसेट वेक्टर से पहला CPU निर्देश निष्पादित करने से पहले इन घटकों को संसाधित किया जाना चाहिए। प्रविष्टियों में सीपीयू माइक्रोकोड अपडेट, स्टार्टअप एसीएम, प्लेटफॉर्म बूट/टीपीएम/बीआईओएस/टीएक्सटी नीतियां और अन्य सामान शामिल हैं। लेकिन कम से कम FIT में FIT हैडर और माइक्रोकोड अपडेट प्रविष्टियां शामिल होनी चाहिए। इसलिए, FIT का सामान्य उपयोग रीसेट वेक्टर को निष्पादित करने से पहले माइक्रोकोड को अपडेट करना है।


यहाँ मेमोरी मैप कैसा दिखता है:






एएमडी एम्बेडेड फर्मवेयर संरचना

दुर्भाग्य से, बहुत कम जानकारी है, मुझे उनके लेआउट के बारे में विवरण के साथ कोई भी लीक एएमडी चिपसेट दस्तावेज नहीं मिला। इसलिए मैं आपको कोरबूट प्रलेखन से बेहतर नहीं बता सकता। यह एएमडी दस्तावेज के आधार पर लिखा गया है जो केवल एनडीए के तहत उपलब्ध है।


दरअसल, यह जानना पर्याप्त होगा कि फ्लैश डिस्क्रिप्टर का एएमडी एनालॉग एंबेडेड फर्मवेयर स्ट्रक्चर है और इसमें पीएसपी डायरेक्टरी टेबल , बीआईओएस डायरेक्टरी टेबल और अन्य फर्मवेयर के पॉइंटर्स शामिल हैं।


सिलिकॉन आरंभीकरण

यदि आप यह देखना चाहते हैं कि आधुनिक मेमोरी और सीपीयू को कैसे आरंभ किया जाता है, तो मुझे आपको परेशान करना होगा। इंटेल और एएमडी समुदाय को सिलिकॉन इनिशियलाइज़ेशन कोड जारी करने की जल्दी में नहीं हैं। जहाँ तक ऐसी जानकारी सार्वजनिक रूप से उपलब्ध नहीं है, वे आवश्यक सिलिकॉन इनिशियलाइज़ेशन कोड के बाइनरी वितरण की पेशकश करते हैं। इसे फर्मवेयर डेवलपर्स के लिए एक पुस्तकालय माना जाना है और इसमें मेमोरी कंट्रोलर, चिपसेट, सीपीयू और सिस्टम के अन्य विभिन्न भागों को आरंभ करने के लिए बाइनरी कोड शामिल है।

इंटेल फर्मवेयर सपोर्ट पैकेज (FSP)

उस बाइनरी को 4 घटकों में विभाजित किया जा सकता है:


  • एफएसपी-टी: प्रारंभिक निष्पादन वातावरण ("अस्थायी रैम") स्थापित करना जिसमें सी कोड निष्पादित किया जा सकता है। व्यवहार में, यह बाइनरी CAR को सेट अप करता है, लेकिन कुछ शुरुआती हार्डवेयर इनिशियलाइज़ेशन भी करता है जैसे PCIe मेमोरी-मैप्ड कॉन्फ़िगरेशन स्पेस सेट करना।
  • FSP-M: स्थायी मेमोरी (जैसे DRAM) को इनिशियलाइज़ करना।
  • FSP-S: CPU और IO कंट्रोलर इनिशियलाइज़ेशन सहित सिलिकॉन इनिशियलाइज़ेशन को पूरा करना।
  • एफएसपी-ओ: वैकल्पिक घटक जो ओईएम उपकरणों को आरंभीकरण प्रदान करता है।


यहाँ Intel द्वारा पोस्ट की गई Intel FSP बायनेरिज़ की एक रिपॉजिटरी है जिसे आप उनके GitHub पर पा सकते हैं। FSP विशिष्टता v2.1 इंटेल वेबसाइट से प्राप्त की जा सकती है।

एएमडी जेनेरिक एनकैप्सुलेटेड सॉफ्टवेयर आर्किटेक्चर (AGESA)

पारिवारिक 17h से पहले के उत्पादों के लिए AGESA को v5 या Arch2008 के रूप में जाना जाता है। उस समय, AGESA ओपन-सोर्स था और कोड कोरबूट रिपॉजिटरी में उपलब्ध था (इसे 4.18 रिलीज़ के बाद हटा दिया गया था)। आर्क2008 के विनिर्देश एएमडी वेबसाइट पर देखे जा सकते हैं।


पारिवारिक 17h (जेन माइक्रोआर्किटेक्चर) उत्पादों की शुरूआत के साथ, एएमडी ने एजीईएसए स्रोत कोड प्रकाशित नहीं किया है, केवल पूर्वनिर्मित बाइनरी समाधान हैं। ऐसे उत्तराधिकारी को AGESA v9 कहा जाता है और यह 17h और उसके बाद के परिवार का समर्थन करता है।

openSIL

कोई विस्तृत जानकारी उपलब्ध नहीं है, केवल समाचार उपलब्ध हैं

स्वायत्त सबसिस्टम

आधुनिक x86 बूट प्रक्रिया का एक अभिन्न अंग, जिसके बिना x86 कोर कभी सक्रिय नहीं होंगे। इसलिए उन्हें पूरी तरह से निष्क्रिय करना संभव नहीं है। ये प्रौद्योगिकियां हार्डवेयर के आरंभीकरण, सिस्टम अखंडता की पुष्टि करने, बिजली प्रबंधन और सीपीयू के लॉन्च के लिए जिम्मेदार हैं। इन उप-प्रणालियों के फर्मवेयर को लोड किया जाता है और मुख्य प्रोसेसर द्वारा अपने स्वयं के फर्मवेयर को निष्पादित करने से पहले निष्पादित किया जाता है। ऐसे सिस्टम पर एक कोड प्लेटफॉर्म के सीपीयू कोर से स्वतंत्र रूप से चलता है।


जब तक कई हार्डवेयर कंपनियों ने अस्पष्टता के माध्यम से सुरक्षा के सिद्धांत को शामिल किया है, तब तक इन सबसिस्टम के लिए न तो स्रोत कोड और न ही दस्तावेज उपलब्ध हैं। सौभाग्य से, हम जानते हैं कि यह बूट प्रक्रिया को कैसे प्रभावित करता है - हार्डवेयर पावर अनुक्रम देखें।


हम विस्तार में नहीं जाएंगे, क्योंकि दुनिया भर के शोधकर्ताओं के इंटरनेट पर पहले से ही व्यापक लेख मौजूद हैं। लेकिन मैं आपको इसका संक्षिप्त विवरण दूंगा कि यह क्या है।

इंटेल प्रबंधन इंजन (एमई)

Intel ME 2008 से Intel चिपसेट (PCH) में एकीकृत एक अलग i486/80486 माइक्रोप्रोसेसर है। इसकी अपनी RAM, बिल्ट-इन ROM, चिपसेट के अंदर सभी बसों के लिए बस ब्रिज है (परिणामस्वरूप, यह नेटवर्क तक पहुंच सकता है) और यहां तक कि सीपीयू पर मुख्य रैम), और इसी तरह। MINIX पर आधारित एक कस्टम OS चलाता है।

एएमडी प्लेटफार्म सुरक्षा प्रोसेसर (पीएसपी)

एएमडी पीएसपी एक एआरएम कोर है जो ट्रस्टज़ोन एक्सटेंशन पर निर्भर है, जिसे सीपीयू डाई में कोप्रोसेसर के रूप में डाला जाता है। इस चिप को 2013 से अधिकांश एएमडी प्लेटफॉर्म में एकीकृत किया गया है। एक गैर-दस्तावेजी और मालिकाना ओएस चलाता है।

हार्डवेयर पावर अनुक्रम

यह प्रक्रिया, पावर ऑन सीक्वेंस या पावर सीक्वेंसिंग के रूप में भी जानी जाती है, प्लेटफॉर्म पर आवश्यक एक विशेष क्रम में कई व्युत्पन्न वोल्टेज स्तर और / या बिजली आपूर्ति रेल प्रदान करती है। अधिक सरल शब्दों में, यह एक विशिष्ट क्रम में कई प्लेटफ़ॉर्म घटकों को शक्ति प्रदान करता है। प्रक्रिया सिस्टम या प्लेटफ़ॉर्म डिज़ाइन के आधार पर भिन्न होती है, लेकिन आमतौर पर एक मानक पीसी में निम्नलिखित चरण शामिल होते हैं:


  • आप पावर बटन दबाएं। लेकिन रुकिए... यह बटन कंप्यूटर केस पर है जो कि कंप्यूटर का जरूरी हिस्सा नहीं है। आमतौर पर, पावर बटन एक केबल होता है। हमारे पास एक तरफ एक बटन है और एक स्विच है जिसे हम दूसरी तरफ मदरबोर्ड पर दो मेटल प्रोंग्स पर लगाते हैं। जब हम बटन दबाते हैं तो ये कांटे जुड़े होते हैं ताकि बिजली उनके माध्यम से जा सके। यदि आप रुचि रखते हैं तो बिना पावर बटन के कंप्यूटर को चालू करने के तरीके के बारे में नीचे दिया गया वीडियो देखें।


  • मदरबोर्ड बिजली आपूर्ति इकाई (पीएसयू) को एक संकेत भेजता है।


  • बिजली की आपूर्ति संकेत प्राप्त करती है, बिजली की उचित मात्रा प्रदान करती है, और मदरबोर्ड पर एक संकेत वापस भेजती है।
  • एक बार जब मदरबोर्ड पावर गुड सिग्नल प्राप्त कर लेता है, तो यह कोर, घड़ियां, चिपसेट, मेमोरी, विभिन्न नियंत्रकों आदि जैसे प्लेटफॉर्म घटकों को शक्ति प्रदान करता है।
  • स्वायत्त उप-प्रणालियों (ऊपर चर्चा की गई) सहित विभिन्न उप-प्रणालियाँ मुख्य प्रोसेसर से पहले शुरू हो सकती हैं।


  • एएमडी-आधारित सिस्टम (परिवार 17h और बाद के लिए)


    • PSP -chip BOOT ROM पर क्रियान्वित करता है।

    • पीएसपी ऑफ -चिप बूट रॉम में एंबेडेड फर्मवेयर टेबल का पता लगाता है और पीएसपी फर्मवेयर निष्पादित करता है।

    • PSP ABL चरणों को खोजने और उन्हें निष्पादित करने के लिए PSP निर्देशिका तालिका को पार्स करता है।

    • ABL चरण मुख्य मेमोरी को इनिशियलाइज़ करते हैं, BOOT ROM में BIOS छवि का पता लगाते हैं, और इसे DRAM में लोड करते हैं (यदि छवि संकुचित है तो डीकंप्रेस करती है)।


      इस प्लेटफ़ॉर्म के पास CAR का उपयोग करने का कोई कारण नहीं है क्योंकि DRAM पहले से ही उपलब्ध है और PSP इसमें फ़र्मवेयर इमेज लोड करता है।


  • इंटेल आधारित सिस्टम
    • चिपसेट (आईसीएच/पीसीएच) बूट रोम में इंटेल फ्लैश डिस्क्रिप्टर पाता है।
    • चिपसेट CSME फर्मवेयर को आंतरिक मेमोरी में कॉपी करता है जहां Intel ME इसे एक्सेस कर सकता है और अंतिम इसे निष्पादित करना शुरू कर देता है।
    • चिपसेट BIOS क्षेत्र को मेमोरी में मैप करता है।
    • फ़र्मवेयर इंटरफ़ेस तालिका में स्थित माइक्रोकोड अद्यतन CPU में लोड किए जाते हैं। उन्हें प्रत्येक सिस्टम बूट पर लागू किया जाना है।
    • (वैकल्पिक) यदि प्रमाणित कोड मॉड्यूल (ACM) पाए जाते हैं, तो वह प्रविष्टि निष्पादित हो जाती है।


  • इस पूरे समय में, सिस्टम के अन्य भागों के तैयार होने से पहले सीपीयू को शुरू होने से रोकने के लिए सीपीयू रीसेट सिग्नल पर जोर दिया जाता है। जब प्लेटफ़ॉर्म तैयार हो जाता है, तो CPU रीसेट लाइन डी-एसेसर हो जाती है। मल्टी-प्रोसेसर या मल्टी-कोर सिस्टम में एक सीपीयू को गतिशील रूप से बूटस्ट्रैप प्रोसेसर (बीएसपी) के रूप में चुना जाता है जो सभी फर्मवेयर इनिशियलाइज़ेशन कोड को चलाता है। शेष प्रोसेसर, जिन्हें इस बिंदु पर एप्लिकेशन प्रोसेसर (एपी) कहा जाता है, बाद में फर्मवेयर/कर्नेल द्वारा स्पष्ट रूप से सक्रिय होने तक रुके रहते हैं।


  • सीपीयू के पहली बार चालू होने के बाद, यह वास्तविक मोड में काम करता है। अधिकांश रजिस्टरों में निर्देश सूचक (आईपी), कोड सेगमेंट (सीएस), और डिस्क्रिप्टर कैश सहित अच्छी तरह से परिभाषित मूल्य हैं, जो प्रोसेसर के भीतर प्रत्येक सेगमेंट डिस्क्रिप्टर की एक प्रति है जो सेगमेंट मेमोरी तक तेजी से पहुंच की अनुमति देता है।


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


    हालाँकि, GDT वास्तविक मोड में शामिल नहीं है, इसलिए प्रोसेसर आंतरिक रूप से प्रविष्टियाँ उत्पन्न करता है। सीएस चयनकर्ता रजिस्टर, सेगमेंट डिस्क्रिप्टर तक पहुंचने के लिए उपयोग किया जाता है, 0xF000 से लोड किया जाता है। CS आधार पता 0xFFFF_0000 से प्रारंभ किया गया है। IP को 0xFFF0 से प्रारंभ किया गया है।


    इसलिए, प्रोसेसर भौतिक-पते 0xFFFF_FFF0 ( 0xFFFF_0000 + 0x0000_FFF0 ) पर स्थित मेमोरी से निर्देश प्राप्त करना शुरू कर देता है। उस पते पर निष्पादित पहला निर्देश रीसेट वेक्टर कहलाता है।


    नोट: यह ट्रिक आपको उच्च पता स्थान तक पहुंच प्रदान करती है, हालाँकि, आप 0xFFFF_0000 पते के नीचे के कोड तक नहीं पहुँच सकते। CS चयनकर्ता रजिस्टर फर्मवेयर द्वारा लोड किए जाने तक CS आधार पता इस प्रारंभिक मान पर बना रहता है। यह लंबी छलांग लगाकर किया जा सकता है।


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


  • पता गैर-वाष्पशील मेमोरी के एक खंड में है, इसलिए सीपीयू एक्ज़ीक्यूट इन प्लेस (XIP) विधि का उपयोग करता है। हालाँकि यदि यह AMD-आधारित प्रणाली है, तो आप शायद मुख्य मेमोरी से पढ़ रहे हैं।


  • सीपीयू एक फर्मवेयर कोड निष्पादित करता है।


मेरा सुझाव है कि आप पावर-ऑन सीक्वेंस के बारे में नीचे दिया गया वीडियो देखें, जो एक उदाहरण के रूप में ASUS P9X79 मदरबोर्ड का उपयोग करके प्रक्रिया की व्याख्या करता है। इस तथ्य के बावजूद कि यह रूसी भाषा में है, यदि आप स्वत:-जनित अंग्रेजी उपशीर्षक चालू करते हैं तो आप सब कुछ समझ पाएंगे।




इस लेख ने बूटिंग के कार्य करने के तरीके से संबंधित बहुत सी सैद्धान्तिक जानकारी प्रदान की है। हालाँकि, इस प्रक्रिया को सही मायने में समझने के लिए, हमें मौजूदा फ़र्मवेयर के स्रोत कोड और आर्किटेक्चर पर करीब से नज़र डालने की ज़रूरत है।


अगले लेख में, हम उन्हें विस्तार से जांचने के लिए BIOS , UEFI और कोरबूट में गहराई से जाएंगे।

संसाधन