कोरबूट

कोरबूट, जिसे पहले लाइनेक्स बायोस (बायोस) के नाम से जाना जाता था, एक सॉफ़्टवेयर प्रोजेक्ट है जिसका उद्देश्य अधिकांश कंप्यूटरों में पाए जाने वाले फर्मवेयर (बायोस या UEFI) को परिवर्तित करने के लिए एक हल्के फ़र्मवेयर के साथ डिज़ाइन किया जाता हैं जो आधुनिक 32-बिट या 64-बिट ऑपरेटिंग सिस्टम को लोड करने और चलाने के लिए आवश्यक न्यूनतम कार्य करने के लिए डिज़ाइन किया गया है।

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

कोरबूट वेरिएंट में से एक लिब्रेबूट होती है, इस प्रकार सॉफ्टवेयर वितरण पूर्ण रूप से बाइनरी ब्लॉब से मुक्त है, जिसका लक्ष्य अंतिम उपयोगकर्ताओं के लिए किया जाता हैं।

इतिहास
कोरबूट परियोजना 1999 की सर्दियों में लॉस अलामोस नेशनल लेबोरेटरी (LANL) में उन्नत कंप्यूटिंग प्रयोगशाला में प्रारंभ हुई थी।

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

गूगल समर ऑफ़ कोड के लिए लगातार सात वर्षों (2007-2014) में कोरबूट को स्वीकार किया गया था। पहले तीन मॉडलों के अतिरिक्त, सभी  क्रोम बुक कोरबूट पर चलते हैं।   एआरएम संरचना के आधार पर प्रोसेसर के लिए समर्थन को सक्षम करने के लिए पनडुब्बी से कोड को आत्मसात किया गया है।

जून 2019 में, कोरबूट ने फ़र्मवेयर पर अपने रिवर्स इंजीनियरिंग प्रयासों के लिए एनएसए सॉफ्टवेयर घिद्रा का उपयोग करना प्रारंभ किया था। मुक्त और खुला स्रोत सॉफ्टवेयर के रूप में सुइट की रिलीज़ के बाद फ़र्मवेयर-विशिष्ट समस्याएं उत्पन्न हो गई थी।

समर्थित प्लेटफॉर्म
कोरबूट द्वारा समर्थित एमआईपीएस संरचना में IA-32, x86-64, आर्म संरचना, आर्म64, एमआईपीएस संरचना और रिस्क-V सम्मिलित हैं। समर्थित सिस्टम- आन- एक चिप (एसओसी) प्लेटफॉर्म में एएमडी जिओड (प्रोसेसर) सम्मिलित है, जो प्रति व्यक्ति एक लैपटॉप के लिए विकसित जिओड जीएक्स प्रोसेसर से प्रारंभ होता है। आर्टेक समूह ने अपने थिन कैन मॉडल डीबीई61 के लिए जिओड एलएक्स सपोर्ट जोड़ा; उस कोड को एएमडी द्वारा अपनाया गया था और जिओड एलएक्स प्लेटफॉर्म पर अपग्रेड किए जाने के बाद ओएलपीसी के लिए और सुधार किया गया था, और अन्य जिओड वेरिएंट का समर्थन करने के लिए कोरबूट समुदाय द्वारा इसे और विकसित किया गया है। कोरबूट को फ्लैशरोम का उपयोग करके जिओड प्लेटफॉर्म पर फ्लैश किया जा सकता है।

एएमडी जिओड आधारित प्लेटफॉर्म पर प्रारंभिक विकास से कई एएमडी प्रोसेसर और चिपसेट पर कोरबूट समर्थन बढ़ाया गया है। प्रोसेसर सूची में समहू 0Fh और 10h (एएमडी K8 कोर), और वर्तमान में समहू 14h ( बनबिलाव (प्रोसेसर) कोर, एएमडी त्वरित प्रसंस्करण इकाई) सम्मिलित किया गया हैं। कोरबूट समर्थन एएमडी चिपसेट तक भी विस्तारित है: एएमडी 690 चिपसेट श्रृंखला, एएमडी 700 चिपसेट श्रृंखला, एएमडी 580 चिपसेट श्रृंखला, और SB8xx निर्धारित की गई हैं।

