Android kernel के बारे में अक्सर पूछे जाने वाले सवाल

इस दस्तावेज़ में, Android kernel के बारे में अक्सर पूछे जाने वाले सवालों के जवाब दिए गए हैं. इसे Generic Kernel Image (GKI) kernel भी कहा जाता है. अगर आपको जीकेआई और जीकेआई कर्नेल शब्दावली के बारे में पता नहीं है, तो केरल की खास जानकारी देखें.

क्या स्टेबल कर्नेल में, कर्नेल मॉड्यूल इंटरफ़ेस (KMI) सिंबल की सूचियों को बदला जा सकता है?

ऐसे बदलाव जिन्हें मौजूदा केएमआई पर लागू करने से कोई असर नहीं पड़ता है उन्हें फ़्रीज़ किए गए कर्नेल में जोड़ा जा सकता है. इन बदलावों में, एक्सपोर्ट किए गए नए फ़ंक्शन और सिंबल की सूची की एंट्री शामिल हैं. ज़्यादा जानकारी के लिए, सिंबल की सूचियां मैनेज करना लेख पढ़ें.

क्या किसी स्टेबल कर्नेल में, वेंडर मॉड्यूल के इस्तेमाल किए गए स्ट्रक्चर बदले जा सकते हैं?

KMI इंटरफ़ेस का हिस्सा होने वाले स्ट्रक्चर को, फ़्रीज़ किए गए KMI वाले कर्नेल में बदला नहीं जा सकता. केएमआई फ़्रीज़ होने से पहले, इन स्ट्रक्चर को बदला जा सकता है.

क्या बाइनरी या सोर्स के साथ काम करने की सुविधा को बंद किए बिना, कर्नेल को बदला जा सकता है?

Android के लिए बने पैच में बताए गए तरीके से, ऐसे बदलाव किए जा सकते हैं जिनसे केएमआई पर असर न पड़े.

GKI, कर्नेल कॉन्फ़िगरेशन को कैसे मैनेज करता है?

कर्नेल कॉन्फ़िगरेशन के बारे में जानने के लिए, gki_defconfig में हुए बदलाव लेख पढ़ें.

मैं मौजूदा जीकेआई मॉड्यूल में ओवरराइट होने पर, अपस्ट्रीम गड़बड़ियां कैसे ठीक करूं?

अगर आपने Android Common Kernel (ACK) में ड्राइवर के आधार पर कोई वेंडर मॉड्यूल बनाया है, तो यह पक्का करना आपका काम है कि अपस्ट्रीम और ACK से मिली गड़बड़ी ठीक करने की जानकारी आपके मॉड्यूल में भेजी जाए. आम तौर पर, GKI कर्नेल और GKI मॉड्यूल में बदलाव किए बिना ही इनका इस्तेमाल करना आपके लिए बेहतर होता है. इससे Google, इन अपडेट को लगातार उपलब्ध करा पाता है.

क्या कोई खास जीकेआई टेस्ट होता है?

वेंडर टेस्ट सूट (वीटीएस) टेस्ट की मदद से, पुष्टि की जाती है कि सर्टिफ़ाइड GKI बिल्ड इंस्टॉल किया गया है या नहीं. साथ ही, रिलीज़ से पहले GKI की ज़रूरी शर्तों को लागू करने के लिए भी ये टेस्ट किए जाते हैं. उदाहरण के लिए, बूट हेडर v3 के लिए Android 12 के VTS टेस्ट हैं. साथ ही, 5.10 कर्नेल वाले डिवाइस में ज़रूरी पार्टिशन मौजूद होने की पुष्टि करने के लिए भी VTS टेस्ट हैं.

मैं डिवाइस के बिल्ड के लिए, प्रोजेक्ट की defconfig फ़्रैगमेंट फ़ाइल कैसे बनाऊं?

GKI के मुताबिक काम करने वाले कई डिवाइस, वेंडर मॉड्यूल बनाने के लिए gki_defconfig के साथ-साथ, ज़रूरी कॉन्फ़िगरेशन विकल्पों के बारे में बताने के लिए कॉन्फ़िगरेशन फ़्रैगमेंट का इस्तेमाल करते हैं. एसीके कोडबेस के उदाहरण में कटलफ़िश और DB845c शामिल हैं. फ़्रैगमेंट को ऑप्टिमाइज़ करने के लिए, कॉन्फ़िगरेशन के विकल्पों की कुछ मैन्युअल जांच से बचने का कोई तरीका नहीं है. हालांकि, कर्नेल सोर्स से मिले scripts/diffconfig से gki_defconfig और gki_defconfig+device.fragment के नतीजों की तुलना करने में मदद मिलती है.

