ব্লক-ভিত্তিক OTA

Android 5.0 ভার্সনে চলে এমন নতুন ডিভাইসের জন্য আপনি ব্লক-ভিত্তিক ওভার-দ্য-এয়ার (OTA) আপডেট চালু করতে পারবেন। OTA হল এমন একটি মেকানিজম যার মাধ্যমে OEM রিমোটের মাধ্যমে কোনও ডিভাইসের সিস্টেম পার্টিশন আপডেট করে:

  • Android 5.0 এবং তার পরবর্তী ভার্সন ব্লক OTA আপডেট ব্যবহার করে যাতে প্রতিটি ডিভাইস একই পার্টিশন ব্যবহার করে তা নিশ্চিত করা যায়। আলাদা আলাদা ফাইল তুলনা করা এবং বাইনারি প্যাচ গণনা করার পরিবর্তে, ব্লক OTA পুরো পার্টিশনকে একটি ফাইল হিসেবে ম্যানেজ করে এবং একটি বাইনারি প্যাচ গণনা করে, যার ফলে পার্টিশনে ঠিক যে বিটগুলি থাকার কথা সেগুলিই থাকে। এর ফলে ডিভাইস সিস্টেম ইমেজ, ফাস্টবুট বা OTA-এর মাধ্যমে একই স্টেট অর্জন করতে পারে।
  • Android 4.4 ও এর আগের ভার্সনে ফাইল OTA আপডেট ব্যবহার করা হত, যা নিশ্চিত করত যে ডিভাইসগুলিতে একই ধরনের ফাইল কন্টেন্ট, অনুমতি ও মোড আছে, কিন্তু এর সাথে সাথে টাইমস্ট্যাম্প ও আন্ডারলাইং স্টোরেজের লেআউটের মতো মেটাডেটা আপডেট পদ্ধতির উপর ভিত্তি করে ডিভাইসগুলির মধ্যে আলাদা আলাদা হতে পারত।

কারণ, ব্লক OTA নিশ্চিত করে যে প্রতিটি ডিভাইস একই পার্টিশন ব্যবহার করে, এটি সিস্টেম পার্টিশনে ক্রিপ্টোগ্রাফিক স্বাক্ষর করার জন্য dm-verity ব্যবহার করার সুবিধা দেয়। dm-verity সম্পর্কে আরও জানতে, যাচাই করা বুট দেখুন।

মনে রাখবেন: dm-verity ব্যবহার করার আগে আপনার অবশ্যই একটি চালু ব্লক OTA সিস্টেম থাকতে হবে।

সাজেশন

Android 5.0 বা তার পরবর্তী ভার্সন সহ লঞ্চ হওয়া ডিভাইসের জন্য, ফ্যাক্টরি রম-এ OTA আপডেট ব্লক করুন। পরবর্তী আপডেটের জন্য ব্লক-ভিত্তিক OTA জেনারেট করতে, --block বিকল্পটি ota_from_target_files-এ পাস করুন।

Android 4.4 বা তার আগের যেকোনও ভার্সন সহ লঞ্চ করা ডিভাইসের জন্য, ফাইল OTA আপডেট ব্যবহার করুন। Android 5.0 বা তার পরবর্তী ভার্সনের সম্পূর্ণ ব্লক OTA পাঠিয়ে ডিভাইস ট্রানজিশন করা সম্ভব হলেও, এর জন্য সম্পূর্ণ OTA পাঠাতে হয় যা ইনক্রিমেন্টাল OTA-এর চেয়ে অনেক বড় (এবং তাই এটি করতে নিরুৎসাহিত করা হয়)।

কারণ dm-verity-এর জন্য বুটলোডার সাপোর্ট প্রয়োজন যা শুধুমাত্র Android 5.0 বা এর পরের ভার্সন সহ নতুন ডিভাইসে পাওয়া যায়, তাই আপনি আগে থেকেই থাকা ডিভাইসের জন্য dm-verity চালু করতে পারবেন না।

