Android कर्नेल, अपस्ट्रीम Linux Long Term Supported (LTS) कर्नेल पर आधारित होता है. Google में, एलटीएस कर्नेल को Android के लिए खास तौर पर बनाए गए पैच के साथ मिलाकर, Android Common Kernels (ACKs) बनाए जाते हैं.
ACK, kernel/common रिपॉज़िटरी से बनाए जाते हैं. यह रिपॉज़िटरी, अपस्ट्रीम Linux कर्नल का सुपरसेट है. इसमें Android के लिए खास तौर पर बनाए गए अतिरिक्त पैच शामिल हैं.
5.10 और इससे ऊपर के ACK को *सामान्य कर्नेल इमेज (जीकेआई) कर्नेल भी कहा जाता है. जीकेआई कर्नेल, हार्डवेयर से अलग जेनेरिक कोर कर्नेल कोड और जीकेआई मॉड्यूल को हार्डवेयर के हिसाब से वेंडर मॉड्यूल से अलग करने की सुविधा देते हैं.
जीकेआई कर्नेल और वेंडर मॉड्यूल के बीच इंटरैक्शन, कर्नेल मॉड्यूल इंटरफ़ेस (केएमआई) की मदद से किया जाता है. इसमें सिंबल की ऐसी सूचियां होती हैं जिनसे वेंडर मॉड्यूल के लिए ज़रूरी फ़ंक्शन और ग्लोबल डेटा की पहचान की जाती है. पहली इमेज में, GKI कर्नल और वेंडर मॉड्यूल का आर्किटेक्चर दिखाया गया है:
पहली इमेज. GKI कर्नेल और वेंडर मॉड्यूल का आर्किटेक्चर.
कर्नेल की शब्दावली
यहां कुछ ऐसे शब्द दिए गए हैं जिनका इस्तेमाल पूरे कर्नल दस्तावेज़ में किया गया है.
कर्नेल के टाइप
- Android Common Kernel (ACK)
- यह एलटीएस कर्नल का डाउनस्ट्रीम कर्नल है. इसमें ऐसे पैच शामिल होते हैं जो Android कम्यूनिटी के लिए ज़रूरी होते हैं. इन पैच को Linux मेनलाइन या Long Term GKI कर्नल में मर्ज नहीं किया गया है.
कर्नेल के 5.10 और इसके बाद के वर्शन को सामान्य कर्नेल इमेज (जीकेआई) कर्नेल भी कहा जाता है.
- Android ओपन सोर्स प्रोजेक्ट (AOSP) कर्नल
- Android Common Kernel देखें.
Android 12 की सुविधाओं को 4.19 कर्नेल में बैकपोर्ट नहीं किया जा सकता. सुविधाओं का सेट, उस डिवाइस के जैसा होगा जिसे Android 11 पर 4.19 के साथ लॉन्च किया गया था और Android 12 पर अपग्रेड किया गया था.
- सामान्य कर्नेल इमेज (जीकेआई) कर्नेल
5.10 और इसके बाद के वर्शन वाला कोई भी ACK कर्नेल(सिर्फ़ aarch64 के लिए). GKI कर्नल के ये दो हिस्से होते हैं:
जेनरिक कर्नेल - यह जीकेआई कर्नेल का वह हिस्सा होता है जो सभी डिवाइसों में एक जैसा होता है.
जीकेआई मॉड्यूल - Google के बनाए गए कर्नेल मॉड्यूल, जिन्हें ज़रूरत के हिसाब से उन डिवाइसों पर डाइनैमिक तरीके से लोड किया जा सकता है जहां इन्हें इस्तेमाल किया जा सकता है. इन मॉड्यूल को जीकेआई कर्नेल के आर्टफ़ैक्ट के तौर पर बनाया जाता है. इन्हें जीकेआई के साथ
system_dlkm_staging_archive.tar.gz
संग्रह के तौर पर डिलीवर किया जाता है. जीकेआई मॉड्यूल पर, Google के कर्नेल बिल्ड टाइम की जोड़ी के पासकोड से हस्ताक्षर किए जाते हैं. ये मॉड्यूल, सिर्फ़ उस जीकेआई कर्नेल के साथ काम करते हैं जिसके साथ इन्हें बनाया गया है.
- कर्नेल मॉड्यूल इंटरफ़ेस (केएमआई) कर्नेल
GKI कर्नल देखें.
- लंबे समय तक सहायता देने वाला (एलटीएस) कर्नल
ऐसा Linux कर्नेल जो दो से छह साल तक काम करता है. एलटीएस कर्नल को साल में एक बार रिलीज़ किया जाता है. ये Google के हर Android Common Kernels का आधार होते हैं.
ब्रांच के टाइप
- ACK KMI कर्नेल ब्रांच
- वह ब्रांच जिसके लिए GKI कर्नल बनाए जाते हैं. शाखा के नाम, कर्नल के वर्शन के हिसाब से होते हैं. जैसे,
android15-6.6
. - Android-mainline
- Android की सुविधाओं के लिए प्राइमरी डेवलपमेंट ब्रांच. जब अपस्ट्रीम में कोई नया एलटीएस कर्नेल घोषित किया जाता है, तो उससे जुड़ा नया जीकेआई कर्नेल, android-mainline से ब्रांच किया जाता है.
Linux मेनलाइन : यह अपस्ट्रीम Linux कर्नेल के लिए मुख्य डेवलपमेंट ब्रांच है. इसमें एलटीएस कर्नेल भी शामिल हैं.
अन्य शर्तें
- सर्टिफ़ाइड बूट इमेज
- यह बाइनरी फ़ॉर्म (
boot.img
) में डिलीवर किया गया कर्नल है और इसे डिवाइस पर फ़्लैश किया गया है. इस इमेज को सर्टिफ़ाइड माना जाता है, क्योंकि इसमें एम्बेड किए गए सर्टिफ़िकेट शामिल होते हैं. इसलिए, Google यह पुष्टि कर सकता है कि डिवाइस, Google से सर्टिफ़ाइड कर्नल के साथ शिप किया गया है. - डाइनैमिक तरीके से लोड किया जा सकने वाला कर्नेल मॉड्यूल (डीएलकेएम)
- यह एक ऐसा मॉड्यूल है जिसे डिवाइस के बूट होने के दौरान, डिवाइस की ज़रूरतों के हिसाब से डाइनैमिक तरीके से लोड किया जा सकता है. GKI और वेंडर मॉड्यूल, दोनों ही डीएलकेएम के टाइप हैं. DLKM,
.ko
के तौर पर रिलीज़ किए जाते हैं. ये ड्राइवर हो सकते हैं या कर्नेल की अन्य सुविधाएं दे सकते हैं. - GKI प्रोजेक्ट
- यह Google का एक प्रोजेक्ट है. इसमें कर्नल फ़्रैगमेंटेशन की समस्या को हल करने के लिए, सामान्य कोर कर्नल फ़ंक्शन को वेंडर के हिसाब से एसओसी और बोर्ड सपोर्ट से अलग किया जाता है. इसके बाद, इन्हें लोड किए जा सकने वाले मॉड्यूल में रखा जाता है.
सामान्य कर्नेल इमेज (जीकेआई) : यह Google से सर्टिफ़ाइड की गई एक बूट इमेज होती है. इसमें जीकेआई कर्नेल होता है, जिसे ACK सोर्स ट्री से बनाया जाता है. इसे Android पर चलने वाले डिवाइस के बूट पार्टिशन में फ़्लैश किया जा सकता है.
- कर्नेल मॉड्यूल इंटरफ़ेस (केएमआई)
- यह जीकेआई कर्नेल और वेंडर मॉड्यूल के बीच एक इंटरफ़ेस है. इससे वेंडर मॉड्यूल को जीकेआई कर्नेल से अलग अपडेट किया जा सकता है. इस इंटरफ़ेस में कर्नल फ़ंक्शन और ग्लोबल डेटा शामिल होता है. इन्हें वेंडर/ओईएम डिपेंडेंसी के तौर पर पहचाना गया है. इसके लिए, हर पार्टनर के हिसाब से सिंबल की सूचियों का इस्तेमाल किया जाता है.
- वेंडर मॉड्यूल
- यह पार्टनर की ओर से बनाया गया, हार्डवेयर के हिसाब से तय किया गया मॉड्यूल होता है. इसमें SoC और डिवाइस के हिसाब से तय की गई फ़ंक्शनैलिटी शामिल होती है. वेंडर मॉड्यूल, डाइनैमिक तरीके से लोड किए जा सकने वाले कर्नेल मॉड्यूल का एक टाइप है.
अगला कदम क्या है
अगर आपको Android कर्नल डेवलपमेंट के बारे में कुछ नहीं पता, तो यहां दी गई जानकारी से शुरुआत करें:
- लंबे समय तक इस्तेमाल किए जा सकने वाले स्टेबल कर्नल - अपस्ट्रीम एलटीएस कर्नल के बारे में बैकग्राउंड जानकारी, जो ACKs में फ़ीड होती है.
- Android Common Kernels - ACK के बारे में बैकग्राउंड की जानकारी.
अगर आपको GKI कर्नल डेवलपमेंट के बारे में नहीं पता है, तो GKI डेवलपमेंट लेख पढ़ें.