एएमडी जेनेरिक एनकैप्सुलेटेड सॉफ्टवेयर संरचना (एजीईएसए)—‌इस प्रकार बूटस्ट्रैपिंग प्रोटोकॉल जिसके द्वारा एएमडी64 मेनबोर्ड पर सिस्टम डिवाइस को इनिशियलाइज़ किया जाता है—‌एएमडी64 हार्डवेयर पर कोरबूट सिस्टम इनिशियलाइज़ेशन के लिए आवश्यक कार्यक्षमता प्रदान करने के उद्देश्य से 2011 की प्रारंभ में ओपन सोर्स किया गया था। चूंकि, इसी प्रकार की रिलीज कभी भी एएमडी द्वारा भविष्य के विकास का आधार नहीं बन पाई और बाद में इसे रोक दिया गया था।

डिवाइस जिन्हें कोरबूट या इसके डेरिवेटिव में से एक के साथ प्रीलोड किया जा सकता है उनमें सम्मिलित हैं
 * कुछ x86-आधारित क्रोम बुक,
 * लिब्रे T440p और X230 (क्रमशः रीब्रांडेड थिंकपैड टी440p और X230, मिनीफ्री से उपलब्ध है, जिसे पहले ग्लूग्लग के नाम से जाना जाता था), ,
 * प्रति व्यक्ति एक लैपटॉप पहल से ओएलपीसी एक्सओ,
 * थिन कैन मॉडल डीबीई61, डीबीई62 और डीबीई63, और पीसी इंजन द्वारा निर्मित फैनलेस सर्वर/राउटर हार्डवेयर। * सभी प्योरिज्म (कंपनी) कार्यचलाऊ  लैपटॉप कोरबूट के साथ आते हैं।
 * कुछ सिस्टम76 पीसी कोरबूट टिआनो कोर फर्मवेयर का उपयोग करते हैं, जिसमें ओपन सोर्स एम्बेडेड नियंत्रक फर्मवेयर सम्मिलित है।
 * स्टारलैब्स सिस्टम को वैकल्पिक रूप में कोरबूट फर्मवेयर का उपयोग करता है।

डिजाइन
कोरबूट सामान्यतः लिनक्स कर्नेल को लोड करता है, किन्तु यह किसी भी अन्य स्टैंडअलोन कार्यक्रम को लोड कर सकता है। स्टैंड-अलोन निष्पादन योग्य और लिंक करने योग्य प्रारूप निष्पादन योग्य, जैसे कि iPXE, gPXE या एथरबूट जो लिनक्स कर्नेल संजाल बूट, या सी बायोस (बायोस) को बूट कर सकता है। जो एक लिनक्स कर्नेल, विंडोज 2000 और बाद में, और बीएसडी लोड कर सकता है; विंडोज 2000/विंडोज XP और ओपेन बीएसडी समर्थन पहले एडीएलओ द्वारा प्रदान किया गया था।  कोरबूट किसी भी समर्थित डिवाइस से कर्नेल को लोड कर सकता है, जैसे माइरिनेट, क्वाड्रिक्स, या एससीआई कंप्यूटर क्लस्टर इंटरकनेक्ट इत्यादि। इस प्रकार अन्य कर्नेल (कंप्यूटर विज्ञान) को सीधे बूट करना भी संभव है, जैसे बेल लैब्स कर्नेल से प्लान 9 इत्यादि। कर्नेल को सीधे लोड करने के अतिरिक्त, कोरबूट एक समर्पित बूट लोडर को नियंत्रण दे सकता है, जैसे जीएनयू ग्रब 2 का कोरबूट-सक्षम संस्करण इत्यादि।

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

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

