OTAهای مبتنی بر بلوک

می‌توانید به‌روزرسانی‌های مبتنی بر بلوک (OTA) را برای دستگاه‌های جدید دارای Android نسخه 5.0 فعال کنید. 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 فایل استفاده کنید. در حالی که می‌توان دستگاه‌ها را با ارسال یک بلوک کامل OTA اندروید 5.0 یا جدیدتر انتقال داد، اما نیاز به ارسال یک OTA کامل دارد که به طور قابل‌توجهی بزرگ‌تر از OTA افزایشی است (و بنابراین توصیه نمی‌شود).

از آنجایی که dm-verity به پشتیبانی بوت‌لودر نیاز دارد که فقط در دستگاه‌های جدیدی که با Android نسخه ۵.۰ یا بالاتر ارسال می‌شوند، یافت می‌شود، نمی‌توانید dm-verity را برای دستگاه‌های موجود فعال کنید.

توسعه دهندگانی که روی سیستم Android OTA کار می کنند (تصویر بازیابی و اسکریپت هایی که OTA تولید می کنند) می توانند با عضویت در لیست پستی android-ota@googlegroups.com با تغییرات همراه شوند.

فایل در مقابل OTAهای بلوک

در طی یک OTA مبتنی بر فایل، اندروید سعی می کند محتویات پارتیشن سیستم را در لایه سیستم فایل (بر اساس فایل به فایل) تغییر دهد. به‌روزرسانی تضمینی برای نوشتن فایل‌ها به ترتیب ثابت، داشتن آخرین زمان اصلاح شده یا بلوک فوق‌العاده ثابت، یا حتی قرار دادن بلوک‌ها در همان مکان در دستگاه بلوک نیست. به همین دلیل، OTAهای مبتنی بر فایل در دستگاه‌های دارای dm-verity با شکست مواجه می‌شوند. پس از تلاش OTA، دستگاه بوت نمی شود.

در طول OTA مبتنی بر بلوک، Android تفاوت بین دو تصویر بلوک (به جای دو مجموعه فایل) را به دستگاه ارائه می دهد. به‌روزرسانی، ساخت دستگاه را در برابر سرور ساخت مربوطه در سطح بلوک (زیر سیستم فایل) با استفاده از یکی از روش‌های زیر بررسی می‌کند:

  • به روز رسانی کامل . کپی کردن تصویر کامل سیستم ساده است و تولید پچ را آسان می کند، اما همچنین تصاویر بزرگی تولید می کند که می تواند اعمال وصله ها را گران کند.
  • به روز رسانی افزایشی . استفاده از ابزار تفاوت باینری تصاویر کوچک‌تری تولید می‌کند و کاربرد وصله را آسان می‌کند، اما هنگام تولید خود پچ، حافظه فشرده‌ای دارد.

توجه: adb fastboot دقیقا همان بیت های OTA کامل را روی دستگاه قرار می دهد، بنابراین فلش با بلوک OTA سازگار است.

به روز رسانی سیستم های اصلاح نشده

برای دستگاه‌هایی با پارتیشن‌های سیستمی اصلاح‌نشده دارای Android نسخه 5.0، فرآیند دانلود و نصب برای یک بلوک OTA مانند یک فایل OTA باقی می‌ماند. با این حال، به‌روزرسانی OTA ممکن است شامل یک یا چند مورد از تفاوت‌های زیر باشد:

  • اندازه دانلود . به‌روزرسانی‌های OTA بلوک کامل تقریباً به اندازه به‌روزرسانی‌های OTA فایل کامل هستند و به‌روزرسانی‌های تدریجی می‌توانند فقط چند مگابایت بزرگ‌تر باشند.

    مقایسه اندازه های OTA

    شکل 1. اندازه‌های Nexus 6 OTA را بین نسخه‌های Android 5.0 و Android 5.1 مقایسه کنید (تغییرات ساخت هدف متفاوت)

    به طور کلی، به‌روزرسانی‌های OTA بلوک افزایشی بزرگ‌تر از به‌روزرسانی OTA فایل افزایشی هستند به دلیل:

    • حفظ داده ها . OTAهای مبتنی بر بلوک نسبت به OTA مبتنی بر فایل، داده‌های بیشتری را حفظ می‌کنند (فراداده فایل، داده‌های dm-verity، طرح‌بندی ext4 و غیره).
    • تفاوت های الگوریتم محاسباتی در آپدیت OTA فایل، اگر مسیر فایل در هر دو بیلد یکسان باشد، بسته OTA حاوی داده ای برای آن فایل نیست. در بروزرسانی بلوک OTA، تعیین تغییر اندک یا بدون تغییر در یک فایل به کیفیت الگوریتم محاسباتی وصله و چیدمان داده‌های فایل در سیستم منبع و هدف بستگی دارد.
  • حساسیت به فلاش و رم معیوب اگر فایلی خراب باشد، یک فایل OTA تا زمانی که فایل خراب را لمس نکند موفق می شود، اما بلوک OTA اگر هر گونه خرابی را در پارتیشن سیستم تشخیص دهد با شکست مواجه می شود.

به روز رسانی سیستم های اصلاح شده

برای دستگاه‌هایی با پارتیشن‌های سیستم اصلاح‌شده دارای Android نسخه ۵.۰:

  • به روز رسانی OTA بلوک افزایشی با شکست مواجه می شود . یک پارتیشن سیستم ممکن است در حین adb remount یا در نتیجه بدافزار اصلاح شود. File OTA برخی تغییرات را در پارتیشن تحمل می کند، مانند افزودن فایل هایی که بخشی از ساخت منبع یا هدف نیستند. با این حال، بلوک OTA اضافه شدن به پارتیشن را تحمل نمی کند، بنابراین کاربران باید یک OTA کامل را نصب کنند که تغییرات پارتیشن سیستم را بازنویسی کند) یا یک تصویر سیستم جدید را فلش کنند تا OTA های آینده را فعال کنند.
  • تلاش برای تغییر فایل های اصلاح شده باعث شکست به روز رسانی می شود . هم برای به‌روزرسانی OTA فایل و هم برای بلوک، اگر OTA تلاش کند فایلی را تغییر دهد که اصلاح شده است، به‌روزرسانی OTA با شکست مواجه می‌شود.
  • تلاش برای دسترسی به فایل های اصلاح شده خطا ایجاد می کند (فقط dm-verity) . برای به روز رسانی OTA فایل و بلوک، اگر dm-verity فعال باشد و OTA تلاش کند به بخش های اصلاح شده سیستم فایل سیستم دسترسی پیدا کند، OTA خطایی ایجاد می کند.