जेनेरिक कर्नेल इमेज (जीकेआई) परियोजना

उत्पाद कर्नेल , जिसे डिवाइस कर्नेल या OEM कर्नेल के रूप में भी जाना जाता है, वह कर्नेल है जिसे आप अपने डिवाइस पर शिप करते हैं। जीकेआई से पहले, उत्पाद कर्नेल को अपस्ट्रीम कर्नेल परिवर्तनों की एक श्रृंखला से प्राप्त किया गया था। चित्र 1 दिखाता है कि कैसे कर्नेल परिवर्धन से उत्पाद कर्नेल (ओईएम/डिवाइस कर्नेल) प्राप्त होता है:

प्री-जीकेआई उत्पाद कर्नेल निर्माण

चित्र 1. प्री-जीकेआई उत्पाद कर्नेल निर्माण।

  1. कर्नेल.ओआरजी से लिनक्स लॉन्ग टर्म सपोर्टेड (एलटीएस) कर्नेल को एंड्रॉइड-विशिष्ट पैच के साथ संशोधित किया गया था जिसके परिणामस्वरूप एंड्रॉइड कॉमन कर्नेल (एसीके) प्राप्त हुआ।
  2. ACK को उन विक्रेताओं द्वारा संशोधित किया गया था जिन्होंने अपने सिस्टम-ऑन-ए-चिप (SoC) के लिए समर्थन जोड़ा था। विक्रेता प्रदर्शन या शक्ति अनुकूलन भी जोड़ सकते हैं। परिणामी कर्नेल को विक्रेता कर्नेल कहा जाता है।
  3. अंत में, विक्रेता कर्नेल को OEM द्वारा अतिरिक्त डिवाइस ड्राइवर और उनके द्वारा आवश्यक समझे गए अनुकूलन के साथ संशोधित किया गया। परिणामी कर्नेल को उत्पाद कर्नेल कहा जाता है।

इन सभी संशोधनों के परिणामस्वरूप 50% तक कर्नेल कोड आउट-ऑफ-ट्री कोड हो सकता है, न कि अपस्ट्रीम लिनक्स कर्नेल या एसीके से। GKI से पहले, लगभग हर डिवाइस में एक कस्टम कर्नेल होता था जिसके परिणामस्वरूप कर्नेल विखंडन होता था।

विखंडन की लागत

कर्नेल विखंडन का एंड्रॉइड समुदाय पर कई नकारात्मक प्रभाव पड़ता है।

सुरक्षा अद्यतन श्रम गहन हैं

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

दीर्घकालिक समर्थित अद्यतनों को मर्ज करना कठिन है

दीर्घकालिक समर्थित (एलटीएस) रिलीज़ में सुरक्षा सुधार और अन्य महत्वपूर्ण बग फिक्स शामिल हैं। एलटीएस रिलीज़ के साथ अद्यतित रहना सुरक्षा सुधार प्रदान करने का सबसे प्रभावी तरीका साबित हुआ है। पिक्सेल उपकरणों पर, यह पाया गया कि एएसबी में रिपोर्ट की गई 90% कर्नेल सुरक्षा समस्याओं को उन उपकरणों के लिए पहले ही ठीक कर दिया गया था जो अद्यतित रहते हैं।

हालाँकि, डिवाइस कर्नेल में सभी कस्टम संशोधनों के साथ, एलटीएस फिक्स को डिवाइस कर्नेल में मर्ज करना मुश्किल है।

एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ अपग्रेड को रोकता है

विखंडन नई एंड्रॉइड सुविधाओं के लिए कठिन बना देता है, जिसके लिए क्षेत्र में उपकरणों में कर्नेल परिवर्तन जोड़ने की आवश्यकता होती है। एंड्रॉइड फ्रेमवर्क कोड को यह मान लेना चाहिए कि कम से कम पांच कर्नेल संस्करण समर्थित हैं और नए प्लेटफ़ॉर्म रिलीज़ के लिए कोई कर्नेल परिवर्तन नहीं किए गए हैं (एंड्रॉइड 10 3.18, 4.4, 4.9, 4.14 और 4.19 कर्नेल का समर्थन करता है, जो कुछ मामलों में नहीं किया गया है) 2017 में एंड्रॉइड 8 के बाद से नई सुविधाओं के साथ बढ़ाया गया)।

अपस्ट्रीम लिनक्स में कर्नेल परिवर्तनों को वापस योगदान देना कठिन है

कर्नेल में किए जा रहे सभी परिवर्तनों के साथ, अधिकांश फ्लैगशिप डिवाइस कर्नेल संस्करण के साथ आते हैं जो पहले से ही कम से कम 18 महीने पुराना है। उदाहरण के लिए, 4.14 कर्नेल को kernel.org द्वारा 2017 के नवंबर में जारी किया गया था और 4.14 कर्नेल का उपयोग करने वाले पहले एंड्रॉइड फोन 2019 के वसंत में भेजे गए थे।

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

विखंडन को ठीक करना: जेनेरिक कर्नेल छवि

