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

دستگاه‌های اندروید شامل چندین پارتیشن یا بخش‌های خاصی از فضای ذخیره‌سازی هستند که برای نگهداری بخش‌های خاصی از نرم‌افزار دستگاه استفاده می‌شوند. هر پارتیشن شامل یک تصویر پارتیشن (یک فایل IMG) یا تصویری از تمام نرم‌افزارهای مربوط به آن پارتیشن است. شکل 1 طرح پارتیشن‌های اصلی در یک دستگاه را نشان می‌دهد:

Layout of core partitions.

Figure 1. Layout of core partitions.

Partitions are classified in three categories:

  • پارتیشن‌های سیستمی، پارتیشن‌هایی هستند که هنگام به‌روزرسانی سیستم‌عامل و سایر ویژگی‌ها، به‌روزرسانی می‌شوند. system ، boot و init_boot پارتیشن‌های اصلی سیستم هستند.

  • پارتیشن‌های Vendor شامل کدهای مخصوص دستگاه و سخت‌افزار هستند که ممکن است پس از انتشار اولیه هرگز به‌روزرسانی نشوند. پارتیشن‌های vendor ، vendor_boot و odm پارتیشن‌های اصلی vendor هستند.

  • پارتیشن‌های غیرقابل به‌روزرسانی، پارتیشن‌هایی هستند که محتوای آنها یا به‌روزرسانی نمی‌شود یا با داده‌های کاربر به‌روزرسانی می‌شود.

کد موجود در پارتیشن‌های سیستم و فروشنده می‌تواند با استفاده از یک رابط پایدار به نام رابط فروشنده (VINTF) با هم تعامل داشته باشد.

System partitions

در زیر لیستی از تمام پارتیشن‌های سیستم و کاربرد آنها آمده است:

  • پارتیشن boot . این پارتیشن حاوی یک تصویر هسته عمومی (GKI) است. این پارتیشن همچنین شامل ramdisk عمومی در دستگاه‌های راه‌اندازی شده با اندروید ۱۲ و پایین‌تر است. برای اطلاعات بیشتر در مورد ramdisk عمومی، به محتوای تصویر ramdisk عمومی مراجعه کنید.

  • پارتیشن init_boot (اندروید ۱۳ و بالاتر). این پارتیشن شامل یک ramdisk عمومی است. در اندروید ۱۱ و ۱۲، ramdisk عمومی در پارتیشن boot قرار دارد.

  • پارتیشن system . این پارتیشن شامل تصویر سیستم مورد استفاده برای محصولات OEM است.

  • پارتیشن system_ext . این پارتیشن شامل منابع سیستمی و ماژول‌های اختصاصی سیستم است که تصویر سیستم مشترک را در پارتیشن system گسترش می‌دهند.

  • پارتیشن system_dlkm . این پارتیشن شامل ماژول‌های GKI است. برای اطلاعات بیشتر در مورد این پارتیشن، به «پیاده‌سازی پارتیشن ماژول GKI» مراجعه کنید.

  • پارتیشن product . این پارتیشن می‌تواند شامل ماژول‌های مخصوص محصول باشد که با هیچ پارتیشن دیگری همراه نیستند.

  • پارتیشن pvmfw . این پارتیشن، میان‌افزار ماشین مجازی محافظت‌شده (pvmfw) را ذخیره می‌کند که اولین کدی است که در ماشین‌های مجازی محافظت‌شده اجرا می‌شود. برای اطلاعات بیشتر، به میان‌افزار ماشین مجازی محافظت‌شده مراجعه کنید.

  • پارتیشن generic_bootloader . این پارتیشن حاوی بوت لودر عمومی است.

Vendor partitions

