ज़्यादातर Android डिवाइसों में डिफ़ॉल्ट रूप से लॉक किया गया बूटलोडर होता है. इसका मतलब है कि उपयोगकर्ता, बूटलोडर या डिवाइस के पार्टिशन को फ़्लैश नहीं कर सकते. ज़रूरत पड़ने पर, आपके पास और डिवाइस के उन उपयोगकर्ताओं के पास जिन्होंने 'डेवलपर के लिए सेटिंग' चालू की है, नई इमेज फ़्लैश करने के लिए बूटलोडर को अनलॉक करने का विकल्प होता है.
बूटलोडर का इस्तेमाल करें
fastboot
निर्देश देने के लिए, आपको बूटलोडर मोड में होना होगा. ऐसा करने का एक तरीका यह है कि adb कमांड adb reboot bootloader
भेजा जाए. कुछ फ़ोन में
डिवाइस को चालू करते समय, एक 'की कॉम्बिनेशन' (आम तौर पर वॉल्यूम कम) को दबाकर, बूटलोडर में
बूटलोडर को फिर से चालू करने की सुविधा भी मिलती है.
बूटलोडर अनलॉक करना
बूटलोडर मोड में आने के बाद, बूटलोडर को अनलॉक करने और पार्टिशन को फिर से फ़्लैश करने की सुविधा चालू करने के लिए, डिवाइस पर fastboot flashing unlock
निर्देश चलाएं. सेटिंग
के बाद, सभी फिर से चालू होने पर अनलॉक मोड बना रहता है.
डिवाइसों को fastboot flashing unlock
निर्देश तब तक अस्वीकार करना चाहिए, जब तक कि get_unlock_ability
को 1
पर सेट न किया गया हो. अगर 0
पर सेट किया जाता है, तो उपयोगकर्ता को होम स्क्रीन पर बूट करने की ज़रूरत होगी. इसके बाद, सेटिंग > सिस्टम > डेवलपर के लिए सेटिंग और टूल मेन्यू खोलें और OEM अनलॉक करना विकल्प को चालू करें (इससे get_unlock_ability
को 1
पर सेट कर दिया जाता है). सेटिंग के बाद, फिर से चालू करने और फ़ैक्ट्री डेटा रीसेट करने पर यह मोड बना रहता है.
जब fastboot flashing unlock
निर्देश भेजा जाता है, तो डिवाइस को उपयोगकर्ताओं से
यह चेतावनी देने के लिए कहना चाहिए कि उन्हें गैर-आधिकारिक इमेज में समस्या आ सकती है.
उपयोगकर्ता के चेतावनी स्वीकार करने के बाद, डिवाइस को फ़ैक्ट्री डेटा रीसेट करना चाहिए, ताकि बिना अनुमति के डेटा ऐक्सेस न किया जा सके. बूटलोडर को डिवाइस को रीसेट करना चाहिए, भले ही वह उसे ठीक से फ़ॉर्मैट न कर पाए. रीसेट करने के बाद ही,
परसिस्टेंट फ़्लैग को सेट किया जा सकता है, ताकि डिवाइस को फिर से फ़्लैश किया जा सके.
fastboot flashing unlock
प्रोसेस के दौरान, पहले से ओवरराइट नहीं की गई सभी रैम को रीसेट किया जाना चाहिए. इससे, पिछले बूट से बचे हुए रैम कॉन्टेंट को पढ़ने वाले हमलों से बचा जा सकता है. इसी तरह, अनलॉक किए हुए डिवाइसों को हर बूट पर रैम साफ़ कर देनी चाहिए (जब तक कि इससे कोई अमान्य देरी न हो), लेकिन कर्नेल के ramoops
के लिए इस्तेमाल किए गए क्षेत्र को छोड़ देना चाहिए.
बूटलोडर को लॉक करें
बूटलोडर को लॉक करने और डिवाइस को रीसेट करने के लिए, डिवाइस पर fastboot flashing lock
कमांड चलाएं. खुदरा दुकानदारों के लिए डिवाइसों को डिलीवर करते समय, उन्हें get_unlock_ability
लौटाए जाने वाले 0
के तौर पर, लॉक किया जाना चाहिए. इससे यह पक्का किया जा सकता है कि हमलावर, नया सिस्टम या बूट इमेज इंस्टॉल करके, डिवाइस को नुकसान न पहुंचा सकें.
लॉक और अनलॉक करने की प्रॉपर्टी सेट करना
बिल्ड के समय ro.oem_unlock_supported
प्रॉपर्टी इस आधार पर सेट होनी चाहिए कि डिवाइस में फ़्लैशिंग अनलॉक की सुविधा है या नहीं.
- अगर डिवाइस पर फ़्लैश करके अनलॉक करने की सुविधा काम करती है, तो
ro.oem_unlock_supported
को1
पर सेट करें. - अगर डिवाइस पर फ़्लैश करके अनलॉक करने की सुविधा काम नहीं करती, तो
ro.oem_unlock_supported
को0
पर सेट करें.
अगर डिवाइस पर फ़्लैशिंग अनलॉक की सुविधा काम करती है, तो बूटलोडर को लॉक की स्थिति दिखानी चाहिए. इसके लिए, अगर डिवाइस लॉक है, तो कर्नेल कमांड लाइन वैरिएबल androidboot.flash.locked
को 1
पर सेट करें. अगर डिवाइस अनलॉक है, तो 0
पर सेट करें. इस वैरिएबल को Android 12 में, kernel कमांड लाइन के बजाय bootconfig में सेट करना होगा.
dm-verity की सुविधा वाले डिवाइसों के लिए, ro.boot.flash.locked
की वैल्यू को 0
पर सेट करने के लिए ro.boot.verifiedbootstate
का इस्तेमाल करें. इससे, वेरिफ़ाइड बूट की स्थिति ऑरेंज होने पर, बूटलोडर अनलॉक हो जाता है.
अहम सेक्शन को सुरक्षित करना
डिवाइसों में ज़रूरी सेक्शन को लॉक और अनलॉक करने की सुविधा होनी चाहिए. ये सेक्शन, बूटलोडर में डिवाइस को चालू करने के लिए ज़रूरी चीज़ों के तौर पर तय होते हैं. ऐसे सेक्शन में फ़्यूज़, सेंसर हब के लिए वर्चुअल पार्टीशन, पहले चरण का बूटलोडर वगैरह शामिल हो सकते हैं. अहम सेक्शन को लॉक करने के लिए, आपको किसी ऐसे तरीके का इस्तेमाल करना होगा जिससे डिवाइस पर चल रहे कोड (कर्नल, रिकवरी इमेज, ओटीए कोड वगैरह) को किसी अहम सेक्शन में जान-बूझकर बदलाव करने से रोका जा सके. अगर डिवाइस लॉक की गंभीर स्थिति में है, तो ओटीए से ज़रूरी सेक्शन अपडेट नहीं होने चाहिए.
डिवाइस को लॉक से अनलॉक करने के लिए, डिवाइस को मैन्युअल तरीके से इस्तेमाल करना ज़रूरी है. यह इंटरैक्शन, fastboot flashing unlock
कमांड चलाने से दिखने वाले इफ़ेक्ट की तरह होता है. हालांकि, इसके लिए उपयोगकर्ता को डिवाइस पर एक बटन दबाना पड़ता है. डिवाइसों को प्रोग्राम के ज़रिए, lock critical
से unlock critical
पर जाने की अनुमति नहीं मिलनी चाहिए. इसके लिए, डिवाइसों को मैन्युअल तरीके से इस्तेमाल करना ज़रूरी है. साथ ही, डिवाइसों को unlock critical
स्थिति में शिप नहीं किया जाना चाहिए.