जेनेरिक कर्नेल इमेज (जीकेआई) प्रोजेक्ट कोर कर्नेल को एकीकृत करके और एसओसी और बोर्ड समर्थन को कोर कर्नेल से लोड करने योग्य विक्रेता मॉड्यूल में ले जाकर कर्नेल विखंडन को संबोधित करता है। GKI विक्रेता मॉड्यूल के लिए एक स्थिर कर्नेल मॉड्यूल इंटरफ़ेस (KMI) भी प्रस्तुत करता है, इसलिए मॉड्यूल और कर्नेल को स्वतंत्र रूप से अपडेट किया जा सकता है। GKI कर्नेल की कुछ विशेषताएं हैं:

  • GKI कर्नेल ACK स्रोतों से बनाया गया है।
  • जीकेआई कर्नेल एक एकल-कर्नेल बाइनरी प्लस संबंधित लोड करने योग्य मॉड्यूल प्रति आर्किटेक्चर, प्रति एलटीएस रिलीज है (वर्तमान में केवल android11-5.4 और android12-5.4 के लिए आर्म 64)।
  • GKI कर्नेल का परीक्षण सभी Android प्लेटफ़ॉर्म रिलीज़ के साथ किया जाता है जो संबंधित ACK के लिए समर्थित हैं। GKI कर्नेल संस्करण के जीवनकाल के लिए कोई सुविधा बहिष्करण नहीं है।
  • GKI कर्नेल किसी दिए गए LTS के भीतर ड्राइवरों को एक स्थिर KMI प्रदर्शित करता है।
  • GKI कर्नेल में SoC-विशिष्ट या बोर्ड-विशिष्ट कोड नहीं है।

GKI आर्किटेक्चर की छवि के लिए, कर्नेल अवलोकन देखें।

GKI एक जटिल परिवर्तन है जो एंड्रॉइड 11 प्लेटफ़ॉर्म रिलीज़ में v5.4 कर्नेल से शुरू होकर कई चरणों में शुरू हुआ है।

वर्तमान में दो GKI चरण हैं:

  • GKI 1.0 को एंड्रॉइड 11 में 5.4 कर्नेल वाले उपकरणों के लिए पेश किया गया था। GKI 1.0 5.4 कर्नेल के साथ आने वाले सभी डिवाइसों पर लागू होता है, यहां तक ​​कि एंड्रॉइड 12 या एंड्रॉइड 13 के साथ लॉन्च किए गए डिवाइसों पर भी।
  • GKI 2.0 को एंड्रॉइड 12 में 5.10 कर्नेल वाले उपकरणों के लिए पेश किया गया था और यह 5.10 या बाद के कर्नेल वाले सभी उपकरणों के लिए नया मानक है।

जीकेआई 1.0

GKI 1.0 में, कर्नेल संस्करण 5.4 के साथ लॉन्च होने वाले उपकरणों को GKI परीक्षण (एंड्रॉइड 11 और बाद के प्लेटफ़ॉर्म रिलीज़) पास करना होगा। GKI 1.0 लक्ष्यों में निम्नलिखित शामिल हैं:

  • उत्पाद कर्नेल को GKI कर्नेल से प्रतिस्थापित करते समय विक्रेता परीक्षण सूट (VTS) या संगतता परीक्षण सूट (CTS) में प्रतिगमन से बचें।
  • AOSP सामान्य कर्नेल के साथ अपने कर्नेल को अद्यतन रखने का भागीदार बोझ कम करें।
  • नए एंड्रॉइड रिलीज़ के साथ अपग्रेड और लॉन्च करने वाले उपकरणों के लिए कर्नेल में मुख्य एंड्रॉइड परिवर्तन शामिल करें।
  • एंड्रॉइड यूजरस्पेस को मत तोड़ो।
  • हार्डवेयर-विशिष्ट घटकों को लोड करने योग्य मॉड्यूल के रूप में कोर कर्नेल से अलग करें।

GKI 1.0 दस्तावेज़ के लिए, GKI 1.0 अनुभाग देखें।

जीकेआई 2.0

जीकेआई 2.0 में, कर्नेल संस्करण 5.10 या उच्चतर के साथ लॉन्च होने वाले उपकरणों को जीकेआई कर्नेल (एंड्रॉइड 12 से शुरू) के साथ शिप करना होगा। हस्ताक्षरित बूट छवियां उपलब्ध हैं और एलटीएस और महत्वपूर्ण बग फिक्स के साथ नियमित रूप से अपडेट की जाती हैं। क्योंकि KMI के लिए बाइनरी स्थिरता बनाए रखी जाती है, आप विक्रेता छवियों में परिवर्तन किए बिना इन बूट छवियों को स्थापित कर सकते हैं। GKI 2.0 लक्ष्यों में निम्नलिखित शामिल हैं:

  • उत्पाद कर्नेल को GKI कर्नेल से प्रतिस्थापित करते समय महत्वपूर्ण प्रदर्शन या पावर रिग्रेशन प्रस्तुत न करें।
  • विक्रेता की भागीदारी के बिना कर्नेल सुरक्षा सुधार और बग समाधान देने के लिए भागीदारों को सक्षम करें।
  • उपकरणों के लिए प्रमुख कर्नेल संस्करण को अपडेट करने की लागत कम करें (उदाहरण के लिए, v5.10 से 2021 LTS कर्नेल तक)।
  • उन्नयन के लिए एक स्पष्ट प्रक्रिया के साथ कर्नेल संस्करणों को अद्यतन करके प्रति आर्किटेक्चर एक एकल GKI कर्नेल बाइनरी बनाए रखें।

GKI 2.0 Android कर्नेल की नवीनतम स्थिति का प्रतिनिधित्व करता है। GKI 1.0 और पिछले कर्नेल (<=4.19) उपखंडों के बाहर कर्नेल दस्तावेज़ GKI 2.0 आर्किटेक्चर को दर्शाते हैं।