इस पेज पर, GBL बाइनरी को डिप्लॉय करने का तरीका बताया गया है.
बूट फ़र्मवेयर से जुड़ी ज़रूरी शर्तें
GBL का इस्तेमाल करने के लिए, बूट फ़र्मवेयर को ये शर्तें पूरी करनी होंगी:
UEFI के साथ काम करना. फ़र्मवेयर में ज़रूरी UEFI प्रोटोकॉल लागू होने चाहिए और उनका इस्तेमाल किया जाना चाहिए. फ़र्मवेयर में, तय किए गए यूईएफ़आई प्रोटोकॉल का इस्तेमाल करके, वेंडर के हिसाब से एक्सटेंशन की अनुमति भी होनी चाहिए.
सुरक्षा. फ़र्मवेयर में Android के वेरिफ़ाइड बूट (एवीबी) के सभी पहलुओं को लागू करना ज़रूरी है. इससे यह पक्का होता है कि सिर्फ़ पुष्टि की गई इमेज लोड की जाएं.
बूट मोड. बाइनरी, अलग-अलग बूट मोड को हैंडल कर सकती होनी चाहिए. जैसे, सामान्य बूट, रिकवरी बूट, और फ़ास्टबूट.
डाइनैमिक पार्टिशनिंग. बूट फ़र्मवेयर में स्लॉट चुनने का लॉजिक लागू करना ज़रूरी है, ताकि वह सही A/B बूट स्लॉट को पढ़ सके. साथ ही, सुपर में डाइनैमिक पार्टीशन और उपयोगकर्ता डेटा के साथ काम कर सके.
ओएस कॉन्फ़िगरेशन. फ़र्मवेयर में, डिवाइस को बूट करने के लिए ज़रूरी OEM कस्टमाइज़ेशन के साथ, कर्नेल कमांड लाइन, डिवाइस ट्री (डीटीबी), और bootconfig में बदलाव करने की सुविधा होनी चाहिए.
सुरक्षित वर्चुअल मशीन लोड हो रही है. सुरक्षित वर्चुअल मशीनों की मौजूदगी में, बाइनरी को Android कर्नेल से पहले, पहले से पुष्टि किए गए सुरक्षित वर्चुअल मशीन फ़र्मवेयर को सही तरीके से लोड करना चाहिए. ज़्यादा जानकारी के लिए, Microdroid बूट क्रम देखें.
मेमोरी मैनेज करना. बूट फ़र्मवेयर में, UEFI मेमोरी ऐलोकेशन एपीआई का इस्तेमाल किया जाना चाहिए.
साथ काम करने की सुविधा और पुराने सिस्टम के साथ काम करने की सुविधा. फ़र्मवेयर, अलग-अलग वेंडर और SoC वाले डिवाइसों पर काम करना चाहिए. साथ ही, यह उस Android वर्शन के साथ काम करना चाहिए जिस पर इसे डिवाइस में इंस्टॉल किया गया है.
बूट फ़र्मवेयर के लिए सहायता
पिछले सेक्शन में दी गई ज़रूरी शर्तों को पूरा करने के लिए, ये बदलाव किए गए हैं. इनके बाद, GBF के साथ ये UEFI फ़र्मवेयर काम करते हैं:
- 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 ...
यह
cvd start
कमांड, Android को सीधे बूट करने के बजाय, EFI ऐप्लिकेशन का इस्तेमाल करके Android को बूट करता है.
गड़बड़ियों की शिकायत करना और बूटलोडर टीम से संपर्क करना
GBL के लिए किसी गड़बड़ी की शिकायत करने के लिए, Buganizer में Android Generic Bootloader कॉम्पोनेंट पर जाएं.
अगर आपका कोई सवाल है, तो GBL टीम से संपर्क करें. इसके लिए, android-gbl@google.com
पर ईमेल भेजें.