इस दस्तावेज़ में, Android कर्नल के बारे में अक्सर पूछे जाने वाले सवालों के जवाब दिए गए हैं. इसे जेनेरिक कर्नल इमेज (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 शामिल हैं.
फ़्रैगमेंट को ऑप्टिमाइज़ करने के लिए, कॉन्फ़िगरेशन के कुछ विकल्पों की मैन्युअल तरीके से जांच करना ज़रूरी है. हालांकि, scripts/diffconfig से मिले कर्नल सोर्स, gki_defconfig और gki_defconfig+device.fragment के नतीजों की तुलना करने के लिए काम आते हैं.
क्या modprobe में - और _ को एक जैसा मानने की समस्या को ठीक करने का कोई तरीका है?
modprobe मैन पेज में यह जानकारी दी गई है: "modprobe Linux कर्नल में किसी मॉड्यूल को समझदारी से जोड़ता या हटाता है: ध्यान दें कि आसानी के लिए, मॉड्यूल के नामों में _ और - के बीच कोई अंतर नहीं होता है (अंडरस्कोर अपने-आप बदल जाता है)." GKI टीम, अपस्ट्रीम के स्टैंडर्ड तरीके का पालन करती है. इसलिए, वेंडर टूल या मॉड्यूल के नाम रखने के तरीकों में, इस बात का ध्यान रखना ज़रूरी है.
मैं इंटरनल इस्तेमाल के लिए debugfs को कैसे चालू करूं?
debugfs को चालू करने के बारे में ज़्यादा जानने के लिए, इंट्रूसिव डाउनस्ट्रीम डीबग सुविधाएं देखें.
मैं किसी खास मॉड्यूल कॉन्फ़िगरेशन के साथ GKI कर्नल के बीच, एबीआई के मेल न खाने की समस्या को कैसे ठीक करूं?
GKI कर्नल और मॉड्यूल कॉन्फ़िगरेशन के बीच एबीआइ का मेल न खाना, मॉड्यूल कॉन्फ़िगरेशन की एक इंप्लिसिट डिपेंडेंसी को दिखाता है. इसमें किसी मॉड्यूल को चालू करने पर, बाइनरी कॉन्फ़िगरेशन को नतीजे के तौर पर मिलने वाली कर्नल इमेज में बनाया जाता है. आगे की कार्रवाई के लिए, Android कर्नल टीम (kernel-team@android.com) से संपर्क करें. सिंबल की सूची तय हो जाने के बाद, Issue Tracker में एक बग बनाएं. इसके बाद, सिंबल की सूची में बदलाव अपलोड करें.