क्या modprobe को - और _ को एक जैसे मानने की समस्या को हल करने का कोई तरीका है?

modprobe मैन पेज में यह जानकारी दी गई है: "modprobe यह Linux kernel में मॉड्यूल को आसानी से जोड़ता है या हटाता है: ध्यान दें कि सुविधा के लिए, मॉड्यूल के नामों में _ और - के बीच कोई अंतर नहीं है (अंडरस्कोर में अपने-आप बदलाव किया जाता है)." जीकेआई टीम, स्टैंडर्ड अपस्ट्रीम कन्वेंशन का पालन करती है. इसलिए, वेंडर टूल या मॉड्यूल का नाम रखने के तरीके में इस बात का ध्यान रखना चाहिए.

मैं अंदरूनी इस्तेमाल के लिए debugfs को कैसे चालू करूं?

debugfs को चालू करने के बारे में जानने के लिए, डाउनस्ट्रीम की गड़बड़ी को ठीक करने के लिए, उपयोगकर्ता की निजता का उल्लंघन करने वाली सुविधाएं देखें.

मैं GKI कर्नेल के बीच, किसी खास मॉड्यूल कॉन्फ़िगरेशन के चालू होने पर, मेल न खाने वाले एबीआई को कैसे ठीक करूं?

GKI कर्नेल और मॉड्यूल कॉन्फ़िगरेशन के बीच एबीआई का मेल न खाने का मतलब है कि मॉड्यूल कॉन्फ़िगरेशन की डिपेंडेंसी के लिए कोई जानकारी नहीं दी गई है. ऐसे में, किसी मॉड्यूल को चालू करने पर, कर्नेल इमेज में बाइनरी कॉन्फ़िगरेशन बन जाता है. आगे की कार्रवाई तय करने के लिए, Android के कोर टीम (kernel-team@android.com) से संपर्क करें. प्रतीकों की सूची तय कर लेने के बाद, समस्या को ट्रैक करने वाले टूल में गड़बड़ी बनाएं और सिंबल की सूची में कोई बदलाव अपलोड करें.

मेरे पास Android 11 और 12 के साथ लॉन्च किए गए 5.4 कर्नेल पर चलने वाले फ़ील्ड में, GKI 1.0 के साथ काम करने वाले डिवाइस हैं. Android 12 और 13 में अपग्रेड करने के लिए, कर्नेल अपग्रेड करने के कौनसे विकल्प उपलब्ध हैं? साथ ही, इन डिवाइसों को टेस्ट करने का तरीका क्या है?

लॉन्च और अपग्रेड वर्शन के लिए, काम करने वाले कर्नेल वर्शन की सूची देखने के लिए, काम करने के साथ-साथ, एक-दूसरे के साथ काम करने की क्षमता देखें. यहां अपग्रेड के दो उदाहरण दिए गए हैं:

पहला उदाहरण: अगर किसी उपयोगकर्ता के डिवाइस में Android 11 और android11-5.4 कर्नेल (GKI 1.0) है, तो वह Android 12 पर अपग्रेड करते समय इनमें से कोई भी विकल्प चुन सकता है:

  • android12-5.10 GKI 2.0 कर्नेल पर अपग्रेड करें (इसका सुझाव ज़रूर दिया जाता है).

  • android11-5.4 कर्नेल को रखें.

  • android12-5.4 कर्नेल पर अपग्रेड करें.

उदाहरण 2: अगर किसी उपयोगकर्ता के डिवाइस में Android 12 के साथ android12-5.4 या android12-5.10 कर्नेल है, तो वह Android 13 पर अपग्रेड करते समय इनमें से कोई भी विकल्प चुन सकता है:

  • android13-5.10 या android13-5.15 GKI 2.0 कर्नेल पर अपग्रेड करें (इसका सुझाव दिया जाता है).

  • android12-5.4 GKI 1.0 कर्नेल का इस्तेमाल करें.

  • android12-5.10 GKI 2.0 कर्नेल को रखें.

खास तौर पर, Treble के साथ काम करने की जांच के लिए, हमारा सुझाव है कि आप इनमें से कोई एक तरीका अपनाएं:

  • पार्टनर के कर्नेल को, सर्टिफ़ाइड GKI 1.0 कर्नेल (android11-5.4 या android12-5.4) से बदलें.

  • आपके चुने गए वर्शन के आधार पर, डिवाइस में सर्टिफ़ाइड GKI 2.0 केर्नेल (android12-5.10, android13-5.10 या android13-5.15) के साथ शिप किया गया हो.

Generic Kernel Image (GKI) रिलीज़ के बिल्ड से GKI 2.0 के बिल्ड डाउनलोड किए जा सकते हैं.