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

प्रॉडक्ट कर्नेल, जिसे डिवाइस कर्नेल या OEM कर्नेल भी कहा जाता है कर्नेल को चुनें, जिसे आप अपने डिवाइस पर शिप करते हैं. GKI से पहले, प्रॉडक्ट कर्नेल अपस्ट्रीम कर्नेल बदलाव की सीरीज़ से लिया गया है. पहली इमेज में दिखाया गया है कि कर्नेल जोड़ने से प्रॉडक्ट कर्नेल (OEM/डिवाइस कर्नेल) मिलता है:

प्री-जीकेआई प्रॉडक्ट कर्नेल बनाना

पहला डायग्राम. Pre-GKI प्रॉडक्ट कर्नेल बनाना.

  1. kernel.org से Linux लंबे समय तक काम करने वाले (LTS) कर्नेल में बदलाव किया गया जिनमें Android Common कर्नेल (ACK) के अलग-अलग पैच अपडेट होते हैं.
  2. ACK में उन वेंडर ने बदलाव किया था जिन्होंने अपने सिस्टम-ऑन-अ-चिप के लिए सहायता जोड़ी थी (SoC). वेंडर, परफ़ॉर्मेंस या पावर ऑप्टिमाइज़ेशन भी जोड़ सकते हैं. कॉन्टेंट बनाने नतीजे के तौर पर मिलने वाले कर्नेल को वेंडर कर्नेल कहा जाता है.
  3. आखिर में, वेंडर कर्नेल में OEM ने एक अतिरिक्त बदलाव के साथ डिवाइस ड्राइवर और कस्टमाइज़ेशन को उनकी ज़रूरत के मुताबिक बनाना होगा. मिलने वाला कर्नेल को प्रॉडक्ट कर्नेल कहा जाता है.

इन सभी बदलावों का इस्तेमाल करने पर, कर्नेल कोड, ट्री-ऑफ़-ट्री कोड है, न कि अपस्ट्रीम Linux कर्नेल या ACKs. GKI से पहले, करीब-करीब हर डिवाइस में एक कस्टम कर्नेल होता था, जो कर्नेल में बनता था फ़्रैगमेंटेशन.

फ़्रैगमेंटेशन का खर्च

कर्नेल फ़्रैगमेंटेशन से Android समुदाय पर कई नकारात्मक असर होते हैं.

सुरक्षा से जुड़े अपडेट में बहुत मेहनत लगती है

सुरक्षा पैच का उल्लेख Android सिक्योरिटी बुलेटिन (एएसबी) हर डिवाइस कर्नेल में बैकपोर्ट किया जाना चाहिए. हालांकि, कर्नेल के कारण फ़्रैगमेंटेशन होता है, इसलिए सुरक्षा से जुड़े सुधारों को लागू करना बेहद महंगा पड़ता है फ़ील्ड में मौजूद Android डिवाइस.

लंबे समय तक इस्तेमाल किए जा सकने वाले अपडेट मर्ज करना मुश्किल है

लंबे समय तक काम करने वाली (एलटीएस) रिलीज़ में, सुरक्षा से जुड़े समाधान और अन्य अपडेट शामिल हैं बड़ी गड़बड़ियां ठीक की गईं. एलटीएस रिलीज़ के साथ अप-टू-डेट रहने से यह साबित हुआ है कि देने का सबसे असरदार तरीका है. Pixel डिवाइसों पर यह को पता चला कि ASB में रिपोर्ट की गई 90% कर्नेल सुरक्षा समस्याओं में की गड़बड़ियों को उन डिवाइसों के लिए ठीक कर दिया गया है जो अप-टू-डेट रहते हैं.

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

Android प्लैटफ़ॉर्म के रिलीज़ अपग्रेड रोकें

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

कर्नेल में बदलाव करने का उसे अपस्ट्रीम Linux में बदलना मुश्किल है

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

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

फ़्रैगमेंटेशन को ठीक करें: जेनरिक कर्नेल इमेज

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

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

जीकेआई आर्किटेक्चर की इमेज देखने के लिए, यहां देखें: कर्नेल के बारे में खास जानकारी.

जीकेआई एक जटिल बदलाव है. इसे कई चरणों में रोल आउट किया गया है Android 11 प्लैटफ़ॉर्म रिलीज़ में v5.4 कर्नेल दिए गए हैं.

जीकेआई के दो स्टेज होते हैं:

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

जीकेआई 1.0

GKE (जीकेआई) 1.0 में, कर्नेल वर्शन 5.4 के साथ लॉन्च होने वाले डिवाइसों को जीकेआई टेस्टिंग पास करना ज़रूरी है (Android 11 और इसके बाद के वर्शन वाले प्लैटफ़ॉर्म की रिलीज़). GKI 1.0 के लक्ष्यों में ये चीज़ें शामिल हैं:

  • विक्रेता टेस्ट सुइट (वीटीएस) में रिग्रेशन से बचें या कंपैटबिलिटी टेस्ट सुइट (सीटीएस) जब प्रॉडक्ट कर्नेल को GKI कर्नेल से बदला जाता है.
  • एओएसपी की मदद से, अपने कर्नेल को अप-टू-डेट रखने से पार्टनर का बोझ कम होता है सामान्य कर्नेल.
  • डिवाइसों को अपग्रेड करने और लॉन्च करने के लिए, कर्नेल में Android के मुख्य बदलावों को शामिल करें रिलीज़ करने के लिए तैयार हो जाएं.
  • Android यूज़रस्पेस का इस्तेमाल न करें.
  • हार्डवेयर के हिसाब से बने कॉम्पोनेंट को, कोर कर्नेल से अलग मॉड्यूल के तौर पर अलग किया जा सकता है.

GKI 1.0 दस्तावेज़ के लिए, देखें GKI 1.0 सेक्शन.

जीकेआई 2.0

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

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

GKI 2.0, Android कर्नेल की सबसे मौजूदा स्थिति को दिखाता है. Kernel GKI के बाहर का दस्तावेज़ 1.0 और पिछले कर्नेल (<=4.19) सब-सेक्शन, GKI 2.0 आर्किटेक्चर को दिखाते हैं.