Android आम गुठली

एओएसपी सामान्य कर्नेल (एंड्रॉइड सामान्य कर्नेल या एसीके के रूप में भी जाना जाता है) कर्नेल.ओआरजी कर्नेल के डाउनस्ट्रीम हैं और इसमें एंड्रॉइड समुदाय के लिए रुचि के पैच शामिल हैं जिन्हें मेनलाइन या लॉन्ग टर्म सपोर्टेड (एलटीएस) कर्नेल में विलय नहीं किया गया है। इन पैच में शामिल हो सकते हैं:

  • एंड्रॉइड सुविधाओं के लिए आवश्यक अपस्ट्रीम कार्यक्षमता के बैकपोर्ट और चेरी-पिक्स
  • एंड्रॉइड डिवाइसों के लिए सुविधाएं तैयार हैं लेकिन अभी भी विकास के अधीन हैं (उदाहरण के लिए, एनर्जी अवेयर शेड्यूलर कार्य प्लेसमेंट अनुकूलन)।
  • विक्रेता/ओईएम विशेषताएं जो अन्य पारिस्थितिकी तंत्र भागीदारों (उदाहरण के लिए, एसडीकार्डएफएस) के लिए उपयोगी हैं।

android-mainline एंड्रॉइड सुविधाओं के लिए प्राथमिक विकास शाखा है। जब भी लिनस टोरवाल्ड्स कोई रिलीज या रिलीज उम्मीदवार पोस्ट करता है तो लिनक्स मेनलाइन को android-mainline में विलय कर दिया जाता है। 2019 से पहले, एंड्रॉइड कॉमन कर्नेल का निर्माण हाल ही में घोषित एलटीएस कर्नेल की क्लोनिंग और एंड्रॉइड-विशिष्ट पैच जोड़कर किया गया था। android-mainline से नए एंड्रॉइड कॉमन कर्नेल को ब्रांच करने के लिए यह प्रक्रिया 2019 में बदल गई। यह नया मॉडल क्रमिक रूप से समान परिणाम प्राप्त करके पोर्ट को अग्रेषित करने और एंड्रॉइड पैच का परीक्षण करने के महत्वपूर्ण प्रयास से बचता है। android-mainline महत्वपूर्ण निरंतर परीक्षण से गुजरती है, यह मॉडल प्रकाशित होने के दिन से ही उच्च गुणवत्ता वाला कर्नेल सुनिश्चित करता है।

जब एक नया एलटीएस अपस्ट्रीम घोषित किया जाता है, तो संबंधित सामान्य कर्नेल को android-mainline से ब्रांच किया जाता है। यह भागीदारों को android-mainline से विलय करके, एलटीएस संस्करण की घोषणा से पहले एक परियोजना शुरू करने की अनुमति देता है। नई सामान्य कर्नेल शाखा बनने के बाद, भागीदार मर्ज स्रोत को नई शाखा में निर्बाध रूप से बदल सकते हैं।

अन्य सामान्य कर्नेल शाखाएँ अपने संबद्ध LTS कर्नेल से नियमित विलय प्राप्त करती हैं। ये विलय आम तौर पर एलटीएस रिलीज़ पोस्ट होने के तुरंत बाद किए जाते हैं। उदाहरण के लिए, जब Linux 4.19.64 पोस्ट किया गया था, तो इसे 4.19 सामान्य कर्नेल में विलय कर दिया गया था (उदाहरण के लिए, android-4.19-q )। एलटीएस और एंड्रॉइड-विशिष्ट बग फिक्स के साथ अद्यतित रहने के लिए साझेदारों को सामान्य कर्नेल से अपने उत्पाद कर्नेल में नियमित रूप से विलय करने के लिए दृढ़ता से प्रोत्साहित किया जाता है।

ACK KMI कर्नेल शाखा

GKI कर्नेल में एक स्थिर कर्नेल मॉड्यूल इंटरफ़ेस होता है। KMI को कर्नेल संस्करण और एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ द्वारा विशिष्ट रूप से पहचाना जाता है, इसलिए शाखाओं को <androidRelease>-<kernel version> नाम दिया गया है। उदाहरण के लिए, Android 11 के लिए 5.4 GKI कर्नेल को android11-5.4. Android 12 के लिए दो अतिरिक्त GKI कर्नेल हैं, android12-5.4 और android12-5.10

विरासत मिठाई कर्नेल शाखाएँ

लीगेसी डेज़र्ट कर्नेल यह गारंटी देने के लिए बनाए गए थे कि नई सुविधा का विकास एंड्रॉइड कॉमन कर्नेल से विलय में हस्तक्षेप नहीं करता है। शाखाएँ संबंधित डेज़र्ट रिलीज़ से पहले बनाई गई थीं और एलटीएस से नियमित विलय प्राप्त करती थीं, लेकिन कोई नई सुविधाएँ नहीं थीं। उदाहरण के लिए, android-4.9-q LTS 4.9.y शाखा से मर्ज प्राप्त होता है।

यदि कर्नेल संस्करण लॉन्च कर्नेल नहीं था, तो कोई डेज़र्ट कर्नेल नहीं बनाया गया था, लेकिन सबसे हालिया प्लेटफ़ॉर्म रिलीज़ से जुड़ा कर्नेल भविष्य के एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ में अपग्रेड करने के लिए मान्य है। उदाहरण के लिए, android-4.9-q android-4.9* डेज़र्ट शाखाओं में से अंतिम था, इसलिए इसे इसके मूल प्लेटफ़ॉर्म रिलीज़, एंड्रॉइड 10 के साथ समर्थित और परीक्षण किया गया है। यह प्लेटफ़ॉर्म रिलीज़ के साथ भी समर्थित और परीक्षण किया गया है जो 4.9 पर चलने वाले उपकरणों के अपग्रेड का समर्थन करता है। कर्नेल: Android 11 और Android 12.

क्योंकि एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ के लिए डेज़र्ट नामकरण योजना को एंड्रॉइड 10 के साथ हटा दिया गया था, अंतिम डेज़र्ट रिलीज़ जिसे android-4.14-r और android-4.19-r कहा जाता था, उसके बजाय android-4.14-stable और android-4.19-stable कहा जाता था।

एंड्रॉइड 11 से शुरू होने वाले मिठाई गुठली को GKI गुठली द्वारा प्रतिस्थापित किया जाता है, इसलिए समर्थित मिठाई गुठली की पूरी सूची इस तालिका में है।

एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ गुठली तक समर्थन किया
एंड्रॉइड 10 android-4.9-q
android-4.14-q
android-4.19-q
जनवरी 2023
एंड्रॉइड 11 android-4.14-stable
android-4.19-stable
जनवरी 2024
दिसंबर 2024

लीगेसी रिलीज़ कर्नेल शाखाएँ

मासिक एंड्रॉइड सुरक्षा बुलेटिन में उद्धृत पैच के बैकपोर्ट प्रदान करने के लिए रिलीज़ कर्नेल बनाए रखा जाता है। जब कोई नया एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ हुआ तो वे प्रत्येक लॉन्च कर्नेल के लिए बनाए गए थे। जब संबंधित कर्नेल या प्लेटफ़ॉर्म रिलीज़ को सपोर्ट लाइफ़टाइम और सुरक्षा पैच में वर्णित के अनुसार अस्वीकृत कर दिया जाता है, तो उन्हें अस्वीकृत कर दिया जाता है।

