इस दस्तावेज़ में, Android kernel के बारे में अक्सर पूछे जाने वाले सवालों के जवाब दिए गए हैं. इसे Generic Kernel Image (GKI) kernel भी कहा जाता है. अगर आपको GKI और GKI केर्नेल की शब्दावली के बारे में जानकारी नहीं है, तो केर्नेल की खास जानकारी देखें.
क्या स्टैबल कर्नेल में, कर्नेल मॉड्यूल इंटरफ़ेस (केएमआई) की सिंबल सूचियों को बदला जा सकता है?
ऐसे बदलाव जिन्हें मौजूदा केएमआई पर कोई असर नहीं पड़ता है उन्हें फ़्रीज़ किए गए कर्नेल में जोड़ा जा सकता है. इन बदलावों में, एक्सपोर्ट किए गए नए फ़ंक्शन और सिंबल की सूची की एंट्री शामिल हैं. ज़्यादा जानकारी के लिए, सिंबल की सूचियां मैनेज करना लेख पढ़ें.
क्या किसी स्टेबल कर्नेल में, वेंडर मॉड्यूल के इस्तेमाल किए गए स्ट्रक्चर बदले जा सकते हैं?
केएमआई इंटरफ़ेस का हिस्सा होने वाले स्ट्रक्चर को, फ़्रीज़ किए गए केएमआई वाले कर्नेल में बदला नहीं जा सकता. केएमआई फ़्रीज़ होने से पहले, इन स्ट्रक्चर में बदलाव किया जा सकता है.
क्या बाइनरी या सोर्स के साथ काम करने की सुविधा को बंद किए बिना, कर्नेल को बदला जा सकता है?
Android के लिए बने पैच में बताए गए तरीके से, ऐसे बदलाव किए जा सकते हैं जिनसे केएमआई पर असर न पड़े.
GKI, कर्नेल कॉन्फ़िगरेशन को कैसे मैनेज करता है?
कर्नेल कॉन्फ़िगरेशन के बारे में जानने के लिए, gki_defconfig में हुए बदलाव लेख पढ़ें.
मैं मौजूदा GKI मॉड्यूल को ओवरराइट करने के लिए, अपस्ट्रीम बग ठीक करने की सुविधा को कैसे मैनेज करूं?
अगर आपने Android Common Kernel (ACK) में ड्राइवर के आधार पर कोई वेंडर मॉड्यूल बनाया है, तो यह पक्का करना आपका काम है कि अपस्ट्रीम और ACK से मिली गड़बड़ी ठीक करने की जानकारी आपके मॉड्यूल में भेजी गई हो. आम तौर पर, GKI कर्नेल और GKI मॉड्यूल का इस्तेमाल बिना बदलाव के करना आपके लिए सबसे बेहतर होता है. इससे Google, ये अपडेट लगातार उपलब्ध कराता रहता है.
क्या GKI के लिए खास टेस्ट हैं?
Vendor Test Suite (VTS) टेस्ट की मदद से, यह पुष्टि की जाती है कि सर्टिफ़ाइड 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) से संपर्क करें. सिंबल की सूची तय करने के बाद, समस्या ट्रैकर में गड़बड़ी बनाएं और सिंबल की सूची में बदलाव अपलोड करें.