নন-A/B সিস্টেম আপডেট

A/B পার্টিশন ছাড়া পুরানো অ্যান্ড্রয়েড ডিভাইসে, ফ্ল্যাশ স্পেসে সাধারণত নিম্নলিখিত পার্টিশন থাকে:

বুট
লিনাক্স কার্নেল এবং একটি ন্যূনতম রুট ফাইল সিস্টেম রয়েছে (একটি RAM ডিস্কে লোড করা হয়েছে)। এটি সিস্টেম এবং অন্যান্য পার্টিশন মাউন্ট করে এবং সিস্টেম পার্টিশনে অবস্থিত রানটাইম শুরু করে।
পদ্ধতি
অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্টে (AOSP) সোর্স কোড উপলব্ধ সিস্টেম অ্যাপ্লিকেশন এবং লাইব্রেরি রয়েছে৷ স্বাভাবিক অপারেশন চলাকালীন, এই পার্টিশনটি শুধুমাত্র পঠনযোগ্য মাউন্ট করা হয়; এটির বিষয়বস্তু শুধুমাত্র একটি OTA আপডেটের সময় পরিবর্তিত হয়।
বিক্রেতা
অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্ট (AOSP) এ উপলব্ধ সোর্স কোড নেই এমন সিস্টেম অ্যাপ্লিকেশন এবং লাইব্রেরি রয়েছে৷ স্বাভাবিক অপারেশন চলাকালীন, এই পার্টিশনটি শুধুমাত্র পঠনযোগ্য মাউন্ট করা হয়; এটির বিষয়বস্তু শুধুমাত্র একটি OTA আপডেটের সময় পরিবর্তিত হয়।
ব্যবহারকারী তথ্য
ব্যবহারকারী দ্বারা ইনস্টল করা অ্যাপ্লিকেশন দ্বারা সংরক্ষিত ডেটা সংরক্ষণ করে, ইত্যাদি। এই পার্টিশনটি সাধারণত OTA আপডেট প্রক্রিয়া দ্বারা স্পর্শ করা হয় না।
ক্যাশে
কিছু অ্যাপ্লিকেশন দ্বারা ব্যবহৃত অস্থায়ী হোল্ডিং এরিয়া (এই পার্টিশন অ্যাক্সেস করার জন্য বিশেষ অ্যাপ্লিকেশন অনুমতি প্রয়োজন) এবং ডাউনলোড করা OTA আপডেট প্যাকেজগুলির স্টোরেজের জন্য। অন্যান্য প্রোগ্রাম এই স্থানটি ব্যবহার করে এই প্রত্যাশায় যে ফাইলগুলি যে কোনও সময় অদৃশ্য হয়ে যেতে পারে। কিছু OTA প্যাকেজ ইনস্টলেশনের ফলে এই পার্টিশন সম্পূর্ণরূপে মুছে ফেলা হতে পারে। ক্যাশে একটি OTA আপডেট থেকে আপডেট লগ ধারণ করে।
পুনরুদ্ধার
একটি কার্নেল এবং বিশেষ পুনরুদ্ধার বাইনারি সহ একটি দ্বিতীয় সম্পূর্ণ লিনাক্স সিস্টেম রয়েছে যা একটি প্যাকেজ পড়ে এবং অন্যান্য পার্টিশন আপডেট করতে এর বিষয়বস্তু ব্যবহার করে।
বিবিধ
OTA প্যাকেজ প্রয়োগ করার সময় ডিভাইসটি পুনরায় চালু হওয়ার ক্ষেত্রে এটি কী করছে সে সম্পর্কে কিছু তথ্য লুকিয়ে রাখতে পুনরুদ্ধারের দ্বারা ব্যবহৃত ক্ষুদ্র পার্টিশন।

একটি OTA আপডেটের জীবন

একটি সাধারণ OTA আপডেটে নিম্নলিখিত ধাপগুলি রয়েছে:

  1. ডিভাইসটি OTA সার্ভারের সাথে নিয়মিত চেক ইন করে এবং আপডেট প্যাকেজের URL এবং ব্যবহারকারীকে দেখানোর জন্য একটি বিবরণ স্ট্রিং সহ একটি আপডেটের উপলব্ধতা সম্পর্কে অবহিত করা হয়।
  2. একটি ক্যাশে বা ডেটা পার্টিশনে ডাউনলোডগুলি আপডেট করুন, এবং এর ক্রিপ্টোগ্রাফিক স্বাক্ষর /system/etc/security/otacerts.zip এ শংসাপত্রগুলির বিরুদ্ধে যাচাই করা হয়। ব্যবহারকারীকে আপডেটটি ইনস্টল করার জন্য অনুরোধ করা হয়।
  3. ডিভাইস পুনরুদ্ধার মোডে রিবুট হয়, যেখানে রিকভারি পার্টিশনের কার্নেল এবং সিস্টেম বুট পার্টিশনে কার্নেলের পরিবর্তে বুট করা হয়।
  4. পুনরুদ্ধার বাইনারি init দ্বারা শুরু হয়. এটি /cache/recovery/command এ কমান্ড-লাইন আর্গুমেন্ট খুঁজে পায় যা এটি ডাউনলোড করা প্যাকেজের দিকে নির্দেশ করে।
  5. পুনরুদ্ধার /res/keys (রিকভারি পার্টিশনে থাকা RAM ডিস্কের অংশ) পাবলিক কীগুলির বিপরীতে প্যাকেজের ক্রিপ্টোগ্রাফিক স্বাক্ষর যাচাই করে।
  6. প্যাকেজ থেকে ডেটা তোলা হয় এবং প্রয়োজনীয় বুট, সিস্টেম এবং/অথবা ভেন্ডর পার্টিশন আপডেট করতে ব্যবহৃত হয়। সিস্টেম পার্টিশনে থাকা নতুন ফাইলগুলির মধ্যে একটিতে নতুন পুনরুদ্ধার পার্টিশনের বিষয়বস্তু রয়েছে।
  7. ডিভাইস স্বাভাবিকভাবে রিবুট হয়।
    1. নতুন আপডেট করা বুট পার্টিশনটি লোড করা হয়েছে এবং এটি নতুন আপডেট হওয়া সিস্টেম পার্টিশনে বাইনারিগুলি মাউন্ট করে এবং চালানো শুরু করে।
    2. স্বাভাবিক স্টার্টআপের অংশ হিসাবে, সিস্টেমটি কাঙ্ক্ষিত বিষয়বস্তুর বিপরীতে পুনরুদ্ধার পার্টিশনের বিষয়বস্তু পরীক্ষা করে (যা আগে /system এ একটি ফাইল হিসাবে সংরক্ষিত ছিল)। তারা ভিন্ন, তাই পুনরুদ্ধার পার্টিশন পছন্দসই বিষয়বস্তু সঙ্গে reflashed হয়. (পরবর্তী বুটগুলিতে, পুনরুদ্ধার পার্টিশনে ইতিমধ্যেই নতুন বিষয়বস্তু রয়েছে, তাই কোনও রিফ্ল্যাশের প্রয়োজন নেই।)