अपने आप में, कोरबूट बायोस इंटरप्ट कॉल सेवाएं प्रदान नहीं करता है। सीबायोस पेलोड (कंप्यूटिंग) का उपयोग बायोस कॉल प्रदान करने के लिए किया जा सकता है और इस प्रकार कोरबूट को उन ऑपरेटिंग सिस्टम को लोड करने की अनुमति देता है जिनके लिए विंडोज 2000/XP/Vista/7 और बीएसडी जैसी सेवाओं की आवश्यकता होती है। चूंकि यह अधिकांशतः आधुनिक ऑपरेटिंग सिस्टम हार्डवेयर को दूसरी विधियों से एक्सेस करते हैं और बायोस कॉल का उपयोग केवल आरंभिक आरंभ के समय और फ़ॉलबैक तंत्र के रूप में करते हैं।

कोरबूट चरण

 * 1) बूटब्लॉक चरण: फ्लैश एक्सेस प्राप्त करने के लिए तैयार करें और उपयोग करने के लिए रोम चरण देखें
 * 2) रोम स्टेज: मेमोरी और अर्ली चिपसेट इनिट (UEFI में PEI जैसा थोड़ा सा)
 * 3) रैम स्टेज: सीपीयू, चिपसेट और मेनबोर्ड इनिट, पीसीआई रिसोर्स असाइनमेंट, एसीपीआई और एसएमबीआईओएस टेबल क्रिएशन, एसएमएम हैंडलर (यूईएफआई में डीएक्सई स्टेज जैसा थोड़ा सा)
 * 4) पेलोड।

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

रोमसीसी, एक सी (प्रोग्रामिंग लैंग्वेज) संकलक  जो रैम के अतिरिक्त रजिस्टरों का उपयोग करता है, कार्य को सरल बनाता है। रोमसीसी का उपयोग करना, डीरैम डीआईएमएम के  सीरियल उपस्थिति का पता लगाने  रोम तक  सिस्टम प्रबंधन बस  को एक्सेस करना अपेक्षाकृत आसान है, जो रैम का उपयोग करने की अनुमति देता है।

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

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

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

यह अन्य पोर्टिंग सहायता www.ioss.com.tw से वाणिज्यिक आरडी1 बायोस उद्धारकर्ता उत्पाद था, (www.iad.gov/ioss/ पर यूएस इंटरएजेंसी ओपीसेक सपोर्ट स्टाफ के साथ भ्रमित नहीं होना चाहिए) जो दो बूट मेमोरी उपकरणों का एक संयोजन था जो कि बूट मेमोरी सॉकेट में प्लग करता है और दो उपकरणों के बीच चयन करने के लिए मैन्युअल स्विच होता है। कंप्यूटर एक डिवाइस से बूट हो सकता है, और फिर कंप्यूटर को दूसरे डिवाइस को रीप्रोग्राम या फ्लैश करने की अनुमति देने के लिए स्विच को टॉगल किया जा सकता है। एक अधिक महंगा विकल्प बाहरी ईईपीरोम/नोर फ़्लैश प्रोग्रामर है।

ऐसे सीपीयू एमुलेटर भी हैं जो या तो सेंट्रल प्रोसेसिंग यूनिट को बदल देते हैं या सेज स्मार्टप्रोब के साथ JTAG पोर्ट के माध्यम से जुड़ जाते हैं। एक उदाहरण होने के नाते। कोड को बायोस डिवाइस को फ्लैश करने के अतिरिक्त बायोस एमुलेटर पर बनाया या डाउनलोड किया जा सकता है।

