कर्नेल के बारे में खास जानकारी

Android के कर्नेल को, अपस्ट्रीम Linux के लंबे समय तक सहायता वाले (एलटीएस) कर्नेल के आधार पर बनाया गया है. Google में, LTS कोर को Android के लिए खास तौर पर बनाए गए पैच के साथ जोड़कर, Android के लिए सामान्य कोर (ACKs) बनाए जाते हैं.

नए ACK (5.4 और उसके बाद के वर्शन) को GKI केर्नेल भी कहा जाता है. GKI केर्नेल, हार्डवेयर के हिसाब से काम करने वाले सामान्य कोर केर्नेल कोड और GKI मॉड्यूल को, हार्डवेयर के हिसाब से काम करने वाले वेंडर मॉड्यूल से अलग करने की सुविधा देते हैं.

GKI कर्नेल, हार्डवेयर के हिसाब से वेंडर मॉड्यूल के साथ इंटरैक्ट करता है. इन मॉड्यूल में चिप पर सिस्टम (SoC) और बोर्ड के हिसाब से कोड होता है. GKI के kernel और वेंडर मॉड्यूल के बीच इंटरैक्शन, Kernel Module Interface (KMI) की मदद से होता है. इसमें वेंडर मॉड्यूल के लिए ज़रूरी फ़ंक्शन और ग्लोबल डेटा की पहचान करने वाली सिंबल सूचियां होती हैं. पहली इमेज में, GKI के kernel और वेंडर के मॉड्यूल के आर्किटेक्चर को दिखाया गया है:

GKI आर्किटेक्चर
पहली इमेज. GKI आर्किटेक्चर

कर्नेल की ग्लॉसरी

इस सेक्शन में, कर्नेल के दस्तावेज़ में इस्तेमाल किए गए शब्दों के बारे में बताया गया है.

Kernel टाइप

Android Common Kernel (ACK)
ऐसा कर्नेल जो एलटीएस कर्नेल के बाद आता है और जिसमें Android कम्यूनिटी के लिए दिलचस्पी के पैच शामिल होते हैं. ये पैच, Linux के मुख्य या लंबे समय तक सहायता (एलटीएस) वाले कर्नेल में मर्ज नहीं किए गए हैं. नए ACK (5.4 और उसके बाद के वर्शन) को GKI कर्नेल भी कहा जाता है, क्योंकि ये हार्डवेयर के हिसाब से काम न करने वाले सामान्य कर्नेल कोड और हार्डवेयर के हिसाब से काम न करने वाले GKI मॉड्यूल को अलग करने की सुविधा देते हैं.
Android Open Source Project (AOSP) के लिए बनाया गया कर्नेल
Android Common Kernel देखें.
Feature Kernel
ऐसा कर्नेल जिसके लिए प्लैटफ़ॉर्म रिलीज़ की सुविधाओं के लागू होने की गारंटी है. उदाहरण के लिए, Android 12 में, दो फ़ीचर कर्नेल android12-5.4 और android12-5.10 थे. Android 12 की सुविधाओं को 4.19 कर्नेल पर बैकपोर्ट नहीं किया जा सकता. सुविधाओं का सेट, उस डिवाइस के जैसा होगा जो Android 11 पर 4.19 के साथ लॉन्च हुआ था और Android 12 पर अपग्रेड किया गया था.
सामान्य कोर कर्नेल
GKI kernel का वह हिस्सा जो सभी डिवाइसों में एक जैसा होता है.
Generic Kernel Image (GKI) कर्नेल
5.4 और इसके बाद का कोई भी नया ACK kernel (फ़िलहाल सिर्फ़ aarch64). इस कर्नल के दो हिस्से होते हैं: सभी डिवाइसों पर एक जैसा कोड वाला कोर GKI कर्नेल और Google के बनाए गए GKI मॉड्यूल, जिन्हें लागू होने पर डिवाइसों पर डाइनैमिक तौर पर लोड किया जा सकता है.
Kernel Module Interface (KMI) कर्नेल
GKI kernel देखें.
Launch Kernel
कोई ऐसा कर्नेल जो किसी Android प्लैटफ़ॉर्म रिलीज़ के लिए, डिवाइस लॉन्च करने के लिए मान्य हो. उदाहरण के लिए, Android 12 में, लॉन्च के लिए मान्य कर्नेल 4.19, 5.4, और 5.10 थे.
लंबे समय तक सहायता (एलटीएस) वाला कर्नेल
Linux का ऐसा कर्नेल जिसे दो से छह साल तक इस्तेमाल किया जा सकता है. एलटीएस कर्नेल हर साल एक बार रिलीज़ किए जाते हैं. ये Google के हर ACK के आधार होते हैं.