در زیر لیستی از تمام پارتیشن‌های فروشنده و کاربرد آنها آمده است:

  • پارتیشن vendor_boot . این پارتیشن حاوی کد بوت مخصوص فروشنده است. برای اطلاعات بیشتر، به پارتیشن‌های بوت فروشنده مراجعه کنید.

  • پارتیشن recovery . این پارتیشن، ایمیج بازیابی را ذخیره می‌کند که در طول فرآیند به‌روزرسانی بی‌سیم (OTA) بوت می‌شود. دستگاه‌هایی که از به‌روزرسانی‌های یکپارچه پشتیبانی می‌کنند، می‌توانند ایمیج‌های بازیابی را به عنوان یک ramdisk موجود در ایمیج boot یا init_boot ذخیره کنند. برای اطلاعات بیشتر در مورد به‌روزرسانی‌های یکپارچه، به به‌روزرسانی‌های A/B (یکپارچه) مراجعه کنید.

  • پارتیشن misc . این پارتیشن توسط پارتیشن ریکاوری استفاده می‌شود و ۴ کیلوبایت یا بیشتر حجم دارد.

  • پارتیشن vbmeta . این پارتیشن حاوی اطلاعات بوت تأیید شده برای همه پارتیشن‌ها است. این اطلاعات تأیید می‌کند که ایمیج‌های نصب شده در هر پارتیشن قابل اعتماد هستند. برای اطلاعات بیشتر در مورد بوت تأیید شده، به بوت تأیید شده مراجعه کنید.

  • پارتیشن vendor . این پارتیشن شامل هر فایل باینری است که مختص فروشنده است و به اندازه کافی عمومی نیست که بتوان آن را در AOSP توزیع کرد.

  • پارتیشن vendor_dlkm . این پارتیشن شامل ماژول‌های هسته فروشنده است. با ذخیره ماژول‌های هسته فروشنده در این پارتیشن به جای پارتیشن vendor ، می‌توانید ماژول‌های هسته را بدون به‌روزرسانی پارتیشن vendor به‌روزرسانی کنید. برای اطلاعات بیشتر، به پارتیشن‌های فروشنده و ODM DKLM مراجعه کنید.

  • پارتیشن odm . این پارتیشن شامل سفارشی‌سازی‌های سازنده طرح اصلی (ODM) برای بسته‌های پشتیبانی برد (BSP) فروشنده سیستم روی تراشه (SoC) است. چنین سفارشی‌سازی‌هایی به ODMها این امکان را می‌دهد که اجزای SoC را جایگزین یا سفارشی‌سازی کنند و ماژول‌های هسته را برای اجزای مخصوص برد، دیمن‌ها و ویژگی‌های مخصوص ODM روی لایه‌های انتزاعی سخت‌افزار (HAL) پیاده‌سازی کنند. این پارتیشن اختیاری است. معمولاً این پارتیشن برای شامل کردن سفارشی‌سازی‌ها استفاده می‌شود تا دستگاه‌ها بتوانند از یک تصویر فروشنده واحد برای چندین SKU سخت‌افزاری استفاده کنند. برای اطلاعات بیشتر، به پارتیشن‌های ODM مراجعه کنید.

  • پارتیشن odm_dlkm . این پارتیشن به ذخیره ماژول‌های هسته ODM اختصاص داده شده است. با ذخیره ماژول‌های هسته ODM در این پارتیشن، به جای پارتیشن odm ، می‌توانید ماژول‌های هسته ODM را بدون به‌روزرسانی پارتیشن odm به‌روزرسانی کنید. برای اطلاعات بیشتر، به پارتیشن‌های Vendor و ODM DKLM مراجعه کنید.

  • پارتیشن radio . این پارتیشن حاوی تصویر رادیو است و فقط برای دستگاه‌هایی که شامل یک رادیو با نرم‌افزار مخصوص رادیو در یک پارتیشن اختصاصی هستند، مورد نیاز است.

Nonupdatable partitions

در زیر لیستی از تمام پارتیشن‌های غیرقابل به‌روزرسانی و کاربرد آنها آمده است:

  • پارتیشن cache . این پارتیشن حاوی داده‌های موقت است و در صورتی که دستگاه شما از به‌روزرسانی‌های یکپارچه استفاده می‌کند، اختیاری است. این پارتیشن نیازی به نوشتن از طریق بوت لودر ندارد، اما باید قابل پاک کردن باشد. اندازه پارتیشن به نوع دستگاه و فضای موجود برای userdata بستگی دارد؛ معمولاً ۵۰ تا ۱۰۰ مگابایت کافی است.

  • پارتیشن userdata . این پارتیشن شامل برنامه‌ها و داده‌های نصب‌شده توسط کاربر، از جمله داده‌های سفارشی‌سازی، است.

  • پارتیشن metadata . اگر دستگاه شما از رمزگذاری فراداده استفاده می‌کند، این پارتیشن حاوی کلید رمزگذاری فراداده است. اندازه این پارتیشن ۱۶ مگابایت یا بیشتر است، رمزگذاری نشده است و داده‌های آن اسنپ‌شات نمی‌شوند. این پارتیشن هنگام تنظیم مجدد کارخانه دستگاه پاک می‌شود.

Partition update rules and recommendations

توصیه می‌کنیم تمام پارتیشن‌های سیستم را به طور کلی و تمام پارتیشن‌های فروشنده را به طور کلی به‌روزرسانی کنید. با به‌روزرسانی مجموعه پارتیشن‌ها به طور کلی، می‌توانید پایداری رابط‌های بین تصاویر در هر پارتیشن را آزمایش کنید.

صرف نظر از نحوه به‌روزرسانی پارتیشن‌هایتان، پارتیشن‌های زیر به دلیل وابستگی‌های تنگاتنگ و عدم وجود APIهای پایدار باید به‌روزرسانی شوند:

  • The boot and system_dlkm partitions
  • پارتیشن‌های init_boot ، system ، system_ext و product

پارتیشن‌های پویا

دستگاه‌هایی که اندروید ۱۱ و بالاتر را اجرا می‌کنند می‌توانند از پارتیشن‌های پویا پشتیبانی کنند، که یک سیستم پارتیشن‌بندی فضای کاربری برای اندروید است که به شما امکان می‌دهد در طول به‌روزرسانی‌های بی‌سیم (OTA) پارتیشن‌ها را ایجاد، تغییر اندازه یا از بین ببرید. برای اطلاعات بیشتر، به پارتیشن‌های پویا مراجعه کنید.

Soong product variants

سیستم ساخت Soong از انواع تصویر برای تقسیم وابستگی‌های ساخت استفاده می‌کند. ماژول‌های بومی ( /build/soong/cc ) می‌توانند ماژول‌های فرآیند سیستم را به نوع اصلی و ماژول‌های فرآیند فروشنده را به نوع فروشنده تغییر دهند؛ یک ماژول در یک نوع تصویر نمی‌تواند به ماژول‌های دیگر در یک نوع تصویر متفاوت پیوند دهد.

در اندروید ۱۲ یا بالاتر، یک ماژول سیستمی با vendor_available: true علاوه بر نوع اصلی، یک نوع فروشنده نیز ایجاد می‌کند. برای ایجاد نوع محصول، product_available: true باید تعریف شود. برخی از کتابخانه‌های VNDK بدون product_available: true برای ماژول‌های محصول در دسترس نیستند.