इस पेज पर, GBL बाइनरी को डिप्लॉय करने का तरीका बताया गया है.
बूट फ़र्मवेयर की ज़रूरी शर्तें
GBL का इस्तेमाल करने के लिए, बूट फ़र्मवेयर को ये ज़रूरी शर्तें पूरी करनी होंगी:
यूईएफ़आई के नियमों का पालन. फ़र्मवेयर को ज़रूरी UEFI प्रोटोकॉल लागू करने और उनका इस्तेमाल करने की अनुमति होनी चाहिए. फ़र्मवेयर में, वेंडर के हिसाब से एक्सटेंशन की अनुमति भी होनी चाहिए. इसके लिए, यूईएफ़आई प्रोटोकॉल का इस्तेमाल किया जाता है.
सुरक्षा. फ़र्मवेयर में Android Verified Boot (AVB) के सभी पहलुओं को लागू किया जाना चाहिए. इससे यह पक्का किया जा सकेगा कि सिर्फ़ पुष्टि की गई इमेज लोड हों.
बूट मोड. बाइनरी में, बूट करने के अलग-अलग मोड को हैंडल करने की सुविधा होनी चाहिए. जैसे, नॉर्मल बूट, रिकवरी बूट, और फ़ास्टबूट.
डाइनैमिक पार्टिशनिंग. बूट फ़र्मवेयर में स्लॉट चुनने की सुविधा लागू होनी चाहिए, ताकि यह सही A/B बूट स्लॉट को पढ़ सके. साथ ही, यह सुपर में मौजूद डाइनैमिक पार्टीशन और यूज़रडेटा के साथ काम कर सके.
ओएस कॉन्फ़िगरेशन. फ़र्मवेयर में, कर्नल कमांड लाइन, डिवाइस ट्री (डीटीबी), और बूटकॉन्फ़िग में बदलाव करने की सुविधा होनी चाहिए. साथ ही, इसमें ओईएम के हिसाब से किए गए बदलाव भी शामिल होने चाहिए, ताकि डिवाइस को बूट किया जा सके.
Protected VM लोड हो रहा है. सुरक्षित वीएम मौजूद होने पर, बाइनरी को Android कर्नल से पहले, पुष्टि किए गए सुरक्षित वीएम फ़र्मवेयर को सही तरीके से लोड करना चाहिए. ज़्यादा जानकारी के लिए, Microdroid का बूट सीक्वेंस देखें.
मेमोरी मैनेज करना. बूट फ़र्मवेयर में, यूईएफ़आई मेमोरी ऐलोकेशन एपीआई काम करना चाहिए.
कंपैटिबिलिटी और पुराने सिस्टम के साथ काम करने की सुविधा. फ़र्मवेयर, अलग-अलग वेंडर और एसओसी वाले डिवाइसों पर काम करना चाहिए. साथ ही, यह Android के पिछले वर्शन के साथ काम करना चाहिए.
बूट फ़र्मवेयर सपोर्ट
पिछले सेक्शन में बताई गई ज़रूरी शर्तों को पूरा करने के लिए, यहां दिए गए UEFI फ़र्मवेयर इंप्लीमेंटेशन, GBF के साथ काम करते हैं:
- EDK2 (Tianocore). EDK2, UEFI को लागू करने वाला एक लोकप्रिय ओपन-सोर्स है. EDK2 पर आधारित बूटलोडर के लिए, GBL की सुविधा ज़रूरी है. हालांकि, UEFI की सुविधा पहले से मौजूद है.
- U-Boot. यह एक फ़्लेक्सिबल और बड़े पैमाने पर इस्तेमाल किया जाने वाला ओपन-सोर्स बूटलोडर प्रोजेक्ट है. यह GBL के इस्तेमाल के लिए, UEFI के साथ काम करने की सुविधा हासिल कर रहा है.
- LittleKernel (LK). यह एक ओपन-सोर्स बूटलोडर है. इसका इस्तेमाल कुछ वेंडर करते हैं.
GBL चलाना
आपके पास GBL का पहले से बना बाइनरी फ़ाइल पाने का विकल्प होता है, ताकि उसे चलाया जा सके. इसके अलावा, आपके पास अपनी बाइनरी फ़ाइल बनाने और उसे चलाने का विकल्प भी होता है.
GBL बाइनरी हासिल करना और उसे चलाना
GBL को एक ही EFI ऐप्लिकेशन बाइनरी के तौर पर डिस्ट्रिब्यूट किया जाता है. Android के स्टैंडर्ड अपडेट सिस्टम का इस्तेमाल करके, इस बाइनरी को डिवाइस के बेस फ़र्मवेयर से अलग अपडेट किया जा सकता है.
Android 16 से, अगर आपको ARM-64 चिपसेट पर आधारित कोई डिवाइस शिप करना है, तो हमारा सुझाव है कि आप GBL के Google के हस्ताक्षर वाले नए वर्शन को डिप्लॉय करें और उसे अपनी बूट चेन में इंटिग्रेट करें.
GBL बनाना और उसे चलाना
GBL को बनाने और चलाने के लिए:
पुष्टि करें कि आपके पास repo टूल और Bazel बूटस्ट्रैप इंस्टॉल किया गया हो:
sudo apt install repo bazel-bootstrap
uefi-gbl-mainline
मेनिफ़ेस्ट फ़ाइल का इस्तेमाल करके, सोर्स कंट्रोल के लिए अपनी मौजूदा डायरेक्ट्री शुरू करें:repo init -u https://android.googlesource.com/kernel/manifest -b uefi-gbl-mainline repo sync -j16
EFI ऐप्लिकेशन बनाएं:
./tools/bazel run //bootable/libbootloader:gbl_efi_dist --extra_toolchains=@gbl//toolchain:all
Cuttlefish में EFI ऐप्लिकेशन चलाएं:
cvd start --android_efi_loader=path_to_the_EFI_app ...
Android को सीधे बूट करने के बजाय, यह
cvd start
कमांड Android को बूट करने के लिए EFI ऐप्लिकेशन का इस्तेमाल करती है.
गड़बड़ियों की रिपोर्ट करना और बूटलोडर टीम से संपर्क करना
GBL में मौजूद किसी गड़बड़ी की शिकायत करने के लिए, Buganizer में Android Generic Bootloader कॉम्पोनेंट पर जाएं.
अगर आपका कोई सवाल है, तो GBL टीम से संपर्क करें. इसके लिए, android-gbl@google.com
पर ईमेल भेजें.