نمای کلی پارتیشن‌ها

دستگاه‌های 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 برای واحدهای محصول دردسترس نیستند.