Android OTA সিস্টেমে (রিকভারি ইমেজ ও OTA জেনারেট করা স্ক্রিপ্ট) কাজ করা ডেভেলপাররা android-ota@googlegroups.com মেইলিং লিস্টে সাবস্ক্রাইব করে পরিবর্তন সম্পর্কে আপডেট পেতে পারেন।

ফাইল বনাম ব্লক OTA

ফাইল-ভিত্তিক OTA চলাকালীন, Android ফাইলসিস্টেম লেভেলে (এক একটি ফাইল হিসেবে) সিস্টেম পার্টিশনের কন্টেন্ট পরিবর্তন করার চেষ্টা করে। আপডেটটি একটি সামঞ্জস্যপূর্ণ ক্রমে ফাইল লিখবে, একটি সামঞ্জস্যপূর্ণ শেষ পরিবর্তিত সময় বা সুপারব্লক থাকবে, বা এমনকি ব্লক ডিভাইসে একই স্থানে ব্লকগুলি স্থাপন করবে তার কোনও গ্যারান্টি নেই। এই কারণে, dm-verity চালু থাকা ডিভাইসে ফাইল-ভিত্তিক OTA কাজ করে না; OTA প্রয়োগ করার পরে, ডিভাইস বুট হয় না।

ব্লক-ভিত্তিক OTA-এর সময়, Android ডিভাইসকে দুটি ব্লক ইমেজের মধ্যে পার্থক্য দেখায় (দুটি ফাইলের সেটের পরিবর্তে)। আপডেটটি নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করে ব্লক লেভেলে (ফাইল সিস্টেমের নিচে) সংশ্লিষ্ট বিল্ড সার্ভারের সাথে একটি ডিভাইস বিল্ড চেক করে:

  • সম্পূর্ণ আপডেট। সম্পূর্ণ সিস্টেম ইমেজ কপি করা সহজ এবং এটি প্যাচ জেনারেশনকে সহজ করে তোলে তবে এটি বড় ইমেজও তৈরি করে যা প্যাচ প্রয়োগ করাকে ব্যয়বহুল করে তুলতে পারে।
  • ইনক্রিমেন্টাল আপডেট। বাইনারি ডিফার টুল ব্যবহার করলে ছোট ছবি তৈরি হয় এবং প্যাচ প্রয়োগ করা সহজ হয়, কিন্তু প্যাচ তৈরি করার সময় অনেক মেমরি লাগে।

মনে রাখবেন: adb fastboot ডিভাইসে ঠিক একই বিট প্লেস করে যা সম্পূর্ণ OTA হিসেবে থাকে, তাই ফ্ল্যাশিং ব্লক OTA-এর সাথে মানানসই।

পরিবর্তন করা হয়নি এমন সিস্টেম আপডেট করুন