हर महीने जब एंड्रॉइड सुरक्षा बुलेटिन प्रकाशित होता है, तो इन कर्नेल को बुलेटिन में उद्धृत पैच के बैकपोर्ट के साथ अपडेट किया जाता है जो अपस्ट्रीम कर्नेल और एंड्रॉइड सामान्य कर्नेल के लिए प्रासंगिक होते हैं। उन्हें एलटीएस पैच प्राप्त नहीं होते हैं, इसलिए लघु संस्करण संख्या कभी नहीं बदलती है। उनमें विक्रेता-विशिष्ट पैच के लिए बैकपोर्ट शामिल नहीं हैं।

एंड्रॉइड 11 और बाद के प्लेटफ़ॉर्म रिलीज़ में, एंड्रॉइड सुरक्षा बुलेटिन में उद्धृत पैच को लागू करने के लिए भागीदारों को डेज़र्ट या जीकेआई कर्नेल से मर्ज करना होगा। एंड्रॉइड 11 या बाद के प्लेटफ़ॉर्म रिलीज़ के लिए कोई रिलीज़ कर्नेल नहीं बनाया जाएगा।

इसलिए, 14 रिलीज़ कर्नेल की पूरी सूची इस तालिका में दिखाई गई है, और कोई भी नहीं जोड़ा जाएगा।

एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ गुठली तक समर्थन किया
एंड्रॉइड 10 android-4.9-q-release
android-4.14-q-release
android-4.19-q-release
जनवरी 2023

कर्नेल को फ़ीचर करें और लॉन्च करें

प्रत्येक एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ तीन लिनक्स कर्नेल संस्करणों में से किसी एक पर आधारित नए डिवाइस लॉन्च करने का समर्थन करता है। जैसा कि नीचे दी गई तालिका में दिखाया गया है, एंड्रॉइड 11 के लिए लॉन्च कर्नेल android-4.14-stable , android-4.19-stable और android11-5.4 हैं।

चूँकि प्लेटफ़ॉर्म रिलीज़ को अपडेट करते समय आमतौर पर कर्नेल अपग्रेड की आवश्यकता नहीं होती है, जिन कर्नेल में प्लेटफ़ॉर्म रिलीज़ के लिए नवीनतम सुविधाएँ नहीं होती हैं उनका उपयोग अभी भी डिवाइस लॉन्च करने के लिए किया जा सकता है। इसलिए जो कर्नेल एंड्रॉइड 10 के लिए डिज़ाइन किए गए थे, जैसे कि android-4.19-q , प्लेटफ़ॉर्म रिलीज़ को एंड्रॉइड 11 में अपग्रेड करने के बाद भी डिवाइस पर उपयोग किया जा सकता है। एंड्रॉइड 12 से शुरू होने पर, संख्या को सीमित करने के लिए लॉन्च कर्नेल की तुलना में कम फीचर कर्नेल होंगे स्थिर KMI जिनका समर्थन किया जाना चाहिए।

एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ गुठली लॉन्च करें फ़ीचर गुठली
एंड्रॉइड 14 (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10 1
android14-6.1
android14-5.15
एंड्रॉइड 13 (2022) android13-5.15
android13-5.10
android12-5.10 1
android12-5.4 1
android11-5.4 1
android13-5.15
android13-5.10
एंड्रॉइड 12 (2021) android12-5.10
android12-5.4
android11-5.4 1
android-4.19-stable
android12-5.10
android12-5.4
एंड्रॉइड 11 (2020) android11-5.4
android-4.19-stable
android-4.14-stable
android11-5.4
android-4.19-stable
android-4.14-stable
एंड्रॉइड 10 (2019) android-4.19-q
android-4.14-q
android-4.9-q

android-4.19-q
android-4.14-q
android-4.9-q

1 यदि संबंधित बीएसपी को प्लेटफ़ॉर्म रिलीज़ के लिए अद्यतन किया गया है तो अतिरिक्त प्रतिबंध लागू हो सकते हैं। अधिक सामान्य शब्दों में, कर्नेल की एंड्रॉइड रिलीज़ संख्या लक्ष्य FCM संस्करण से अधिक या उसके बराबर होनी चाहिए। विवरण के लिए विक्रेता इंटरफ़ेस ऑब्जेक्ट - कर्नेल शाखाओं का मिलान देखें।

सामान्य कर्नेल पदानुक्रम

एंड्रॉइड-मेनलाइन से शाखा

सामान्य कर्नेल पदानुक्रम का शीर्ष स्तर चित्र 1 में दिखाया गया है।

एंड्रॉइड-मेनलाइन कर्नेल से सामान्य कर्नेल बनाना

चित्र 1. एंड्रॉइड-मेनलाइन कर्नेल से सामान्य कर्नेल बनाना

ध्यान दें कि नए एंड्रॉइड कॉमन कर्नेल android12-5.10 को 2020 में android-mainline से ब्रांच किया गया था। 2021 में, जब अगला LTS घोषित किया गया था, android13-5.15 को android-mainline से ब्रांच किया गया था।

जैसा कि चित्र 1 में दिखाया गया है, प्रत्येक कर्नेल संस्करण दो GKI कर्नेल का आधार है। उदाहरण के लिए, दो v5.4 कर्नेल android11-5.4 और android12-5.4 हैं, जो दोनों अपने संबंधित प्लेटफ़ॉर्म रिलीज़ के लिए फीचर कर्नेल हैं। 5.10 के लिए भी यही स्थिति होगी; LTS घोषित होने पर android12-5.10 बनाया गया था और Android 13 के लिए सुविधाओं के विकास की अनुमति देने के लिए android13-5.10 , स्प्रिंग 2021 में कर्नेल सुविधा पूर्ण मील के पत्थर पर android12-5.10 से शाखा करेगा।

ACK KMI शाखा जीवनचक्र

ACK KMI शाखा का जीवनचक्र नीचे चित्र 2 में दिखाया गया है।

5.10 ACK KMI शाखा जीवनचक्र

चित्र 2. 5.10 ACK KMI शाखा जीवनचक्र

विकास प्रक्रिया और शाखा जीवनचक्र को स्पष्ट करने के लिए, चित्र 2 5.10 के लिए ACK KMI शाखाओं पर केंद्रित है।

प्रत्येक ACK KMI शाखा प्रत्येक शाखा में अलग-अलग रंगों द्वारा चित्र 2 में दर्शाए गए तीन चरणों से गुजरती है। जैसा कि दिखाया गया है, एलटीएस को चरण की परवाह किए बिना नियमित रूप से विलय किया जाता है।

विकास का चरण

जब इसे बनाया जाता है, तो एक ACK KMI शाखा विकास चरण (चित्र 2 में डेव ) में प्रवेश करती है, और अगले एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ के लिए फीचर योगदान के लिए खुली होती है। चित्र 2 में, android12-5.10 तब बनाया गया था जब 5.10 को नए अपस्ट्रीम LTS कर्नेल के रूप में घोषित किया गया था। कर्नेल संस्करण के लिए दूसरी ACK KMI शाखा बाद के रिलीज़ के विकास की अनुमति देने के लिए पहले बनाई जा सकती है। चित्र 2 में, android13-5.10 तब बनाया जाता है जब android12-5.10 विकास चरण से बाहर हो जाता है।

स्थिरीकरण चरण

जब ACK KMI शाखा को सुविधा पूर्ण घोषित किया जाता है, तो यह स्थिरीकरण चरण में प्रवेश करती है, जिसे चित्र 2 में स्टैब के रूप में लेबल किया गया है। भागीदार सुविधाएँ और बग फिक्स अभी भी स्वीकार किए जाते हैं, लेकिन इंटरफ़ेस को प्रभावित करने वाले किसी भी परिवर्तन का पता लगाने के लिए KMI ट्रैकिंग सक्षम है। इस चरण में, KMI-ब्रेकिंग परिवर्तन स्वीकार किए जाते हैं, लेकिन KMI परिभाषा को आवश्यकतानुसार अद्यतन किया जाना चाहिए। KMI निगरानी पर विवरण के लिए GKI अवलोकन देखें।

KMI जमे हुए चरण

किसी नए प्लेटफ़ॉर्म रिलीज़ को AOSP पर धकेलने से पहले, ACK KMI शाखा फ़्रीज़ हो जाती है और शाखा के जीवनकाल तक फ़्रीज़ रहती है। इसका मतलब यह है कि कोई भी KMI-ब्रेकिंग परिवर्तन स्वीकार नहीं किया जाता है जब तक कि एक गंभीर सुरक्षा समस्या की पहचान नहीं की जाती है जिसे स्थिर KMI को प्रभावित किए बिना कम नहीं किया जा सकता है। KMI टूटने से बचने के लिए, यदि Android उपकरणों के लिए सुधार की आवश्यकता नहीं है, तो LTS से मर्ज किए गए कुछ पैच को संशोधित या हटाया जा सकता है।

जब ACK KMI शाखा फ़्रीज़ हो जाती है, तो बग फिक्स और साझेदार सुविधाएँ तब तक स्वीकार की जा सकती हैं जब तक कि मौजूदा KMI सामान्य कर्नेल टूटा न हो। KMI को नए निर्यातित प्रतीकों के साथ तब तक बढ़ाया जा सकता है जब तक कि वर्तमान KMI वाले इंटरफ़ेस प्रभावित न हों। जब KMI में नए इंटरफ़ेस जोड़े जाते हैं, तो वे तुरंत स्थिर हो जाते हैं और भविष्य में होने वाले परिवर्तनों से उन्हें तोड़ा नहीं जा सकता।

उदाहरण के लिए, KMI इंटरफ़ेस सामान्य कर्नेल द्वारा उपयोग की जाने वाली संरचना में फ़ील्ड जोड़ने वाले परिवर्तन की अनुमति नहीं है क्योंकि यह इंटरफ़ेस परिभाषा को बदल देता है:

struct foo {
  int original_field1;
  int original_field2;
  int new_field;  // Not allowed
};

int do_foo(struct foo &myarg)
{
  do_stuff(myarg);
}
EXPORT_SYMBOL_GPL(do_foo);

हालाँकि, एक नया फ़ंक्शन जोड़ना ठीक है:

struct foo2 {
  struct foo orig_foo;
  int new_field;
};

int do_foo2(struct foo2 &myarg)
{
  do_stuff2(myarg);
}
EXPORT_SYMBOL_GPL(do_foo2);

जीकेआई कर्नेल के जीवनकाल के लिए, यूजरस्पेस के साथ बैकवर्ड संगतता बनाए रखी जाती है ताकि डिवाइस को लॉन्च किए गए एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ के लिए कर्नेल को सुरक्षित रूप से उपयोग किया जा सके। पिछली रिलीज़ों के साथ निरंतर परीक्षण यह सुनिश्चित करता है कि अनुकूलता बनी रहे। तो चित्र 2 में, android12-5.10 कर्नेल का उपयोग Android 12 डिवाइस और Android 13 डिवाइस के लिए किया जा सकता है। क्योंकि एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ पिछले संस्करणों के साथ भी संगत है, android12-5.4 कर्नेल का उपयोग एंड्रॉइड 13 डिवाइसों के लिए लॉन्च या अपग्रेड के लिए किया जा सकता है।

जमे हुए चरण में प्रवेश करते समय, शाखा को KMI पीढ़ी संख्या वाले KMI संस्करण स्ट्रिंग के साथ git-टैग किया जाता है। उदाहरण के लिए, जब android11-5.4 फ़्रीज़ किया गया था, तो इसे KMI संस्करण स्ट्रिंग 5.4-android11-0 के साथ टैग किया गया था, जहाँ अनुगामी 0 KMI पीढ़ी संख्या है। यदि कोई सुरक्षा समस्या या अन्य घटना है जिसके लिए KMI-परिवर्तनशील पैच को स्वीकार करने की आवश्यकता होती है, तो KMI पीढ़ी संख्या बढ़ा दी जाती है और शाखा को पुनः टैग किया जाता है। उदाहरण के लिए, यदि ऐसा परिवर्तन android11-5.4 में स्वीकार किया जाता है, तो शाखा को नए KMI संस्करण, 5.4-android11-1 के साथ टैग किया जाएगा। वर्तमान KMI पीढ़ी को uname कमांड का उपयोग करके पाया जा सकता है:

$ uname -r
5.4.61-android11-0-00153-ga972f59040e4

प्लेटफ़ॉर्म रिलीज़ के बाद की संख्या KMI पीढ़ी (इस मामले में 0) है।

यदि KMI पीढ़ी बदलती है, तो कर्नेल पिछली KMI पीढ़ी के अनुरूप विक्रेता मॉड्यूल के साथ संगत नहीं है, इसलिए मॉड्यूल को कर्नेल के साथ सिंक्रनाइज़ रूप से फिर से बनाया और अद्यतन किया जाना चाहिए। KMI पीढ़ी परिवर्तन बहुत दुर्लभ होने की उम्मीद है।

गुठली के बीच अनुकूलता

समान एलटीएस परिवार में कर्नेल के बीच संगतता आवश्यकताएँ नए GKI कर्नेल के साथ बदल रही हैं।

जीकेआई गुठली

GKI कर्नेल कर्नेल संस्करण का समर्थन करने वाले सभी एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ के साथ बैकवर्ड संगतता बनाए रखता है। इसके अतिरिक्त, एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ पिछले रिलीज़ के GKI कर्नेल के साथ बैकवर्ड-संगत हैं। तो आप एंड्रॉइड 13 चलाने वाले उपकरणों पर एंड्रॉइड 12 के लिए विकसित android12-5.4 कर्नेल का सुरक्षित रूप से उपयोग कर सकते हैं। सभी समर्थित रिलीज के साथ जीकेआई कर्नेल के निरंतर वीटीएस और सीटीएस परीक्षण के माध्यम से संगतता सत्यापित की जाती है।

KMI स्थिर है ताकि विक्रेता छवि में कर्नेल मॉड्यूल के पुनर्निर्माण की आवश्यकता के बिना कर्नेल को अद्यतन किया जा सके।

विभिन्न GKI कर्नेल के बीच KMI संगतता बनाए नहीं रखी जाती है। इसलिए, उदाहरण के लिए, सभी मॉड्यूल के पुनर्निर्माण के बिना android12-5.10 को android13-5.10 कर्नेल से प्रतिस्थापित नहीं किया जा सकता है।

GKI कर्नेल केवल उनके प्रारंभिक और बाद के रिलीज़ के लिए समर्थित हैं। वे पुराने रिलीज़ के लिए समर्थित नहीं हैं। इसलिए android13-5.10 कर्नेल Android 12 उपकरणों पर समर्थित नहीं है।

विरासत गुठली

लेगेसी डेज़र्ट कर्नेल ( *-q और *-stable ) सभी एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ में बैकवर्ड संगत नहीं हैं, लेकिन पिछले दो एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ से कर्नेल अपग्रेड के लिए समर्थित हैं। इसलिए, android-4.19-q पर आधारित कर्नेल का उपयोग करके एंड्रॉइड 10 के साथ लॉन्च किया गया डिवाइस या तो एंड्रॉइड 2020 में अपग्रेड करते समय android-4.19-q कर्नेल का उपयोग जारी रख सकता है, या android-4.19-stable का समर्थन करने के लिए विक्रेता-विशिष्ट कोड को अपडेट कर सकता है। .

अनुकूलता मैट्रिक्स

यह तालिका प्रत्येक एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ के साथ समर्थित और परीक्षण किए गए कर्नेल संस्करणों को दिखाती है।

एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ उन्नयन के लिए समर्थित कर्नेल लॉन्च के लिए समर्थित कर्नेल
एंड्रॉइड 14 (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.14-stable
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
एंड्रॉइड 13 (2022) android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.9-q (EOL)
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
एंड्रॉइड 12 (2021) android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.14-p (EOL)
android-4.9-q (EOL)
android-4.9-p (EOL)
android-4.9-o (EOL)
android-4.19-stable
android11-5.4
android12-5.4
android12-5.10
एंड्रॉइड 11 (2020) android11-5.4
android-4.19-stable
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.14-p (EOL)
android-4.9-q (EOL)
android-4.9-p (EOL)
android-4.9-o (EOL)
android-4.4-p (EOL)
android-4.4-o (EOL)
android11-5.4
android-4.19-stable
android-4.14-stable
एंड्रॉइड 10 (2019) android-4.14-stable
android-4.14-p (EOL)
android-4.9-p (EOL)
android-4.9-o (EOL)
android-4.4-p (EOL)
android-4.4-o (EOL)
android-3.18 (EOL)
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.9-q (EOL)

जीवनकाल और सुरक्षा पैच का समर्थन करें

एंड्रॉइड सामान्य कर्नेल तब तक समर्थित हैं जब तक कि संबंधित एलटीएस कर्नेल या एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ समर्थित नहीं है। जबकि कर्नेल समर्थित है, इसे अपस्ट्रीम से एलटीएस मर्ज और एंड्रॉइड-विशिष्ट कोड के लिए बग फिक्स प्राप्त होते रहते हैं। इन सुधारों में मासिक एंड्रॉइड सुरक्षा बुलेटिन में उद्धृत सभी कर्नेल सुरक्षा पैच शामिल हैं जो एंड्रॉइड सामान्य कर्नेल के लिए प्रासंगिक हैं।

भागीदार आश्वस्त हो सकते हैं कि एंड्रॉइड सामान्य कर्नेल से नियमित रूप से विलय करके, उन्हें सभी संभव कर्नेल सुरक्षा पैच मिल रहे हैं।

सामान्य कर्नेल परीक्षण

विक्रेताओं द्वारा डाउनस्ट्रीम परीक्षण के अलावा सामान्य कर्नेल का परीक्षण कई सीआई प्रणालियों के साथ किया जाता है।

लिनक्स कर्नेल कार्यात्मक परीक्षण

लिनक्स कर्नेल फंक्शनल टेस्ट (एलकेएफटी) परीक्षण भौतिक आर्म32 और आर्म64 उपकरणों के सेट पर केसेल्फटेस्ट, एलटीपी, वीटीएस और सीटीएस सहित विभिन्न परीक्षण सूट शुरू करते हैं। हाल के परीक्षण परिणाम यहां पाए जा सकते हैं।

कर्नेलसीआई परीक्षण

जब भी कोई नया पैच किसी सामान्य कर्नेल शाखा के लिए प्रतिबद्ध होता है तो कर्नेलसीआई बिल्ड-एंड-बूट परीक्षण शुरू किए जाते हैं। कई सौ बिल्ड कॉन्फ़िगरेशन का परीक्षण किया जाता है और विभिन्न बोर्डों पर बूट किया जाता है। एंड्रॉइड कर्नेल के लिए हाल के परिणाम यहां पाए जा सकते हैं।

एंड्रॉइड प्रीसबमिट और पोस्टसबमिट परीक्षण

एंड्रॉइड सामान्य कर्नेल में विफलताओं को पेश होने से रोकने के लिए प्रीसबमिट परीक्षणों का उपयोग किया जाता है। परीक्षण परिणाम सारांश एंड्रॉइड सामान्य कर्नेल गेरिट में कोड परिवर्तन के 'चेक' टैब में पाया जा सकता है।

जब नए पैच ci.android.com में एंड्रॉइड सामान्य कर्नेल शाखा के लिए प्रतिबद्ध होते हैं, तो एंड्रॉइड पोस्टसबमिट परीक्षण एंड्रॉइड सामान्य कर्नेल शाखाओं में नए प्रकाशित बिल्ड पर किया जाता है। ci.android.com में आंशिक शाखा नाम के रूप में aosp_kernel दर्ज करके, आप उपलब्ध परिणामों के साथ कर्नेल शाखाओं की एक सूची देखते हैं। उदाहरण के लिए, android-mainline के परिणाम यहां पाए जा सकते हैं। किसी विशेष बिल्ड पर क्लिक करने पर, आपको Test Results टैब में परीक्षण स्थिति मिलेगी।

एंड्रॉइड प्लेटफ़ॉर्म सोर्स ट्री में टेस्ट ग्रुप kernel-presubmit के साथ टेस्ट-मैपिंग द्वारा परिभाषित परीक्षण एंड्रॉइड कर्नेल शाखाओं के लिए प्रीसबमिट के रूप में चलाए जाएंगे। उदाहरण के लिए test/vts/tests/kernel_proc_file_api_test/TEST_MAPPING में निम्न कॉन्फ़िगरेशन एंड्रॉइड कॉमन कर्नेल कोड चेक-इन पर प्रीस्बुमिट टेस्ट के रूप में vts_kernel_proc_file_api_test को सक्षम करेगा।

{
  "kernel-presubmit": [
    {
      "name": "vts_kernel_proc_file_api_test"
    }
  ]
}

0-दिवसीय परीक्षण

जब नए पैच प्रतिबद्ध होते हैं तो 0-दिवसीय परीक्षण सभी एंड्रॉइड सामान्य कर्नेल शाखाओं पर पैच-दर-पैच परीक्षण करता है। विभिन्न बूट, कार्यात्मक और प्रदर्शन परीक्षण चलाए जाते हैं। सार्वजनिक समूह क्रॉस-कर्नेल-बिल्डरिपोर्ट में शामिल हों

टेस्ट मैट्रिक्स

एंड्रॉइड सामान्य कर्नेल एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ टेस्ट सूट
मुख्य 14 13 12 11 10 एलकेएफटी कर्नेलसीआई प्री सबमिट पोस्ट सबमिट करें 0-डे
android-mainline
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.19-stable
android-4.14-stable

एंड्रॉइड सामान्य कर्नेल में योगदान करें

आम तौर पर, फीचर डेवलपमेंट मेनलाइन लिनक्स पर किया जाना चाहिए, न कि एंड्रॉइड के सामान्य कर्नेल पर। अपस्ट्रीम विकास को दृढ़ता से प्रोत्साहित किया जाता है, और वहां विकास को स्वीकार किए जाने के बाद, इसे आवश्यकतानुसार विशिष्ट एसीके शाखा में आसानी से वापस भेजा जा सकता है। एंड्रॉइड कर्नेल टीम एंड्रॉइड पारिस्थितिकी तंत्र के लाभ के लिए अपस्ट्रीमिंग प्रयासों का समर्थन करने में प्रसन्न है।

गेरिट को पैच सबमिट करें और इन योगदान दिशानिर्देशों का पालन करें।

,

एओएसपी सामान्य कर्नेल (एंड्रॉइड सामान्य कर्नेल या एसीके के रूप में भी जाना जाता है) कर्नेल.ओआरजी कर्नेल के डाउनस्ट्रीम हैं और इसमें एंड्रॉइड समुदाय के लिए रुचि के पैच शामिल हैं जिन्हें मेनलाइन या लॉन्ग टर्म सपोर्टेड (एलटीएस) कर्नेल में विलय नहीं किया गया है। इन पैच में शामिल हो सकते हैं:

  • एंड्रॉइड सुविधाओं के लिए आवश्यक अपस्ट्रीम कार्यक्षमता के बैकपोर्ट और चेरी-पिक्स
  • एंड्रॉइड डिवाइसों के लिए सुविधाएं तैयार हैं लेकिन अभी भी विकास के अधीन हैं (उदाहरण के लिए, एनर्जी अवेयर शेड्यूलर कार्य प्लेसमेंट अनुकूलन)।
  • विक्रेता/ओईएम विशेषताएं जो अन्य पारिस्थितिकी तंत्र भागीदारों (उदाहरण के लिए, एसडीकार्डएफएस) के लिए उपयोगी हैं।

android-mainline एंड्रॉइड सुविधाओं के लिए प्राथमिक विकास शाखा है। जब भी लिनस टोरवाल्ड्स कोई रिलीज या रिलीज उम्मीदवार पोस्ट करता है तो लिनक्स मेनलाइन को android-mainline में विलय कर दिया जाता है। 2019 से पहले, एंड्रॉइड कॉमन कर्नेल का निर्माण हाल ही में घोषित एलटीएस कर्नेल की क्लोनिंग और एंड्रॉइड-विशिष्ट पैच जोड़कर किया गया था। android-mainline से नए एंड्रॉइड कॉमन कर्नेल को ब्रांच करने के लिए यह प्रक्रिया 2019 में बदल गई। यह नया मॉडल क्रमिक रूप से समान परिणाम प्राप्त करके पोर्ट को अग्रेषित करने और एंड्रॉइड पैच का परीक्षण करने के महत्वपूर्ण प्रयास से बचता है। android-mainline महत्वपूर्ण निरंतर परीक्षण से गुजरती है, यह मॉडल प्रकाशित होने के दिन से ही उच्च गुणवत्ता वाला कर्नेल सुनिश्चित करता है।

जब एक नया एलटीएस अपस्ट्रीम घोषित किया जाता है, तो संबंधित सामान्य कर्नेल को android-mainline से ब्रांच किया जाता है। यह भागीदारों को android-mainline से विलय करके, एलटीएस संस्करण की घोषणा से पहले एक परियोजना शुरू करने की अनुमति देता है। नई सामान्य कर्नेल शाखा बनने के बाद, भागीदार मर्ज स्रोत को नई शाखा में निर्बाध रूप से बदल सकते हैं।

अन्य सामान्य कर्नेल शाखाएँ अपने संबद्ध LTS कर्नेल से नियमित विलय प्राप्त करती हैं। ये विलय आम तौर पर एलटीएस रिलीज़ पोस्ट होने के तुरंत बाद किए जाते हैं। उदाहरण के लिए, जब Linux 4.19.64 पोस्ट किया गया था, तो इसे 4.19 सामान्य कर्नेल में विलय कर दिया गया था (उदाहरण के लिए, android-4.19-q )। एलटीएस और एंड्रॉइड-विशिष्ट बग फिक्स के साथ अद्यतित रहने के लिए साझेदारों को सामान्य कर्नेल से अपने उत्पाद कर्नेल में नियमित रूप से विलय करने के लिए दृढ़ता से प्रोत्साहित किया जाता है।

ACK KMI कर्नेल शाखा

GKI कर्नेल में एक स्थिर कर्नेल मॉड्यूल इंटरफ़ेस होता है। KMI को कर्नेल संस्करण और एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ द्वारा विशिष्ट रूप से पहचाना जाता है, इसलिए शाखाओं को <androidRelease>-<kernel version> नाम दिया गया है। उदाहरण के लिए, Android 11 के लिए 5.4 GKI कर्नेल को android11-5.4. Android 12 के लिए दो अतिरिक्त GKI कर्नेल हैं, android12-5.4 और android12-5.10

विरासत मिठाई कर्नेल शाखाएँ

लीगेसी डेज़र्ट कर्नेल यह गारंटी देने के लिए बनाए गए थे कि नई सुविधा का विकास एंड्रॉइड कॉमन कर्नेल से विलय में हस्तक्षेप नहीं करता है। शाखाएँ संबंधित डेज़र्ट रिलीज़ से पहले बनाई गई थीं और एलटीएस से नियमित विलय प्राप्त करती थीं, लेकिन कोई नई सुविधाएँ नहीं थीं। उदाहरण के लिए, android-4.9-q LTS 4.9.y शाखा से मर्ज प्राप्त होता है।

यदि कर्नेल संस्करण लॉन्च कर्नेल नहीं था, तो कोई डेज़र्ट कर्नेल नहीं बनाया गया था, लेकिन सबसे हालिया प्लेटफ़ॉर्म रिलीज़ से जुड़ा कर्नेल भविष्य के एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ में अपग्रेड करने के लिए मान्य है। उदाहरण के लिए, android-4.9-q android-4.9* डेज़र्ट शाखाओं में से अंतिम था, इसलिए इसे इसके मूल प्लेटफ़ॉर्म रिलीज़, एंड्रॉइड 10 के साथ समर्थित और परीक्षण किया गया है। यह प्लेटफ़ॉर्म रिलीज़ के साथ भी समर्थित और परीक्षण किया गया है जो 4.9 पर चलने वाले उपकरणों के अपग्रेड का समर्थन करता है। कर्नेल: Android 11 और Android 12.

क्योंकि एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ के लिए डेज़र्ट नामकरण योजना को एंड्रॉइड 10 के साथ हटा दिया गया था, अंतिम डेज़र्ट रिलीज़ जिसे android-4.14-r और android-4.19-r कहा जाता था, उसके बजाय android-4.14-stable और android-4.19-stable कहा जाता था।

एंड्रॉइड 11 से शुरू होने वाले मिठाई गुठली को GKI गुठली द्वारा प्रतिस्थापित किया जाता है, इसलिए समर्थित मिठाई गुठली की पूरी सूची इस तालिका में है।

एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ गुठली तक समर्थन किया
एंड्रॉइड 10 android-4.9-q
android-4.14-q
android-4.19-q
जनवरी 2023
एंड्रॉइड 11 android-4.14-stable
android-4.19-stable
जनवरी 2024
दिसंबर 2024

लीगेसी रिलीज़ कर्नेल शाखाएँ

मासिक एंड्रॉइड सुरक्षा बुलेटिन में उद्धृत पैच के बैकपोर्ट प्रदान करने के लिए रिलीज़ कर्नेल बनाए रखा जाता है। जब कोई नया एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ हुआ तो वे प्रत्येक लॉन्च कर्नेल के लिए बनाए गए थे। जब संबंधित कर्नेल या प्लेटफ़ॉर्म रिलीज़ को सपोर्ट लाइफ़टाइम और सुरक्षा पैच में वर्णित के अनुसार अस्वीकृत कर दिया जाता है, तो उन्हें अस्वीकृत कर दिया जाता है।

हर महीने जब एंड्रॉइड सुरक्षा बुलेटिन प्रकाशित होता है, तो इन कर्नेल को बुलेटिन में उद्धृत पैच के बैकपोर्ट के साथ अपडेट किया जाता है जो अपस्ट्रीम कर्नेल और एंड्रॉइड सामान्य कर्नेल के लिए प्रासंगिक होते हैं। उन्हें एलटीएस पैच प्राप्त नहीं होते हैं, इसलिए लघु संस्करण संख्या कभी नहीं बदलती है। उनमें विक्रेता-विशिष्ट पैच के लिए बैकपोर्ट शामिल नहीं हैं।

एंड्रॉइड 11 और बाद के प्लेटफ़ॉर्म रिलीज़ में, एंड्रॉइड सुरक्षा बुलेटिन में उद्धृत पैच को लागू करने के लिए भागीदारों को डेज़र्ट या जीकेआई कर्नेल से मर्ज करना होगा। एंड्रॉइड 11 या बाद के प्लेटफ़ॉर्म रिलीज़ के लिए कोई रिलीज़ कर्नेल नहीं बनाया जाएगा।

इसलिए, 14 रिलीज़ कर्नेल की पूरी सूची इस तालिका में दिखाई गई है, और कोई भी नहीं जोड़ा जाएगा।

एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ गुठली तक समर्थन किया
एंड्रॉइड 10 android-4.9-q-release
android-4.14-q-release
android-4.19-q-release
जनवरी 2023

कर्नेल को फ़ीचर करें और लॉन्च करें

प्रत्येक एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ तीन लिनक्स कर्नेल संस्करणों में से किसी एक पर आधारित नए डिवाइस लॉन्च करने का समर्थन करता है। जैसा कि नीचे दी गई तालिका में दिखाया गया है, एंड्रॉइड 11 के लिए लॉन्च कर्नेल android-4.14-stable , android-4.19-stable और android11-5.4 हैं।

चूँकि प्लेटफ़ॉर्म रिलीज़ को अपडेट करते समय आमतौर पर कर्नेल अपग्रेड की आवश्यकता नहीं होती है, जिन कर्नेल में प्लेटफ़ॉर्म रिलीज़ के लिए नवीनतम सुविधाएँ नहीं होती हैं उनका उपयोग अभी भी डिवाइस लॉन्च करने के लिए किया जा सकता है। इसलिए जो कर्नेल एंड्रॉइड 10 के लिए डिज़ाइन किए गए थे, जैसे कि android-4.19-q , प्लेटफ़ॉर्म रिलीज़ को एंड्रॉइड 11 में अपग्रेड करने के बाद भी डिवाइस पर उपयोग किया जा सकता है। एंड्रॉइड 12 से शुरू होने पर, संख्या को सीमित करने के लिए लॉन्च कर्नेल की तुलना में कम फीचर कर्नेल होंगे स्थिर KMI जिनका समर्थन किया जाना चाहिए।

एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ गुठली लॉन्च करें फ़ीचर गुठली
एंड्रॉइड 14 (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10 1
android14-6.1
android14-5.15
एंड्रॉइड 13 (2022) android13-5.15
android13-5.10
android12-5.10 1
android12-5.4 1
android11-5.4 1
android13-5.15
android13-5.10
एंड्रॉइड 12 (2021) android12-5.10
android12-5.4
android11-5.4 1
android-4.19-stable
android12-5.10
android12-5.4
एंड्रॉइड 11 (2020) android11-5.4
android-4.19-stable
android-4.14-stable
android11-5.4
android-4.19-stable
android-4.14-stable
एंड्रॉइड 10 (2019) android-4.19-q
android-4.14-q
android-4.9-q

android-4.19-q
android-4.14-q
android-4.9-q

1 यदि संबंधित बीएसपी को प्लेटफ़ॉर्म रिलीज़ के लिए अद्यतन किया गया है तो अतिरिक्त प्रतिबंध लागू हो सकते हैं। अधिक सामान्य शब्दों में, कर्नेल की एंड्रॉइड रिलीज़ संख्या लक्ष्य FCM संस्करण से अधिक या उसके बराबर होनी चाहिए। विवरण के लिए विक्रेता इंटरफ़ेस ऑब्जेक्ट - कर्नेल शाखाओं का मिलान देखें।

सामान्य कर्नेल पदानुक्रम

एंड्रॉइड-मेनलाइन से शाखा

सामान्य कर्नेल पदानुक्रम का शीर्ष स्तर चित्र 1 में दिखाया गया है।

एंड्रॉइड-मेनलाइन कर्नेल से सामान्य कर्नेल बनाना

चित्र 1. एंड्रॉइड-मेनलाइन कर्नेल से सामान्य कर्नेल बनाना

ध्यान दें कि नए एंड्रॉइड कॉमन कर्नेल android12-5.10 को 2020 में android-mainline से ब्रांच किया गया था। 2021 में, जब अगला LTS घोषित किया गया था, android13-5.15 को android-mainline से ब्रांच किया गया था।

जैसा कि चित्र 1 में दिखाया गया है, प्रत्येक कर्नेल संस्करण दो GKI कर्नेल का आधार है। उदाहरण के लिए, दो v5.4 कर्नेल android11-5.4 और android12-5.4 हैं, जो दोनों अपने संबंधित प्लेटफ़ॉर्म रिलीज़ के लिए फीचर कर्नेल हैं। 5.10 के लिए भी यही स्थिति होगी; LTS घोषित होने पर android12-5.10 बनाया गया था और Android 13 के लिए सुविधाओं के विकास की अनुमति देने के लिए android13-5.10 , स्प्रिंग 2021 में कर्नेल सुविधा पूर्ण मील के पत्थर पर android12-5.10 से शाखा करेगा।

ACK KMI शाखा जीवनचक्र

ACK KMI शाखा का जीवनचक्र नीचे चित्र 2 में दिखाया गया है।

5.10 ACK KMI शाखा जीवनचक्र

चित्र 2. 5.10 ACK KMI शाखा जीवनचक्र

विकास प्रक्रिया और शाखा जीवनचक्र को स्पष्ट करने के लिए, चित्र 2 5.10 के लिए ACK KMI शाखाओं पर केंद्रित है।

प्रत्येक ACK KMI शाखा प्रत्येक शाखा में अलग-अलग रंगों द्वारा चित्र 2 में दर्शाए गए तीन चरणों से गुजरती है। जैसा कि दिखाया गया है, एलटीएस को चरण की परवाह किए बिना नियमित रूप से विलय किया जाता है।

विकास का चरण

जब इसे बनाया जाता है, तो एक ACK KMI शाखा विकास चरण (चित्र 2 में डेव ) में प्रवेश करती है, और अगले एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ के लिए फीचर योगदान के लिए खुली होती है। चित्र 2 में, android12-5.10 तब बनाया गया था जब 5.10 को नए अपस्ट्रीम LTS कर्नेल के रूप में घोषित किया गया था। कर्नेल संस्करण के लिए दूसरी ACK KMI शाखा बाद के रिलीज़ के विकास की अनुमति देने के लिए पहले बनाई जा सकती है। चित्र 2 में, android13-5.10 तब बनाया जाता है जब android12-5.10 विकास चरण से बाहर हो जाता है।

स्थिरीकरण चरण

जब ACK KMI शाखा को सुविधा पूर्ण घोषित किया जाता है, तो यह स्थिरीकरण चरण में प्रवेश करती है, जिसे चित्र 2 में स्टैब के रूप में लेबल किया गया है। भागीदार सुविधाएँ और बग फिक्स अभी भी स्वीकार किए जाते हैं, लेकिन इंटरफ़ेस को प्रभावित करने वाले किसी भी परिवर्तन का पता लगाने के लिए KMI ट्रैकिंग सक्षम है। इस चरण में, KMI-ब्रेकिंग परिवर्तन स्वीकार किए जाते हैं, लेकिन KMI परिभाषा को आवश्यकतानुसार अद्यतन किया जाना चाहिए। KMI निगरानी पर विवरण के लिए GKI अवलोकन देखें।

KMI जमे हुए चरण

किसी नए प्लेटफ़ॉर्म रिलीज़ को AOSP पर धकेलने से पहले, ACK KMI शाखा फ़्रीज़ हो जाती है और शाखा के जीवनकाल तक फ़्रीज़ रहती है। इसका मतलब यह है कि कोई भी KMI-ब्रेकिंग परिवर्तन स्वीकार नहीं किया जाता है जब तक कि एक गंभीर सुरक्षा समस्या की पहचान नहीं की जाती है जिसे स्थिर KMI को प्रभावित किए बिना कम नहीं किया जा सकता है। KMI टूटने से बचने के लिए, यदि Android उपकरणों के लिए सुधार की आवश्यकता नहीं है, तो LTS से मर्ज किए गए कुछ पैच को संशोधित या हटाया जा सकता है।

जब ACK KMI शाखा फ़्रीज़ हो जाती है, तो बग फिक्स और साझेदार सुविधाएँ तब तक स्वीकार की जा सकती हैं जब तक कि मौजूदा KMI सामान्य कर्नेल टूटा न हो। KMI को नए निर्यातित प्रतीकों के साथ तब तक बढ़ाया जा सकता है जब तक कि वर्तमान KMI वाले इंटरफ़ेस प्रभावित न हों। जब KMI में नए इंटरफ़ेस जोड़े जाते हैं, तो वे तुरंत स्थिर हो जाते हैं और भविष्य में होने वाले परिवर्तनों से उन्हें तोड़ा नहीं जा सकता।

उदाहरण के लिए, KMI इंटरफ़ेस सामान्य कर्नेल द्वारा उपयोग की जाने वाली संरचना में फ़ील्ड जोड़ने वाले परिवर्तन की अनुमति नहीं है क्योंकि यह इंटरफ़ेस परिभाषा को बदल देता है:

struct foo {
  int original_field1;
  int original_field2;
  int new_field;  // Not allowed
};

int do_foo(struct foo &myarg)
{
  do_stuff(myarg);
}
EXPORT_SYMBOL_GPL(do_foo);

हालाँकि, एक नया फ़ंक्शन जोड़ना ठीक है:

struct foo2 {
  struct foo orig_foo;
  int new_field;
};

int do_foo2(struct foo2 &myarg)
{
  do_stuff2(myarg);
}
EXPORT_SYMBOL_GPL(do_foo2);

जीकेआई कर्नेल के जीवनकाल के लिए, यूजरस्पेस के साथ बैकवर्ड संगतता बनाए रखी जाती है ताकि डिवाइस को लॉन्च किए गए एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ के लिए कर्नेल को सुरक्षित रूप से उपयोग किया जा सके। पिछली रिलीज़ों के साथ निरंतर परीक्षण यह सुनिश्चित करता है कि अनुकूलता बनी रहे। तो चित्र 2 में, android12-5.10 कर्नेल का उपयोग Android 12 डिवाइस और Android 13 डिवाइस के लिए किया जा सकता है। क्योंकि एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ पिछले संस्करणों के साथ भी संगत है, android12-5.4 कर्नेल का उपयोग एंड्रॉइड 13 डिवाइसों के लिए लॉन्च या अपग्रेड के लिए किया जा सकता है।

जमे हुए चरण में प्रवेश करते समय, शाखा को KMI पीढ़ी संख्या वाले KMI संस्करण स्ट्रिंग के साथ git-टैग किया जाता है। उदाहरण के लिए, जब android11-5.4 फ़्रीज़ किया गया था, तो इसे KMI संस्करण स्ट्रिंग 5.4-android11-0 के साथ टैग किया गया था, जहाँ अनुगामी 0 KMI पीढ़ी संख्या है। यदि कोई सुरक्षा समस्या या अन्य घटना है जिसके लिए KMI-परिवर्तनशील पैच को स्वीकार करने की आवश्यकता होती है, तो KMI पीढ़ी संख्या बढ़ा दी जाती है और शाखा को पुनः टैग किया जाता है। उदाहरण के लिए, यदि ऐसा परिवर्तन android11-5.4 में स्वीकार किया जाता है, तो शाखा को नए KMI संस्करण, 5.4-android11-1 के साथ टैग किया जाएगा। वर्तमान KMI पीढ़ी को uname कमांड का उपयोग करके पाया जा सकता है:

$ uname -r
5.4.61-android11-0-00153-ga972f59040e4

प्लेटफ़ॉर्म रिलीज़ के बाद की संख्या KMI पीढ़ी (इस मामले में 0) है।

यदि KMI पीढ़ी बदलती है, तो कर्नेल पिछली KMI पीढ़ी के अनुरूप विक्रेता मॉड्यूल के साथ संगत नहीं है, इसलिए मॉड्यूल को कर्नेल के साथ सिंक्रनाइज़ रूप से फिर से बनाया और अद्यतन किया जाना चाहिए। KMI पीढ़ी परिवर्तन बहुत दुर्लभ होने की उम्मीद है।

गुठली के बीच अनुकूलता

समान एलटीएस परिवार में कर्नेल के बीच संगतता आवश्यकताएँ नए GKI कर्नेल के साथ बदल रही हैं।

जीकेआई गुठली

GKI कर्नेल कर्नेल संस्करण का समर्थन करने वाले सभी एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ के साथ बैकवर्ड संगतता बनाए रखता है। इसके अतिरिक्त, एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ पिछले रिलीज़ के GKI कर्नेल के साथ बैकवर्ड-संगत हैं। तो आप एंड्रॉइड 13 चलाने वाले उपकरणों पर एंड्रॉइड 12 के लिए विकसित android12-5.4 कर्नेल का सुरक्षित रूप से उपयोग कर सकते हैं। सभी समर्थित रिलीज के साथ जीकेआई कर्नेल के निरंतर वीटीएस और सीटीएस परीक्षण के माध्यम से संगतता सत्यापित की जाती है।

KMI स्थिर है ताकि विक्रेता छवि में कर्नेल मॉड्यूल के पुनर्निर्माण की आवश्यकता के बिना कर्नेल को अद्यतन किया जा सके।

विभिन्न GKI कर्नेल के बीच KMI संगतता बनाए नहीं रखी जाती है। इसलिए, उदाहरण के लिए, सभी मॉड्यूल के पुनर्निर्माण के बिना android12-5.10 को android13-5.10 कर्नेल से प्रतिस्थापित नहीं किया जा सकता है।

GKI कर्नेल केवल उनके प्रारंभिक और बाद के रिलीज़ के लिए समर्थित हैं। वे पुराने रिलीज़ के लिए समर्थित नहीं हैं। इसलिए android13-5.10 कर्नेल Android 12 उपकरणों पर समर्थित नहीं है।

विरासत गुठली

लेगेसी डेज़र्ट कर्नेल ( *-q और *-stable ) सभी एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ में बैकवर्ड संगत नहीं हैं, लेकिन पिछले दो एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ से कर्नेल अपग्रेड के लिए समर्थित हैं। इसलिए, android-4.19-q पर आधारित कर्नेल का उपयोग करके एंड्रॉइड 10 के साथ लॉन्च किया गया डिवाइस या तो एंड्रॉइड 2020 में अपग्रेड करते समय android-4.19-q कर्नेल का उपयोग जारी रख सकता है, या android-4.19-stable का समर्थन करने के लिए विक्रेता-विशिष्ट कोड को अपडेट कर सकता है। .

अनुकूलता मैट्रिक्स

यह तालिका प्रत्येक एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ के साथ समर्थित और परीक्षण किए गए कर्नेल संस्करणों को दिखाती है।

एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ उन्नयन के लिए समर्थित कर्नेल लॉन्च के लिए समर्थित कर्नेल
एंड्रॉइड 14 (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.14-stable
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
एंड्रॉइड 13 (2022) android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.9-q (EOL)
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
एंड्रॉइड 12 (2021) android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.14-p (EOL)
android-4.9-q (EOL)
android-4.9-p (EOL)
android-4.9-o (EOL)
android-4.19-stable
android11-5.4
android12-5.4
android12-5.10
एंड्रॉइड 11 (2020) android11-5.4
android-4.19-stable
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.14-p (EOL)
android-4.9-q (EOL)
android-4.9-p (EOL)
android-4.9-o (EOL)
android-4.4-p (EOL)
android-4.4-o (EOL)
android11-5.4
android-4.19-stable
android-4.14-stable
एंड्रॉइड 10 (2019) android-4.14-stable
android-4.14-p (EOL)
android-4.9-p (EOL)
android-4.9-o (EOL)
android-4.4-p (EOL)
android-4.4-o (EOL)
android-3.18 (EOL)
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.9-q (EOL)

जीवनकाल और सुरक्षा पैच का समर्थन करें

एंड्रॉइड सामान्य कर्नेल तब तक समर्थित हैं जब तक कि संबंधित एलटीएस कर्नेल या एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ समर्थित नहीं है। जबकि कर्नेल समर्थित है, इसे अपस्ट्रीम से एलटीएस मर्ज और एंड्रॉइड-विशिष्ट कोड के लिए बग फिक्स प्राप्त होते रहते हैं। इन सुधारों में मासिक एंड्रॉइड सुरक्षा बुलेटिन में उद्धृत सभी कर्नेल सुरक्षा पैच शामिल हैं जो एंड्रॉइड सामान्य कर्नेल के लिए प्रासंगिक हैं।

भागीदार आश्वस्त हो सकते हैं कि एंड्रॉइड सामान्य कर्नेल से नियमित रूप से विलय करके, उन्हें सभी संभव कर्नेल सुरक्षा पैच मिल रहे हैं।

सामान्य कर्नेल परीक्षण

विक्रेताओं द्वारा डाउनस्ट्रीम परीक्षण के अलावा सामान्य कर्नेल का परीक्षण कई सीआई प्रणालियों के साथ किया जाता है।

लिनक्स कर्नेल कार्यात्मक परीक्षण

लिनक्स कर्नेल फंक्शनल टेस्ट (एलकेएफटी) परीक्षण भौतिक आर्म32 और आर्म64 उपकरणों के सेट पर केसेल्फटेस्ट, एलटीपी, वीटीएस और सीटीएस सहित विभिन्न परीक्षण सूट शुरू करते हैं। हाल के परीक्षण परिणाम यहां पाए जा सकते हैं।

कर्नेलसीआई परीक्षण

जब भी कोई नया पैच किसी सामान्य कर्नेल शाखा के लिए प्रतिबद्ध होता है तो कर्नेलसीआई बिल्ड-एंड-बूट परीक्षण शुरू किए जाते हैं। कई सौ बिल्ड कॉन्फ़िगरेशन का परीक्षण किया जाता है और विभिन्न बोर्डों पर बूट किया जाता है। एंड्रॉइड कर्नेल के लिए हाल के परिणाम यहां पाए जा सकते हैं।

एंड्रॉइड प्रीसबमिट और पोस्टसबमिट परीक्षण

एंड्रॉइड सामान्य कर्नेल में विफलताओं को पेश होने से रोकने के लिए प्रीसबमिट परीक्षणों का उपयोग किया जाता है। परीक्षण परिणाम सारांश एंड्रॉइड सामान्य कर्नेल गेरिट में कोड परिवर्तन के 'चेक' टैब में पाया जा सकता है।

जब नए पैच ci.android.com में एंड्रॉइड सामान्य कर्नेल शाखा के लिए प्रतिबद्ध होते हैं, तो एंड्रॉइड पोस्टसबमिट परीक्षण एंड्रॉइड सामान्य कर्नेल शाखाओं में नए प्रकाशित बिल्ड पर किया जाता है। ci.android.com में आंशिक शाखा नाम के रूप में aosp_kernel दर्ज करके, आप उपलब्ध परिणामों के साथ कर्नेल शाखाओं की एक सूची देखते हैं। उदाहरण के लिए, android-mainline के परिणाम यहां पाए जा सकते हैं। किसी विशेष बिल्ड पर क्लिक करने पर, आपको Test Results टैब में परीक्षण स्थिति मिलेगी।

एंड्रॉइड प्लेटफ़ॉर्म सोर्स ट्री में टेस्ट ग्रुप kernel-presubmit के साथ टेस्ट-मैपिंग द्वारा परिभाषित परीक्षण एंड्रॉइड कर्नेल शाखाओं के लिए प्रीसबमिट के रूप में चलाए जाएंगे। उदाहरण के लिए test/vts/tests/kernel_proc_file_api_test/TEST_MAPPING में निम्न कॉन्फ़िगरेशन एंड्रॉइड कॉमन कर्नेल कोड चेक-इन पर प्रीस्बुमिट टेस्ट के रूप में vts_kernel_proc_file_api_test को सक्षम करेगा।

{
  "kernel-presubmit": [
    {
      "name": "vts_kernel_proc_file_api_test"
    }
  ]
}

0-दिवसीय परीक्षण

जब नए पैच प्रतिबद्ध होते हैं तो 0-दिवसीय परीक्षण सभी एंड्रॉइड सामान्य कर्नेल शाखाओं पर पैच-दर-पैच परीक्षण करता है। विभिन्न बूट, कार्यात्मक और प्रदर्शन परीक्षण चलाए जाते हैं। सार्वजनिक समूह क्रॉस-कर्नेल-बिल्डरिपोर्ट में शामिल हों

टेस्ट मैट्रिक्स

एंड्रॉइड सामान्य कर्नेल एंड्रॉइड प्लेटफ़ॉर्म रिलीज़ टेस्ट सूट
मुख्य 14 13 12 11 10 एलकेएफटी कर्नेलसीआई प्री सबमिट पोस्ट सबमिट करें 0-डे
android-mainline
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.19-stable
android-4.14-stable

एंड्रॉइड सामान्य कर्नेल में योगदान करें

आम तौर पर, फीचर डेवलपमेंट मेनलाइन लिनक्स पर किया जाना चाहिए, न कि एंड्रॉइड के सामान्य कर्नेल पर। अपस्ट्रीम विकास को दृढ़ता से प्रोत्साहित किया जाता है, और वहां विकास को स्वीकार किए जाने के बाद, इसे आवश्यकतानुसार विशिष्ट एसीके शाखा में आसानी से वापस भेजा जा सकता है। एंड्रॉइड कर्नेल टीम एंड्रॉइड पारिस्थितिकी तंत्र के लाभ के लिए अपस्ट्रीमिंग प्रयासों का समर्थन करने में प्रसन्न है।

गेरिट को पैच सबमिट करें और इन योगदान दिशानिर्देशों का पालन करें।