دستگاههای Android دارای چندین پارتیشن یا بخشهای خاصی از فضای ذخیرهسازی هستند که برای نگهداری بخشهای خاصی از نرمافزار دستگاه استفاده میشوند. هر پارتیشن حاوی تصویر پارتیشن (فایل IMG) یا نمای لحظهای از همه نرمافزارها برای پارتیشن است. شکل ۱ طرحبندی پارتیشنهای اصلی را در دستگاه نشان میدهد:
شکل ۱. چیدمان پارتیشنهای اصلی.
پارتیشنها در سه دسته طبقهبندی میشوند:
پارتیشنهای سیستم پارتیشنهایی هستند که هنگام بهروزرسانی سیستمعامل و ویژگیهای دیگر بهروزرسانی میشوند.
system،boot، وinit_bootپارتیشنهای اصلی سیستم هستند.پارتیشنهای فروشنده حاوی کد مختص دستگاه و سختافزار است که ممکن است هرگز پساز انتشار اولیه بهروزرسانی نشود. بخشهای
vendor،vendor_boot، وodmبخشهای اصلی فروشنده هستند.بخشهای غیرقابلبهروزرسانی بخشهایی هستند که محتوای آنها یا بهروزرسانی نمیشود یا با دادههای کاربر بهروزرسانی میشود.
کد در بخشهای سیستم و فروشنده میتواند بااستفاده از میانای پایداری بهنام میانای فروشنده (VINTF) تعامل داشته باشد.
پارتیشنهای سیستم
در زیر فهرستی از همه پارتیشنهای سیستم و کاربرد آنها آمده است:
bootپارتیشن. این پارتیشن حاوی «تصویر هسته عمومی» (GKI) است. این پارتیشن همچنین حاوی ramdisk عمومی در دستگاههایی است که در Android 12 و نسخههای پایینتر راهاندازی شدهاند. برای اطلاعات بیشتر درباره ramdisk عمومی، به محتوای تصویر ramdisk عمومی مراجعه کنید.پارتیشن
init_boot(Android 13 و بالاتر). این پارتیشن حاوی ramdisk عمومی است. در Android 11 و 12، دیسک مجازی عمومی در پارتیشنbootقرار دارد.
systemپارتیشن. این پارتیشن حاوی تصویر سیستم مورداستفاده برای محصولات OEM است.پارتیشن
system_ext. این پارتیشن حاوی منابع سیستم و مدولهای سیستم اختصاصی است که تصویر سیستم مشترک را در پارتیشنsystemگسترش میدهد.پارتیشن
system_dlkm. این پارتیشن حاوی واحدهای GKI است. برای اطلاعات بیشتر درباره این پارتیشن، پیادهسازی پارتیشن واحد GKI را ببینید.
productپارتیشن. این بخش میتواند شامل واحدهای محصولمحوری باشد که با بخشهای دیگر دستهبندی نشدهاند.
pvmfwپارتیشن. این پارتیشن میانافزار ماشین مجازی محافظتشده (pvmfw) را ذخیره میکند که اولین کدی است که در ماشینهای مجازی محافظتشده اجرا میشود. برای اطلاعات بیشتر، میانافزار ماشین مجازی محافظتشده را ببینید.generic_bootloaderپارتیشن. این پارتیشن حاوی بارکننده عمومی است.
پارتیشنهای فروشنده
در زیر فهرستی از همه پارتیشنهای فروشنده و استفاده آنها آمده است:
vendor_bootپارتیشن. این پارتیشن حاوی کد راهاندازی مختص فروشنده است. برای اطلاعات بیشتر، پارتیشنهای راهاندازی فروشنده را ببینید.پارتیشن
recovery. این پارتیشن تصویر بازیابی را ذخیره میکند که درطول فرایند بهروزرسانی ازطریق هوا (OTA) راهاندازی میشود. دستگاههایی که از بهروزرسانیهای یکپارچه پشتیبانی میکنند میتوانند تصاویر بازیابی را بهعنوان ramdisk در تصویرbootیاinit_bootذخیره کنند. برای اطلاعات بیشتر درباره بهروزرسانیهای یکپارچه، بهروزرسانیهای A/B (یکپارچه) را ببینید.پارتیشن
misc. این پارتیشن توسط پارتیشن بازیابی استفاده میشود و ۴ کیلوبایت یا بزرگتر است.
vbmetaپارتیشن. این پارتیشن حاوی اطلاعات «راهاندازی تأییدشده» برای همه پارتیشنها است. این اطلاعات تأیید میکند که تصاویر نصبشده در هر بخش قابلاعتماد است. برای اطلاعات بیشتر درباره «راهاندازی درستیسنجیشده»، به راهاندازی درستیسنجیشده مراجعه کنید.
vendorپارتیشن. این پارتیشن حاوی هرگونه باینری است که مختص فروشنده است و بهاندازه کافی عمومی نیست که در AOSP توزیع شود.پارتیشن
vendor_dlkm. این پارتیشن حاوی واحدهای هسته فروشنده است. با ذخیره کردن واحدهای هسته فروشنده در این بخش بهجای بخشvendor، میتوانید واحدهای هسته را بدون بهروزرسانی بخشvendorبهروز کنید. برای اطلاعات بیشتر، بخشهای DKLM فروشنده و ODM را ببینید.
odmپارتیشن. این پارتیشن حاوی سفارشیسازیهای سازنده طراحی اصلی (ODM) برای بستههای پشتیبانی برد فروشنده سیستم روی تراشه (SoC) است. چنین سفارشیسازیهایی به ODMها امکان میدهد مؤلفههای SoC را جایگزین یا سفارشیسازی کنند، و واحدهای هسته را برای مؤلفههای خاص برد، شبحها، و ویژگیهای خاص ODM در لایههای انتزاعی سختافزار (HAL) پیادهسازی کنند. این پارتیشن اختیاری است. معمولاً از این پارتیشن برای نگهداری سفارشیسازیها استفاده میشود تا دستگاهها بتوانند از یک ایمیج فروشنده برای چند SKU سختافزاری استفاده کنند. برای اطلاعات بیشتر، بخشهای ODM را ببینید.
odm_dlkmپارتیشن. این بخش برای ذخیره کردن واحدهای هسته ODM اختصاص داده شده است. با ذخیره کردن واحدهای هسته ODM در این پارتیشن، بهجای پارتیشنodm، میتوانید واحدهای هسته ODM را بدون بهروزرسانی پارتیشنodmبهروزرسانی کنید. برای اطلاعات بیشتر، به پارتیشنهای DKLM فروشنده و ODM مراجعه کنید.
radioپارتیشن. این پارتیشن حاوی تصویر رادیو است و فقط برای دستگاههایی که دارای رادیو با نرمافزار ویژه رادیو در پارتیشن اختصاصی هستند لازم است.
بخشهای غیرقابلبهروزرسانی
در زیر فهرستی از همه پارتیشنهای غیرقابلبهروزرسانی و کاربرد آنها آمده است:
cacheپارتیشن. این پارتیشن حاوی دادههای موقت است و اگر دستگاهتان از بهروزرسانیهای یکپارچه استفاده میکند، اختیاری است. این پارتیشن نباید از bootloader قابلنوشتن باشد، اما باید قابل پاک کردن باشد. اندازه پارتیشن به نوع دستگاه و فضای دردسترس درuserdataبستگی دارد؛ معمولاً ۵۰ تا ۱۰۰ مگابایت کافی است.userdataپارتیشن. این پارتیشن حاوی برنامهها و دادههای نصبشده توسط کاربر، ازجمله دادههای سفارشیسازی است.
metadataپارتیشن. اگر دستگاهتان از رمزگذاری فراداده استفاده میکند، این پارتیشن حاوی کلید رمزگذاری فراداده است. اندازه این بخش ۱۶ مگابایت یا بزرگتر است، رمزگذاری نشده است، و دادههای آن عکس فوری ندارد. وقتی دستگاه بازنشانی کارخانهای میشود، این پارتیشن پاک میشود.
قوانین و توصیههای بهروزرسانی پارتیشن
توصیه میکنیم همه پارتیشنهای سیستم را بهصورت یکپارچه و همه پارتیشنهای فروشنده را بهصورت یکپارچه دیگر بهروزرسانی کنید. با بهروزرسانی مجموعه پارتیشنها بهصورت کلی، میتوانید آزمایش کنید و مطمئن شوید که میاناهای بین تصاویر در هر پارتیشن پایدار میمانند.
صرفنظر از اینکه چگونه پارتیشنهایتان را بهروز میکنید، پارتیشنهای زیر باید بهدلیل وابستگیهای محکم و نبود میاناهای برنامهسازی کاربردی پایدار بهروز شوند:
- پارتیشنهای
bootوsystem_dlkm - بخشهای
init_boot،system،system_ext، وproduct
پارتیشنهای پویا
دستگاههای دارای Android نسخه ۱۱ و بالاتر میتوانند از پارتیشنهای پویا پشتیبانی کنند. پارتیشنهای پویا سیستم پارتیشنبندی فضای کاربری برای Android است که به شما امکان میدهد درطول بهروزرسانیهای OTA (ازطریق هوا) پارتیشن ایجاد کنید، اندازه آنها را تغییر دهید، یا آنها را حذف کنید. برای اطلاعات بیشتر، پارتیشنهای پویا را ببینید.
انواع محصول Soong
سیستم ساخت Soong از تنوعهای تصویر برای تقسیم
وابستگیهای ساخت استفاده میکند. واحدهای بومی (/build/soong/cc) میتوانند واحدهای فرایند سیستم را به گونه اصلی و واحدهای فرایند فروشنده را به گونه فروشنده جهش دهند؛ واحدی در یک گونه تصویر نمیتواند به واحدهای دیگر در گونه تصویر متفاوت پیوند داده شود.
در Android 12 یا بالاتر، یک ماژول سیستم با
vendor_available: true علاوهبر متغیر اصلی، یک متغیر فروشنده ایجاد میکند. برای ایجاد گونه محصول، product_available: true باید تعریف شود. برخیاز کتابخانههای VNDK بدون product_available: true برای
واحدهای محصول دردسترس نیستند.