Android 5.0 पर चलने वाले नए डिवाइसों के लिए, ब्लॉक के हिसाब से ओवर-द-एयर (ओटीए) अपडेट की सुविधा चालू की जा सकती है. ओटीए एक ऐसा तरीका है जिससे OEM, किसी डिवाइस के सिस्टम पार्टीशन को रिमोट तौर पर अपडेट करते हैं:
- Android 5.0 और उसके बाद के वर्शन, ओटीए अपडेट को ब्लॉक करते हैं. इससे यह पक्का होता है कि हर डिवाइस एक ही सेक्शन का इस्तेमाल करता है. अलग-अलग फ़ाइलों की तुलना करने और बाइनरी पैच का हिसाब लगाने के बजाय, ब्लॉक ओटीए पूरे पार्टीशन को एक फ़ाइल के तौर पर मैनेज करता है और एक बाइनरी पैच का हिसाब लगाता है. इससे यह पक्का होता है कि नतीजे के तौर पर मिले पार्टीशन में, ज़रूरी बिट ही शामिल हों. इससे, डिवाइस की सिस्टम इमेज को फ़ास्टबूट या ओटीए के ज़रिए उसी स्थिति में लाया जा सकता है.
- Android 4.4 और इससे पहले के वर्शन में, फ़ाइल के ओटीए अपडेट का इस्तेमाल किया जाता था. इससे यह पक्का किया जाता था कि डिवाइसों में एक जैसी फ़ाइल कॉन्टेंट, अनुमतियां, और मोड हों. हालांकि, अपडेट करने के तरीके के आधार पर, डिवाइसों के बीच टाइमस्टैंप और स्टोरेज के लेआउट जैसे मेटाडेटा में अंतर हो सकता था.
ब्लॉक ओटीए की मदद से यह पक्का किया जाता है कि हर डिवाइस एक ही पार्टीशन का इस्तेमाल करता है. इससे, सिस्टम पार्टीशन पर क्रिप्टोग्राफ़िक तरीके से हस्ताक्षर करने के लिए, dm-verity का इस्तेमाल किया जा सकता है. dm-verity के बारे में ज़्यादा जानने के लिए, पुष्टि किया गया बूट देखें.
ध्यान दें: dm-verity का इस्तेमाल करने से पहले, आपके पास ओटीए (Over-The-Air) सिस्टम को ब्लॉक करने की सुविधा होनी चाहिए.
सुझाव
Android 5.0 या उसके बाद के वर्शन वाले डिवाइसों के लिए, फ़ैक्ट्री रोम में ओटीए अपडेट को ब्लॉक करने की सुविधा का इस्तेमाल करें. इसके बाद होने वाले अपडेट के लिए, ब्लॉक पर आधारित ओटीए जनरेट करने के लिए, --block
विकल्प को ota_from_target_files
पर पास करें.
Android 4.4 या उससे पहले के वर्शन वाले डिवाइसों के लिए, फ़ाइल ओटीए अपडेट का इस्तेमाल करें. डिवाइसों को Android 5.0 या उसके बाद के वर्शन पर ट्रांसफ़र करने के लिए, पूरे ब्लॉक का ओटीए भेजा जा सकता है. हालांकि, इसके लिए पूरे ब्लॉक का ओटीए भेजना ज़रूरी है, जो इंक्रीमेंटल ओटीए से काफ़ी बड़ा होता है. इसलिए, ऐसा करने का सुझाव नहीं दिया जाता.
dm-verity की सुविधा के लिए, बूटलोडर की ज़रूरत होती है. यह सुविधा सिर्फ़ Android 5.0 या उसके बाद के वर्शन वाले नए डिवाइसों में होती है. इसलिए, मौजूदा डिवाइसों के लिए dm-verity की सुविधा चालू नहीं की जा सकती.
Android OTA सिस्टम (रिकवरी इमेज और ओटीए जनरेट करने वाली स्क्रिप्ट) पर काम करने वाले डेवलपर, android-ota@googlegroups.com मेलिंग सूची की सदस्यता लेकर, बदलावों के बारे में अप-टू-डेट रह सकते हैं.
ओटीए को फ़ाइल करना बनाम ब्लॉक करना
फ़ाइल-आधारित ओटीए के दौरान, Android फ़ाइल सिस्टम लेयर पर, सिस्टम पार्टीशन के कॉन्टेंट को बदलने की कोशिश करता है. इस बात की कोई गारंटी नहीं है कि अपडेट की गई फ़ाइलें एक ही क्रम में सेव होंगी, उनमें बदलाव करने का आखिरी समय या सुपरब्लॉक एक ही रहेगा या ब्लॉक डिवाइस पर ब्लॉक एक ही जगह पर सेव होंगे. इस वजह से, dm-verity की सुविधा वाले डिवाइस पर, फ़ाइल-आधारित ओटीए काम नहीं करते. ओटीए की कोशिश करने के बाद, डिवाइस बूट नहीं होता.
ब्लॉक पर आधारित ओटीए के दौरान, Android डिवाइस को दो फ़ाइलों के सेट के बजाय, दो ब्लॉक इमेज के बीच का अंतर दिखाता है. अपडेट, डिवाइस के बिल्ड की जांच, ब्लॉक लेवल (फ़ाइल सिस्टम के नीचे) पर, इससे जुड़े बिल्ड सर्वर के साथ करता है. इसके लिए, इनमें से किसी एक तरीके का इस्तेमाल किया जाता है:
- पूरा अपडेट. पूरे सिस्टम की इमेज को कॉपी करना आसान है. इससे पैच जनरेट करना भी आसान हो जाता है. हालांकि, इससे बड़ी इमेज भी जनरेट होती हैं. इन इमेज पर पैच लागू करने में ज़्यादा समय लग सकता है.
- इंक्रीमेंटल अपडेट. बाइनरी डिफ़र टूल का इस्तेमाल करने से, छोटी इमेज जनरेट होती हैं और पैच लागू करना आसान हो जाता है. हालांकि, पैच जनरेट करने के दौरान ज़्यादा मेमोरी का इस्तेमाल होता है.
ध्यान दें: adb fastboot
, डिवाइस पर ठीक वैसे ही बिट डालता है जैसे कि पूरी तरह से ओटीए किया गया हो. इसलिए, फ़्लैश करने की सुविधा, ब्लॉक ओटीए के साथ काम करती है.
बिना बदलाव वाले सिस्टम अपडेट करना
Android 5.0 पर चलने वाले ऐसे डिवाइसों के लिए जिनके सिस्टम पार्टिशन बदले नहीं गए हैं, ब्लॉक ओटीए के लिए डाउनलोड और इंस्टॉल करने की प्रोसेस, फ़ाइल ओटीए के लिए प्रोसेस जैसी ही रहती है. हालांकि, ओटीए अपडेट में इनमें से कोई एक या इससे ज़्यादा फ़र्क़ हो सकते हैं:
-
डाउनलोड का साइज़.
फ़ुल ब्लॉक ओटीए अपडेट का साइज़, फ़ुल फ़ाइल ओटीए अपडेट के साइज़ के बराबर होता है. साथ ही, इंक्रीमेंटल अपडेट का साइज़, कुछ मेगाबाइट बड़ा हो सकता है.
पहली इमेज. Android 5.0 और Android 5.1 रिलीज़ के बीच, Nexus 6 के ओटीए साइज़ की तुलना करना (टारगेट बिल्ड में बदलाव)
आम तौर पर, इनक्रीमेंटल ब्लॉक ओटीए अपडेट, इनक्रीमेंटल फ़ाइल ओटीए अपडेट से बड़े होते हैं. ऐसा इन वजहों से होता है:
- डेटा को सुरक्षित रखना. ब्लॉक पर आधारित ओटीए, फ़ाइल पर आधारित ओटीए की तुलना में ज़्यादा डेटा (फ़ाइल का मेटाडेटा, dm-verity का डेटा, ext4 लेआउट वगैरह) सेव करते हैं.
- कंप्यूटेशन एल्गोरिदम में अंतर. फ़ाइल के ओटीए अपडेट में, अगर किसी फ़ाइल का पाथ दोनों बिल्ड में एक जैसा है, तो ओटीए पैकेज में उस फ़ाइल का कोई डेटा नहीं होता. ब्लॉक ओटीए अपडेट में, किसी फ़ाइल में ज़्यादा या कम बदलाव होने का पता लगाने के लिए, सोर्स और टारगेट सिस्टम, दोनों में पैच कैलकुलेशन एल्गोरिदम और फ़ाइल डेटा के लेआउट की क्वालिटी पर निर्भर करता है.
- खराब फ़्लैश और रैम के प्रति संवेदनशीलता. अगर कोई फ़ाइल खराब है, तो फ़ाइल ओटीए तब तक काम करता है, जब तक वह खराब फ़ाइल को अपडेट नहीं करता. हालांकि, अगर सिस्टम पार्टीशन में कोई गड़बड़ी का पता चलता है, तो ब्लॉक ओटीए काम नहीं करता.
बदलाव किए गए सिस्टम अपडेट करना
Android 5.0 पर चलने वाले, बदले गए सिस्टम पार्टिशन वाले डिवाइसों के लिए:
-
इंक्रीमेंटल ब्लॉक ओटीए अपडेट नहीं हो पाते. सिस्टम के किसी partition में,
adb remount
के दौरान या मैलवेयर की वजह से बदलाव हो सकता है. फ़ाइल ओटीए, partition में कुछ बदलावों को स्वीकार करता है. जैसे, ऐसी फ़ाइलों को जोड़ना जो सोर्स या टारगेट बिल्ड का हिस्सा नहीं हैं. हालांकि, ओटीए को ब्लॉक करने की सुविधा, पार्टीशन में बदलावों को स्वीकार नहीं करती. इसलिए, उपयोगकर्ताओं को आने वाले समय में ओटीए की सुविधा चालू करने के लिए, सिस्टम के पार्टीशन में किए गए बदलावों को ओवरराइट करने वाला पूरा ओटीए इंस्टॉल करना होगा या नया सिस्टम इमेज फ़्लैश करना होगा. - बदली गई फ़ाइलों में बदलाव करने की कोशिश करने पर, अपडेट नहीं हो पाता. फ़ाइल और ब्लॉक के OTA अपडेट, दोनों के लिए, अगर OTA किसी ऐसी फ़ाइल में बदलाव करने की कोशिश करता है जिसमें बदलाव किया जा चुका है, तो OTA अपडेट पूरा नहीं होता.
- बदली गई फ़ाइलों को ऐक्सेस करने की कोशिश करने पर गड़बड़ियां होती हैं (सिर्फ़ dm-verity के लिए). फ़ाइल और ब्लॉक ओटीए, दोनों अपडेट के लिए, अगर dm-verity चालू है और ओटीए, सिस्टम फ़ाइल सिस्टम के बदले गए हिस्सों को ऐक्सेस करने की कोशिश करता है, तो ओटीए गड़बड़ी जनरेट करता है.