बूट समय प्रबंधित करें

बूट प्रक्रिया बूट ROM से शुरू होने वाली क्रियाओं की एक श्रृंखला है, जिसके बाद बूटलोडर, कर्नेल, Init , Zygote और सिस्टम सर्वर (बोल्ड एंड्रॉइड-विशिष्ट बूट प्रक्रिया को इंगित करता है) होता है। ऑटोमोटिव-विशिष्ट बूट प्रक्रिया में, रियरव्यू कैमरा (आरवीसी) जैसी प्रारंभिक सेवाएं कर्नेल बूट के दौरान शुरू होनी चाहिए।

आदेश अवयव एंड्रॉयड एंड्रॉइड ऑटोमोटिव
1 बूट रॉम बूट लोडर के पहले चरण को आंतरिक रैम में लोड करता है।
2 बूटलोडर यादें दर्ज करता है, सुरक्षा के लिए सत्यापन करता है, और कर्नेल लोड करता है।
3 गुठली इंटरप्ट कंट्रोलर, मेमोरी सुरक्षा, कैश और शेड्यूलिंग सेट करता है; उपयोगकर्ता स्थान प्रक्रियाओं को लॉन्च करता है। रियरव्यू कैमरा (आरवीसी) प्रक्रिया कर्नेल बूट में जल्दी शुरू होती है। प्रक्रिया पूरी होने के बाद, वीएमसीयू से जीपीआईओ आरवीसी को डिस्प्ले पर दिखाने के लिए ट्रिगर करता है।
4 आरंभिक प्रक्रिया init.rc स्क्रिप्ट को पार्स करता है, फ़ाइल सिस्टम को माउंट करता है, Zygote को लॉन्च करता है, सिस्टम प्रक्रिया को लॉन्च करता है। वाहन एचएएल (वीएचएएल) मुख्य सेवाओं के हिस्से के रूप में प्रारंभिक चरण के दौरान शुरू होता है। सेवा प्रबंधक के आधार पर पहले की स्थिति में ले जाया जा सकता है; साझा पुस्तकालयों (जैसे init) पर निर्भरता हटाने की आवश्यकता है।
5 युग्मनज एंड्रॉइड ऑब्जेक्ट के लिए जावा रनटाइम और इनिट मेमोरी सेट करता है।
6 सिस्टम सर्वर सिस्टम में पहला जावा घटक, कोर एंड्रॉइड सेवाएं शुरू करता है। सभी सिस्टम सेवाएँ प्रारंभ होने के बाद कारसेवा प्रारंभ होती है।

बूट समय का अनुकूलन करें

अपने सिस्टम में बूट समय को बेहतर बनाने के लिए, निम्नलिखित दिशानिर्देशों का उपयोग करें:

  • कर्नेल. केवल उपयोग में आने वाले मॉड्यूल को लोड करें और केवल उपयोग में आने वाले हार्डवेयर घटकों को आरंभ करें।

  • init.rc

    • ब्लॉकिंग ऑपरेशंस पर नजर रखें (कमांड इनवोकेशन की तुलना में सेवा)।
    • जो उपयोग किया गया है उसे ही प्रारंभ करें।
    • सेवाओं के लिए सही प्राथमिकता निर्धारित करना।
  • युग्मनज. कक्षा प्रीलोडिंग अनुकूलन (लोड करने के लिए कक्षाओं की सूची निर्दिष्ट करें)।

  • पैकेज प्रबंधक

  • सिस्टम सर्वर. केवल उपयोग की गई सिस्टम सेवाएँ प्रारंभ करें।

अनुकूलन में सहायता के लिए, Google निम्नलिखित टूल प्रदान करता है:

  • लॉगकैट और डीएमईएसजी लॉग का विश्लेषण करने के लिए packages/services/Car/tools/bootanalyze/bootanalyze.py उपयोग करें।

  • बूट के दौरान प्रक्रियाओं के लिए I/O रिकॉर्ड करने के लिए packages/services/Car/tools/bootio/ उपयोग करें। आपको कर्नेल को विशिष्ट फ़्लैग के साथ संकलित करना होगा ( README.md फ़ाइल देखें)।

सेवाएँ शीघ्र प्रारंभ करें

बूट क्रम में, कुछ सेवाएँ एंड्रॉइड के बूट होने से पहले शुरू हो सकती हैं।

रियर व्यू कैमरा

रियरव्यू कैमरा (आरवीसी) को कर्नेल में नियंत्रित किया जाना चाहिए। जब वाहन रिवर्स में शिफ्ट होता है तो वीएमसीयू मूल कर्नेल प्रक्रिया को सूचित करता है, जिसके बाद मूल कर्नेल प्रक्रिया डिस्प्ले पर आरवीसी छवि प्रदर्शित करती है। वाहन HAL hardware/libhardware/include/hardware/vehicle_camera.h उपयोग करके RVC को नियंत्रित कर सकता है।

वाहन एचएएल (वीएचएएल)

कुछ प्रणालियों को उपयोगकर्ता-स्पेस सेवा शुरू होने की प्रतीक्षा करते समय बूट अनुक्रम के शुरुआती चरणों के दौरान CAN डेटा (उदाहरण के लिए, वाहन की गति, गियर स्थिति) को पढ़ने और बफर करने की आवश्यकता हो सकती है (जो बाद में बूट अनुक्रम में होता है)। इस परिदृश्य के लिए VNS और HAL और CAN नियंत्रकों को बहुत जल्दी शुरू करने की आवश्यकता होती है, आमतौर पर कुछ सेकंड के भीतर।

  • जो सिस्टम जल्दी से /system माउंट कर सकते हैं वे सर्विस मैनेजर और फिर वीएनएस को जल्दी लॉन्च कर सकते हैं।

  • जो सिस्टम /system जल्दी से माउंट नहीं हो सकता, उसे सेवा प्रबंधक और वीएनएस दोनों को कर्नेल बूट छवि पर ले जाना होगा और सभी आश्रित पुस्तकालयों को स्थिर रूप से लिंक करना होगा।