Android 5.0 ভার্সন চলছে এমন পরিবর্তিত নয় এমন সিস্টেম পার্টিশন থাকা ডিভাইসের জন্য, ব্লক OTA-এর ডাউনলোড ও ইনস্টল করার প্রসেস ফাইল OTA-এর মতোই থাকে। তবে, OTA আপডেট নিজেই নিম্নলিখিত পার্থক্যগুলির মধ্যে একটি বা একাধিক অন্তর্ভুক্ত করতে পারে:

  • ডাউনলোড সাইজ।

    ফুল ব্লক OTA আপডেটগুলি ফুল ফাইল OTA আপডেটের মতো প্রায় একই সাইজের হয় এবং ইনক্রিমেন্টাল আপডেটগুলি মাত্র কয়েক মেগাবাইট বড় হতে পারে।

    OTA সাইজের তুলনা

    ছবি ১. Android 5.0 এবং Android 5.1 রিলিজের (বিভিন্ন টার্গেট বিল্ড পরিবর্তন) মধ্যে Nexus 6 OTA সাইজের তুলনা করুন

    সাধারণত, ইনক্রিমেন্টাল ফাইল OTA আপডেটের চেয়ে ইনক্রিমেন্টাল ব্লক OTA আপডেট বড় হয়, কারণ:

    • ডেটা সংরক্ষণ। ব্লক-ভিত্তিক OTA ফাইল-ভিত্তিক OTA-এর চেয়ে বেশি ডেটা (ফাইল মেটাডেটা, dm-verity ডেটা, ext4 লেআউট ইত্যাদি) সেভ করে।
    • কম্পিউটেশন অ্যালগরিদমের পার্থক্য। কোনও ফাইল OTA আপডেটে, যদি কোনও ফাইল পাথ উভয় বিল্ডে অভিন্ন হয়, তাহলে সেই ফাইলের জন্য OTA প্যাকেজে কোনও ডেটা থাকে না। ব্লক OTA আপডেটে, কোনও ফাইলে সামান্য বা কোনও পরিবর্তন না হওয়া নির্ধারণ করা, সোর্স ও টার্গেট সিস্টেম, দুটিতেই প্যাচ কম্পিউটেশন অ্যালগরিদম ও ফাইল ডেটার লেআউটের কোয়ালিটির উপর নির্ভর করে।
  • খারাপ ফ্ল্যাশ ও RAM-এর প্রতি সংবেদনশীলতা। কোনও ফাইল ক্ষতিগ্রস্ত হলে, ফাইল OTA ততক্ষণ পর্যন্ত সফল হয় যতক্ষণ না এটি ক্ষতিগ্রস্ত ফাইলকে স্পর্শ করে, কিন্তু সিস্টেম পার্টিশনে কোনও ক্ষতি শনাক্ত করলে ব্লক OTA ব্যর্থ হয়।

পরিবর্তিত সিস্টেম আপডেট করা

Android 5.0 ভার্সন সহ পরিবর্তিত সিস্টেম পার্টিশন থাকা ডিভাইসের জন্য:

  • ইনক্রিমেন্টাল ব্লক OTA আপডেট সম্পূর্ণ করা যায়নি। adb remount-এর সময় বা ম্যালওয়্যারের কারণে সিস্টেম পার্টিশন পরিবর্তন করা হতে পারে। সোর্স বা টার্গেট বিল্ডের অংশ নয় এমন ফাইল যোগ করার মতো পার্টিশনে কিছু পরিবর্তন ফাইল OTA মেনে নেয়। তবে, ব্লক OTA পার্টিশনে কিছু যোগ করা সহ্য করে না, তাই ব্যবহারকারীদের সম্পূর্ণ OTA ইনস্টল করতে হবে যা কোনও সিস্টেম পার্টিশন পরিবর্তনকে ওভাররাইট করে) অথবা ভবিষ্যতের OTA চালু করতে একটি নতুন সিস্টেম ইমেজ ফ্ল্যাশ করতে হবে।
  • পরিবর্তিত ফাইল পরিবর্তন করার চেষ্টা করলে আপডেট করা যায় না। ফাইল ও ব্লক OTA আপডেটের ক্ষেত্রে, OTA যদি এমন কোনও ফাইল পরিবর্তন করার চেষ্টা করে যা আগে থেকেই পরিবর্তিত হয়েছে, তাহলে OTA আপডেটটি সম্পূর্ণ হবে না।
  • পরিবর্তিত ফাইল অ্যাক্সেস করার চেষ্টা করলে সমস্যা হয় (শুধুমাত্র dm-verity)। ফাইল এবং ব্লক OTA আপডেট, দুটির ক্ষেত্রেই, dm-verity চালু থাকলে এবং OTA সিস্টেম ফাইলসিস্টেমের পরিবর্তিত অংশ অ্যাক্সেস করার চেষ্টা করলে, OTA একটি সমস্যা তৈরি করে।