शाखा के टाइप

ACK KMI कर्नेल शाखा
वह शाखा जिसके लिए GKI केर्नेल बनाए गए हैं. उदाहरण के लिए, android12-5.10 और android13-5.15.
Android-mainline
Android की सुविधाओं के लिए मुख्य डेवलपमेंट ब्रैंच. जब किसी नए LTS kernel को अपस्ट्रीम के तौर पर एलान किया जाता है, तो उससे जुड़े नए GKI kernel को android-mainline से ब्रैंच किया जाता है.
Linux मुख्य फ़ाइल
यह अपस्ट्रीम Linux कर्नेल के लिए मुख्य डेवलपमेंट ब्रैंच है. इसमें एलटीएस कर्नेल भी शामिल हैं.

अन्य शर्तें

सर्टिफ़ाइड बूट इमेज
कर्नल को बाइनरी फ़ॉर्म (boot.img) में डिलीवर किया जाता है और डिवाइस पर फ़्लैश किया जाता है. इस इमेज को इस मायने में सर्टिफ़ाइड किया गया है कि इसमें एम्बेड किए गए सर्टिफ़िकेट शामिल हैं. इससे Google यह पुष्टि कर सकता है कि डिवाइस, Google से सर्टिफ़ाइड किए गए कर्नेल के साथ शिप किया गया है.
डाइनैमिक तरीके से लोड किया जा सकने वाला कर्नेल मॉड्यूल (डीएलकेएम)
ऐसा मॉड्यूल जिसे डिवाइस के चालू होने के दौरान, डिवाइस की ज़रूरतों के हिसाब से डाइनैमिक तौर पर लोड किया जा सकता है. GKI और वेंडर मॉड्यूल, दोनों तरह के DLKM हैं. डीएलकेएम को .ko फ़ॉर्मैट में रिलीज़ किया जाता है. ये ड्राइवर हो सकते हैं या ये कर्नेल की अन्य सुविधाएं दे सकते हैं.
GKI प्रोजेक्ट
Google का एक प्रोजेक्ट, जो वेंडर के हिसाब से SoC और बोर्ड के सपोर्ट से, सामान्य कोर कर्नेल के फ़ंक्शन को अलग करके, लोड किए जा सकने वाले मॉड्यूल में बांटता है. इससे, कर्नेल के अलग-अलग वर्शन होने की समस्या हल होती है.
सामान्य कर्नेल इमेज (जीकेआई)
Google से सर्टिफ़ाइड बूट इमेज, जिसमें ACK सोर्स ट्री से बनाया गया GKI कर्नेल शामिल होता है. साथ ही, यह Android डिवाइस के बूट पार्टीशन में फ़्लैश करने के लिए सही होती है.
केएमआई
GKI कर्नेल और वेंडर मॉड्यूल के बीच एक इंटरफ़ेस, जिसकी मदद से वेंडर मॉड्यूल को GKI कर्नेल से अलग से अपडेट किया जा सकता है. इस इंटरफ़ेस में, हर पार्टनर के सिंबल की सूचियों का इस्तेमाल करके, वेंडर/OEM डिपेंडेंसी के तौर पर पहचाने गए, kernel के फ़ंक्शन और ग्लोबल डेटा शामिल होते हैं.
GKI मॉड्यूल
Google के बनाए गए कर्नेल मॉड्यूल, जिन्हें ज़रूरत पड़ने पर डिवाइसों पर डाइनैमिक तौर पर लोड किया जा सकता है. ये मॉड्यूल, GKI कर्नेल के आर्टफ़ैक्ट के तौर पर बनाए जाते हैं. साथ ही, इन्हें GKI के साथ system_dlkm_staging_archive.tar.gz संग्रह के तौर पर डिलीवर किया जाता है. GKI मॉड्यूल पर, Google ने उस पासकोड जोड़े का इस्तेमाल करके हस्ताक्षर किया है जो कर्नेल को बिल्ड करते समय इस्तेमाल किया गया था. ये मॉड्यूल, सिर्फ़ उस GKI कर्नेल के साथ काम करते हैं जिसके साथ इन्हें बनाया गया है.
वेंडर मॉड्यूल
किसी पार्टनर ने हार्डवेयर के हिसाब से बनाया गया मॉड्यूल. इसमें SoC और डिवाइस के हिसाब से काम करने वाली सुविधाएं शामिल होती हैं. वेंडर मॉड्यूल, डाइनैमिक तौर पर लोड होने वाला एक तरह का कर्नेल मॉड्यूल होता है.

आगे क्या करना है?