बूटलोडर को लॉक और अनलॉक करें

डिफ़ॉल्ट रूप से, ज़्यादातर Android डिवाइस लॉक किए गए बूटलोडर के साथ आते हैं. इसका मतलब है कि उपयोगकर्ता, बूटलोडर या डिवाइस के पार्टिशन को फ़्लैश नहीं कर सकते. ज़रूरत पड़ने पर, आप (और ऐसे डिवाइस के उपयोगकर्ता जिन्होंने डेवलपर के लिए सेटिंग और टूल चालू किए हैं) बूटलोडर को अनलॉक करके नई इमेज फ़्लैश कर सकते हैं.

बूटलोडर का इस्तेमाल करें

fastboot निर्देश जारी करने के लिए, आपका बूटलोडर मोड में होना ज़रूरी है. ऐसा करने का एक तरीका यह है कि adb कमांड adb reboot bootloader भेजें. कुछ फ़ोन में डिवाइस को चालू करते समय, एक 'की कॉम्बिनेशन' (आम तौर पर वॉल्यूम कम) को दबाकर, बूटलोडर में बूटलोडर को फिर से चालू करने की सुविधा भी मिलती है.

बूटलोडर को अनलॉक करें

बूटलोडर मोड में आने के बाद, बूटलोडर को अनलॉक करने और पार्टिशन को फिर से फ़्लैश करने की सुविधा चालू करने के लिए, डिवाइस पर fastboot flashing unlock निर्देश चलाएं. सेटिंग के बाद, सभी फिर से चालू होने पर अनलॉक मोड बना रहता है.

जब तक get_unlock_ability को 1 पर सेट नहीं किया जाता, तब तक डिवाइसों को fastboot flashing unlock निर्देश को अस्वीकार करना चाहिए. अगर 0 पर सेट किया जाता है, तो उपयोगकर्ता को होम स्क्रीन पर बूट करने की ज़रूरत होगी. इसके बाद, सेटिंग > सिस्टम > डेवलपर के लिए सेटिंग और टूल मेन्यू खोलें और OEM अनलॉक करना विकल्प को चालू करें (इससे get_unlock_ability को 1 पर सेट किया जाता है). सेटिंग के बाद, फिर से चालू करने और फ़ैक्ट्री डेटा रीसेट करने पर यह मोड बना रहता है.

जब fastboot flashing unlock निर्देश भेजा जाता है, तो डिवाइस को उपयोगकर्ताओं से यह चेतावनी देने के लिए कहना चाहिए कि उन्हें गैर-आधिकारिक इमेज में समस्या आ सकती है. जब उपयोगकर्ता चेतावनी स्वीकार कर लेता है, तब डिवाइस को बिना अनुमति वाले डेटा ऐक्सेस को रोकने के लिए फ़ैक्ट्री डेटा रीसेट करना चाहिए. बूटलोडर को डिवाइस को रीसेट कर देना चाहिए, भले ही वह डिवाइस को सही तरीके से फिर से फ़ॉर्मैट न कर पाए. रीसेट करने के बाद ही, परसिस्टेंट फ़्लैग को सेट किया जा सकता है, ताकि डिवाइस को फिर से फ़्लैश किया जा सके.

जिन रैम को पहले से बदला नहीं गया है उन्हें fastboot flashing unlock की प्रोसेस के दौरान रीसेट किया जाना चाहिए. इस सेटिंग की मदद से, ऐसे हमलों को रोका जा सकता है जो पिछले बूट की रैम से जुड़े कॉन्टेंट को पढ़ते हैं. इसी तरह, अनलॉक किए हुए डिवाइसों को हर बूट पर रैम साफ़ कर देनी चाहिए (जब तक कि इससे कोई अमान्य देरी न हो), लेकिन कर्नेल के ramoops के लिए इस्तेमाल किए गए क्षेत्र को छोड़ देना चाहिए.

बूटलोडर को लॉक करें

बूटलोडर को लॉक करने और डिवाइस को रीसेट करने के लिए, डिवाइस पर fastboot flashing lock कमांड चलाएं. खुदरा कारोबार के लिए डिज़ाइन किए गए डिवाइसों को लॉक की गई स्थिति में शिप किया जाना चाहिए (0 को get_unlock_ability के साथ), ताकि यह पक्का हो सके कि हमलावर कोई नया सिस्टम या बूट इमेज इंस्टॉल करके डिवाइस के साथ छेड़छाड़ न कर सकें.

लॉक और अनलॉक करने के लिए प्रॉपर्टी सेट करें

बिल्ड के समय ro.oem_unlock_supported प्रॉपर्टी इस हिसाब से सेट होनी चाहिए कि डिवाइस में फ़्लैश होने की सुविधा काम करती है या नहीं.

  • अगर डिवाइस फ़्लैश के साथ अनलॉक करने की सुविधा देता है, तो ro.oem_unlock_supported को 1 पर सेट करें.
  • अगर डिवाइस में फ़्लैश करके अनलॉक करने की सुविधा काम नहीं करती, तो ro.oem_unlock_supported को 0 पर सेट करें.

अगर डिवाइस में फ़्लैशिंग अनलॉक काम करती है, तो बूटलोडर को कर्नेल कमांड लाइन वैरिएबल androidboot.flash.locked को 1 पर सेट करके लॉक की स्थिति के बारे में बताना चाहिए. अगर अनलॉक है, तो इसे 0 पर सेट कर सकता है. इस वैरिएबल को Android 12 में कर्नेल कमांड लाइन के बजाय, बूट कॉन्फ़िगरेशन में सेट किया जाना चाहिए.

dm-verity के साथ काम करने वाले डिवाइसों के लिए, ro.boot.verifiedbootstate का इस्तेमाल करके ro.boot.flash.locked की वैल्यू 0 पर सेट करें. अगर पुष्टि की गई बूट की स्थिति नारंगी हो, तो इससे बूटलोडर अनलॉक हो जाता है.

अहम सेक्शन को सुरक्षित रखें

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

'लॉक किया हुआ' से 'अनलॉक किया गया' स्थिति में जाने के लिए, डिवाइस के साथ फ़िज़िकल इंटरैक्शन करना ज़रूरी है. यह इंटरैक्शन, fastboot flashing unlock कमांड को चलाने से पड़ने वाले असर की तरह होता है. हालांकि, इसके लिए उपयोगकर्ता को डिवाइस पर एक बटन दबाना पड़ता है. डिवाइसों को बिना किसी फ़िज़िकल इंटरैक्शन के, प्रोग्राम के हिसाब से lock critical से unlock critical पर ट्रांज़िशन की अनुमति नहीं देनी चाहिए. साथ ही, डिवाइसों को unlock critical स्थिति में शिप नहीं किया जाना चाहिए.