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

इस पेज पर, जेनेरिक कर्नल इमेज (GKI) प्रोजेक्ट के बारे में बताया गया है. साथ ही, यह भी बताया गया है कि यह Android की स्थिरता को कैसे बढ़ाता है और सुरक्षा को कैसे बेहतर बनाता है.

इतिहास

Android पर काम करने वाले हर डिवाइस के लिए, प्रोडक्शन कर्नल की ज़रूरत होती है. जीकेआई से पहले, कर्नेल कस्टम होते थे और Android Common Kernel (ACK) पर आधारित होते थे. इनमें डिवाइस के हिसाब से बदलाव किए जाते थे. ये बदलाव, सिस्टम ऑन चिप (SoC) वेंडर और ओईएम करते थे.

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

फ़्रैगमेंटेशन की लागत

कर्नल फ़्रैगमेंटेशन की वजह से, Android कम्यूनिटी पर कई तरह के बुरे असर पड़ते हैं.

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

Android Security Bulletin (ASB) में बताए गए सुरक्षा पैच को, डिवाइस के हर कर्नल में बैकपोर्ट किया जाना चाहिए. हालांकि, कर्नल फ़्रैगमेंटेशन की वजह से, Android डिवाइसों में सुरक्षा से जुड़ी समस्याओं को ठीक करने वाले अपडेट को लागू करना बहुत महंगा होता है.

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

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

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

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

फ़्रैगमेंटेशन की वजह से, Android की नई सुविधाओं को डिवाइसों में जोड़ना मुश्किल हो जाता है. इन सुविधाओं के लिए, कर्नल में बदलाव करना ज़रूरी होता है. Android फ़्रेमवर्क के कोड को कर्नल के अलग-अलग वर्शन के हिसाब से तैयार करना पड़ता था. साथ ही, यह कर्नल में लागू की गई Android की नई सुविधाओं पर भरोसा नहीं कर सकता था. इससे इनोवेशन की रफ़्तार धीमी हो गई. साथ ही, कोड का साइज़ और जटिलता बढ़ गई.

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

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

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

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

  • GKI कर्नल को ACK सोर्स से बनाया जाता है.
  • जीकेआई कर्नेल, एक सिंगल-कर्नेल बाइनरी है. साथ ही, इसमें हर आर्किटेक्चर और हर एलटीएस रिलीज़ के लिए, लोड किए जा सकने वाले मॉड्यूल शामिल होते हैं.
  • जीकेआई कर्नेल की जांच, Android प्लैटफ़ॉर्म की उन सभी रिलीज़ के साथ की जाती है जो इससे जुड़े ACK के साथ काम करती हैं. GKI कर्नेल वर्शन के लाइफ़टाइम के दौरान, किसी सुविधा को बंद नहीं किया जाता.
  • जीकेआई कर्नेल, किसी एलटीएस में ड्राइवर के लिए स्टेबल केएमआई उपलब्ध कराता है.
  • GKI कर्नल में, एसओसी या बोर्ड के हिसाब से कोड नहीं होता.

GKI आर्किटेक्चर की इमेज के लिए, कर्नेल की खास जानकारी देखें.

कॉमन इमेज

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

  • प्रॉडक्ट कर्नल को GKI कर्नल से बदलते समय, परफ़ॉर्मेंस या पावर में कोई बड़ा बदलाव न करें.
  • इससे पार्टनर, वेंडर की मदद के बिना कर्नल की सुरक्षा से जुड़ी समस्याओं और गड़बड़ियों को ठीक कर पाएंगे.
  • डिवाइसों के लिए, कर्नल के मेजर वर्शन को अपग्रेड करने की लागत कम करना.
  • हर आर्किटेक्चर के लिए एक GKI कर्नल बाइनरी बनाए रखें. इसके लिए, कर्नल के वर्शन अपडेट करें. साथ ही, अपग्रेड करने की प्रोसेस को आसान बनाएं.