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

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

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

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

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

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

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

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

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

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

मौजूदा GKI मॉड्यूल को ओवरराइट करने के लिए, अपस्ट्रीम बग ठीक करने की सुविधा को कैसे मैनेज किया जा सकता है?

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

क्या GKI के लिए खास टेस्ट हैं?

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

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

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

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

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

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

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

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

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

मेरे पास GKI 1.0 के मुताबिक काम करने वाले ऐसे डिवाइस हैं जिनमें 5.4 कर्नेल है. यह कर्नेल, Android 11 और 12 के साथ लॉन्च हुआ था. 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) होना चाहिए.

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

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