সিস্টেম আপডেট সম্পূর্ণ! আপডেট লগগুলি /cache/recovery/last_log. #

প্যাকেজ আপডেট করুন

একটি আপডেট প্যাকেজ হল একটি .zip ফাইল যাতে এক্সিকিউটেবল বাইনারি META-INF/com/google/android/update-binary রয়েছে। প্যাকেজে স্বাক্ষর যাচাই করার পরে, recovery এই বাইনারিটিকে /tmp তে বের করে এবং বাইনারি চালায়, নিম্নলিখিত আর্গুমেন্টগুলি পাস করে:

  • বাইনারি API সংস্করণ নম্বর আপডেট করুন । আর্গুমেন্ট আপডেট বাইনারি পরিবর্তনে পাস হলে, এই সংখ্যা বৃদ্ধি পায়।
  • কমান্ড পাইপের ফাইল বর্ণনাকারী । আপডেট প্রোগ্রাম এই পাইপটি ব্যবহার করে রিকভারি বাইনারিতে কমান্ড পাঠাতে পারে, বেশিরভাগ UI পরিবর্তনের জন্য, যেমন ব্যবহারকারীর অগ্রগতি নির্দেশ করে।
  • আপডেট প্যাকেজের ফাইলের নাম .zip ফাইল

একটি আপডেট প্যাকেজ আপডেট বাইনারি হিসাবে যেকোনো স্ট্যাটিকালি লিঙ্ক বাইনারি ব্যবহার করতে পারে। OTA প্যাকেজ নির্মাণ সরঞ্জাম আপডেটার প্রোগ্রাম ব্যবহার করে ( bootable/recovery/updater ), যা একটি সহজ স্ক্রিপ্টিং ভাষা প্রদান করে যা অনেক ইনস্টলেশন কাজ করতে পারে। আপনি ডিভাইসে চলমান অন্য কোনো বাইনারি প্রতিস্থাপন করতে পারেন।

আপডেটার বাইনারি, এডিফাই সিনট্যাক্স এবং বিল্টইন ফাংশন সম্পর্কে বিস্তারিত জানার জন্য, ইনসাইড OTA প্যাকেজ দেখুন।

পূর্ববর্তী প্রকাশগুলি থেকে স্থানান্তর করুন৷

অ্যান্ড্রয়েড 2.3/3.0/4.0 রিলিজ থেকে মাইগ্রেট করার সময়, প্রধান পরিবর্তন হল সমস্ত ডিভাইস-নির্দিষ্ট কার্যকারিতাকে পূর্বনির্ধারিত নাম সহ C ফাংশনগুলির একটি সেট থেকে C++ অবজেক্টে রূপান্তর করা। নিম্নলিখিত সারণী পুরানো ফাংশন এবং নতুন পদ্ধতিগুলি তালিকাভুক্ত করে যা মোটামুটি সমতুল্য উদ্দেশ্য পরিবেশন করে:

সি ফাংশন C++ পদ্ধতি
device_recovery_start() ডিভাইস::RecoveryStart()
device_toggle_display()
device_reboot_now()
রিকভারিইউআই::চেককি()
(এছাড়াও RecoveryUI::IsKeyPressed())
device_handle_key() ডিভাইস::HandleMenuKey()
device_perform_action() ডিভাইস::InvokeMenuItem()
device_wipe_data() ডিভাইস::WipeData()
device_ui_init() ScreenRecoveryUI::Init()

পুরানো ফাংশনগুলিকে নতুন পদ্ধতিতে রূপান্তর করা যুক্তিসঙ্গতভাবে সোজা হওয়া উচিত। আপনার নতুন ডিভাইস সাবক্লাসের একটি উদাহরণ তৈরি করতে এবং ফেরত দিতে নতুন make_device() ফাংশন যোগ করতে ভুলবেন না।