एक स्थिर कर्नेल मॉड्यूल इंटरफ़ेस बनाए रखें

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

आम तौर पर, Linux समुदाय में इन-कर्नल एबीआई की धारणा को लेकर भौंचक्का स्थिरता मेनलाइन कर्नेल के लिए. अलग-अलग टूलचेन, कॉन्फ़िगरेशन की वजह से, और लगातार बदलते हुए Linux मेनलाइन कर्नल के साथ काम करते हैं, तो हमारा सिस्टम आपके मौजूदा मेनलाइन में स्थिर KMI. हालांकि, लंबे समय तक केएमआई को इन पाबंदियों के साथ काफ़ी सीमित जीकेआई एनवायरमेंट का इस्तेमाल करता है:

  • को बनाने के लिए केवल एक कॉन्फ़िगरेशन, gki_defconfig का उपयोग किया जा सकता है कर्नेल.

  • KMI, किसी कर्नेल के एलटीएस और Android वर्शन वाले डिवाइस में ही स्थिर होता है, जैसे कि android13-5.10, android12-5.10 या android13-5.15.

    • android-mainline के लिए केएमआई की स्थिरता का ध्यान नहीं रखा गया है.
  • एओएसपी में सप्लाई की जाने वाली सिर्फ़ खास Clang टूलचेन और जिसे संबंधित ब्रांच का इस्तेमाल कर्नेल और मॉड्यूल बनाने में किया जाता है.

  • जैसा कि किसी प्रतीक सूची में बताया गया है, सिर्फ़ मॉड्यूल में इस्तेमाल किए जाने वाले प्रतीकों के बारे में बताया गया है की स्थिरता के लिए निगरानी की जाती है और माना जाता है कि केएमआई प्रतीक माना जाता है.

    • खास बात यह है कि वेंडर मॉड्यूल में सिर्फ़ केएमआई सिंबल का इस्तेमाल किया जाना चाहिए. यह अगर नॉन-KMI-सिम्बॉल हों, तो कंस्ट्रेंट को, मॉड्यूल लोड न होने पर लागू किया जाता है आवश्यक.
  • केएमआई ब्रांच को फ़्रीज़ करने के बाद, बदलाव किए जा सकते हैं, लेकिन वे केएमआई को तोड़ नहीं सकते. इन बदलावों में ये शामिल हैं:

    • कॉन्फ़िगरेशन में बदलाव
    • कर्नेल कोड में बदलाव
    • टूलचेन में बदलाव (इसमें अपडेट शामिल हैं)

हर्मेटिक बिल्ड प्रोसेस और एलएलवीएम टूलचेन का इस्तेमाल करें

हर्मेटिक बिल्ड प्रोसेसrepo kernel/manifest, बिल्ड एनवायरमेंट के बारे में पूरी जानकारी देता है. उदाहरण के लिए, android13-5.15 के लिए मेनिफ़ेस्ट इसमें टूलचेन, बिल्ड स्क्रिप्ट, और जेनेरिक कर्नेल इमेज (जीकेआई) कर्नेल. इससे जुड़ा build.config कॉन्फ़िगरेशन फ़ाइलें जैसे कि GKI बिल्ड कॉन्फ़िगरेशन build.config.gki.aarch64, पक्का करें कि शामिल किए गए टूल का इस्तेमाल, एक जैसा बिल्ड जनरेट करने के लिए सही तरीके से किया गया हो नतीजे.

हर्मेटिक बिल्ड प्रोसेस का इस्तेमाल करने से यह भी पक्का होता है कि चाहे Google ने जनरेट किया हो या नहीं, ट्री एक जैसा होता है. उदाहरण के लिए, abi_gki_aarch64.xml android13-5.15 के लिए) या ऐसे लोकल ट्री में जनरेट किया गया जिसमें वेंडर शामिल है मॉड्यूल देखें. कॉन्टेंट बनाने एबीआई की जानकारी बनाने और उसकी तुलना करने के लिए इस्तेमाल किए जाने वाले टूल रेपो के हिस्से के तौर पर, कर्नेल मॉड्यूल इंटरफ़ेस (केएमआई) के बारे में भी बताया गया है. मेनिफ़ेस्ट में बताया गया हो.

जीकेआई कर्नेल को बनाने के लिए इस्तेमाल किया जाने वाला टूलचेन, इनके साथ पूरी तरह से काम करना चाहिए: इस टूल का इस्तेमाल वेंडर मॉड्यूल बनाने के लिए किया जाता है. Android तक 10 के साथ, सभी Android कर्नेल बनाए जाने चाहिए के साथ कर सकते हैं. जीकेआई की मदद से, प्रॉडक्ट बनाने के लिए इस्तेमाल की जाने वाली LLVM टूलचेन कर्नेल और वेंडर मॉड्यूल के लिए, उसी एबीआई को जनरेट करना ज़रूरी है जो एलएलवीएम टूलचेन से जनरेट होता है एओएसपी और पार्टनर को यह पक्का करना होगा कि KMI, GKI कर्नेल के साथ काम करता हो. हम आपको इस टूल का इस्तेमाल करने का सुझाव देते हैं, क्योंकि इससे सबसे अच्छा साथ काम करता है.

आगे क्या करना है?

  • हर्मेटिक बिल्ड प्रोसेस का इस्तेमाल करके कर्नेल को बनाने के निर्देशों के लिए और एलएलवीएम टूलचेन, इसका मतलब है कर्नेल बनाएं.

  • एबीआई की निगरानी करने और समस्याओं को ठीक करने के तरीके जानने के लिए, यह लेख पढ़ें: Android Kernel एबीआई मॉनिटरिंग