इस दस्तावेज़ में, Android कर्नल के बारे में अक्सर पूछे जाने वाले सवालों के जवाब दिए गए हैं. इसे Generic Kernel Image (GKI) कर्नल भी कहा जाता है. अगर आपको GKI और GKI कर्नल की शब्दावली के बारे में जानकारी नहीं है, तो कर्नल की खास जानकारी देखें.
क्या स्टेबल कर्नल में, कर्नेल मॉड्यूल इंटरफ़ेस (केएमआई) के सिंबल की सूचियां बदली जा सकती हैं?
ऐसे बदलावों को फ़्रीज़ किए गए कर्नल में जोड़ा जा सकता है जिनसे मौजूदा केएमआई पर कोई असर नहीं पड़ता. इन बदलावों में, एक्सपोर्ट किए गए नए फ़ंक्शन और सिंबल की सूची की एंट्री शामिल हैं. ज़्यादा जानकारी के लिए, सिंबल की सूचियां मैनेज करना लेख पढ़ें.
क्या स्टेबल कर्नल में वेंडर मॉड्यूल के इस्तेमाल किए गए स्ट्रक्चर बदले जा सकते हैं?
केएमआई इंटरफ़ेस का हिस्सा होने वाले स्ट्रक्चर को, फ़्रीज़ किए गए केएमआई वाले कर्नलों में नहीं बदला जा सकता. केएमआई फ़्रीज़ होने से पहले, इन स्ट्रक्चर में बदलाव किया जा सकता है.
क्या बाइनरी या सोर्स कंपैटिबिलिटी को तोड़े बिना, कर्नल को बदला जा सकता है?
ऐसे बदलाव किए जा सकते हैं जिनसे केएमआई पर असर नहीं पड़ता. इसके बारे में Android के लिए खास तौर पर तैयार किए गए पैच में बताया गया है.
GKI, कर्नल कॉन्फ़िगरेशन को कैसे मैनेज करता है?
कर्नल कॉन्फ़िगरेशन के बारे में जानकारी के लिए, gki_defconfig में हुए बदलाव लेख पढ़ें.
मैं मौजूदा GKI मॉड्यूल को फिर से लिखने के लिए, अपस्ट्रीम में बग ठीक करने की प्रोसेस को कैसे मैनेज करूं?
अगर आपने Android Common Kernel (ACK) में मौजूद ड्राइवर के आधार पर वेंडर मॉड्यूल बनाया है, तो यह आपकी ज़िम्मेदारी है कि अपस्ट्रीम और ACK से गड़बड़ियों को ठीक करने वाले अपडेट, आपके मॉड्यूल तक पहुंचें. आम तौर पर, आपके लिए GKI कर्नल और GKI मॉड्यूल का इस्तेमाल बिना किसी बदलाव के करना सबसे अच्छा होता है. इससे Google, आपको ये अपडेट लगातार उपलब्ध कराता है.
क्या GKI के लिए खास टेस्ट उपलब्ध हैं?
Vendor Test Suite (VTS) के कुछ ऐसे टेस्ट हैं जिनसे यह पुष्टि की जाती है कि सर्टिफ़ाइड जीकेआई बिल्ड इंस्टॉल है. साथ ही, इनसे हर रिलीज़ के लिए जीकेआई की ज़रूरी शर्तों को लागू किया जाता है. उदाहरण के लिए, बूट हेडर v3 के लिए Android 12 VTS टेस्ट उपलब्ध हैं. साथ ही, 5.10 कर्नल वाले डिवाइस में ज़रूरी पार्टिशन मौजूद हैं या नहीं, इसकी पुष्टि करने के लिए भी Android 12 VTS टेस्ट उपलब्ध हैं.
मैं डिवाइसों के लिए प्रोजेक्ट की defconfig फ़्रैगमेंट फ़ाइल कैसे बनाऊं?
GKI के साथ काम करने वाले कई डिवाइस, वेंडर मॉड्यूल बनाने के लिए gki_defconfig
के साथ-साथ, ज़रूरी कॉन्फ़िगरेशन के विकल्पों के बारे में बताने के लिए कॉन्फ़िगरेशन फ़्रैगमेंट का इस्तेमाल करते हैं.
ACK कोडबेस के उदाहरणों में Cuttlefish और DB845c शामिल हैं.
फ़्रैगमेंट को ऑप्टिमाइज़ करने के लिए, कॉन्फ़िगरेशन विकल्पों की मैन्युअल तरीके से जांच करना ज़रूरी है. हालांकि, gki_defconfig
और gki_defconfig+device.fragment
के नतीजों की तुलना करने के लिए, कर्नल सोर्स से मिले scripts/diffconfig
का इस्तेमाल किया जा सकता है.
क्या modprobe में - और _ को एक जैसा मानने की समस्या को ठीक करने का कोई तरीका है?
modprobe मैन पेज में यह जानकारी दी गई है: "modprobe
Linux कर्नल में किसी मॉड्यूल को समझदारी से जोड़ता है या हटाता है: ध्यान दें कि आसानी के लिए, मॉड्यूल के नामों में _ और - के बीच कोई अंतर नहीं होता है (अंडरस्कोर अपने-आप बदल जाता है)." GKI टीम, अपस्ट्रीम के स्टैंडर्ड नियमों का पालन करती है. इसलिए, वेंडर टूल या मॉड्यूल के नाम रखने के नियमों में इस बात का ध्यान रखना ज़रूरी है.
मैं इंटरनल इस्तेमाल के लिए debugfs को कैसे चालू करूं?
debugfs को चालू करने के बारे में ज़्यादा जानने के लिए, इंट्रूसिव डाउनस्ट्रीम डीबग सुविधाएं देखें.
मैं किसी खास मॉड्यूल कॉन्फ़िगरेशन के साथ GKI कर्नल के बीच, मेल न खाने वाले एबीआइ की समस्या को कैसे ठीक करूं?
GKI कर्नल और मॉड्यूल कॉन्फ़िगरेशन के बीच एबीआइ का मेल न खाना, मॉड्यूल कॉन्फ़िगरेशन की एक इंप्लिसिट डिपेंडेंसी को दिखाता है. इसमें किसी मॉड्यूल को चालू करने पर, बाइनरी कॉन्फ़िगरेशन को नतीजे के तौर पर मिलने वाली कर्नल इमेज में बनाया जाता है. आगे की कार्रवाई के लिए, Android कर्नल टीम (kernel-team@android.com) से संपर्क करें. सिंबल की सूची तय हो जाने के बाद, Issue Tracker में एक बग बनाएं. इसके बाद, सिंबल की सूची में बदलाव अपलोड करें.