पेलोड
कोरबूट पेलोड को लोड कर सकता है, जिसे लिबपेलोड हेल्पर लाइब्रेरी। सम्मिलिता पेलोड में निम्नलिखित सम्मिलित हैं:
 * सीबायोस, x86 बायोस का एक छोटा सा कार्यान्वयन, जिसे ज्यादातर 16-बिट सी (प्रोग्रामिंग लैंग्वेज) में जीएनयू संकलक संग्रह का उपयोग करके लिखा गया है।
 * टिआनो कोर, यूईएफआई का स्वतंत्र और मुक्त-स्रोत कार्यान्वयन
 * ओपेनबायोस, फर्मवेयर खोलें का एक मुफ़्त और ओपन-सोर्स कार्यान्वयन
 * जीएनयू ग्रब, एक बूटलोडर
 * FILO, USB बूट समर्थन के साथ एक ग्रब जैसा बूटलोडर
 * ईथरबूट, यह नेटवर्क पर एक ऑपरेटिंग सिस्टम को बूट कर सकता है
 * gPXE/iPXE, ईथर बूट का उत्तराधिकारी, सीबायोस या टिआनो कोर के अनुसार चलने पर कार्य करता है
 * गूगल द्वारा क्रोम ओएस के लिए डेप्थचार्ज का उपयोग किया जाता है
 * अतीत में दास यू-बूट की एक शाखा का उपयोग गूगल द्वारा क्रोमियमओएस के लिए किया गया था

यूरोपीय कोरबूट सम्मेलन
एक भौतिक बैठक यूरोपीय कोरबूट सम्मेलन है जो अक्टूबर 2017 में आयोजित की गई थी और तीन दिनों तक चली थी।

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

{{ऐंकर|लाइबर बूट}वेरिएंट
कोरबूट के अपने मूल कोड बेस से थोड़े अलग उद्देश्यों के साथ कई प्रकार हैं: लिब्रेबूट को बाइनरी ब्लॉब्स के बिना कोरबूट के वितरण के रूप में स्थापित किया गया है। लिब्रेबूट कोरबूट का सीधा फोर्क (सॉफ्टवेयर विकास) नहीं है; इसके अतिरिक्त, यह एक समानांतर प्रयास है जो अपस्ट्रीम आपूर्तिकर्ता के रूप में नवीनतम कोरबूट पर बार-बार रिबेसिंग के साथ मिलकर कार्य करता है, जब भी संभव हो तो पैच अपस्ट्रीम में विलय हो जाते हैं। इस सॉफ़्टवेयर को हटाने के अतिरिक्त, लिबरबूट भी निर्माण और स्थापना प्रक्रियाओं को स्वचालित करके कोरबूट को उपयोग में आसान बनाने का प्रयास करता है।
 * लिबरेकोर - सॉफ्टवेयर स्वतंत्रता, गैर-x86  निर्देश सेट संरचना कंप्यूटर, और फर्मवेयर डेवलपमेंट फ्रेमवर्क पर अधिक ध्यान देने वाला एक वेरिएंट हैं।
 * लिब्रेबूट - सभी बाइनरी ब्लब्स को हटाने के लिए प्राथमिक फोकस वाला एक संस्करण हैं।
 * ओस्बूट - लिब्रेबूट के समान एक संस्करण जिसने हार्डवेयर समर्थन और स्थिरता को बढ़ाने के लिए अपनी नो बूँद नीति को समाप्त कर दिया। नवंबर 2022 तक लिबरबूट के साथ विलय हो गया।

लिब्रेबूट प्रोजेक्ट ने कुछ थिंकपैड, मैकबुक और एआरएम क्रोमबुक लैपटॉप के पूरी तरह से लिबर वेरिएंट के लिए आवश्यक संशोधनों को संभव बनाया गया हैं।

यह भी देखें

 * बियोवुल्फ़ क्लस्टर
 * लिनक्स बूट
 * लोबोस
 * ओपन-सोर्स हार्डवेयर
 * रैपिड बूट

अग्रिम पठन

 * Inside the लाइनेक्स boot process, by M. Jones, IBM
 * Open बायोसes for लाइनेक्स, by Peter Seebach (archive only)
 * लाइनेक्सबायोस ready to go mainstream, by Bruce Byfield
 * First desktop motherboard supported by लाइनेक्सबायोस: GIGABYTE M57SLI-S4, by Brandon Howard
 * Video recording of Ron Minnich's लाइनेक्सबायोस talk from FOSDEM 2007
 * कोरबूट Your Service, लाइनेक्स Journal, October 2009
 * media.ccc.de - Search for "Peter Stuge"