دستگاه های اندرویدی شامل چندین پارتیشن هستند که عملکردهای مختلفی را در فرآیند بوت انجام می دهند.
پارتیشن های استاندارد
پارتیشن
boot
این پارتیشن حاوی یک تصویر هسته است و با استفاده ازmkbootimg
ایجاد شده است. شما می توانید از یک پارتیشن مجازی برای فلش مستقیم هر یک از تصاویر بدون فلش کردن پارتیشن بوت جدید استفاده کنید. این پارتیشن همچنین حاوی ramdisk عمومی در دستگاه هایی است که قبل از اندروید 13 راه اندازی شده اند.هسته پارتیشن
kernel
مجازی با نوشتن تصویر هسته جدید روی تصویر هسته قدیمی، هسته را بازنویسی می کند (zImage
,zImage-dtb
,Image.gz-dtb
). اگر هسته توسعه ارائه شده ناسازگار است، ممکن است لازم باشدvendor
،system
یا پارتیشنdtb
(در صورت وجود) را با ماژول های هسته مرتبط به روز کنید.رام دیسک پارتیشن
ramdisk
مجازی با نوشتن تصویر ramdisk جدید روی تصویر ramdisk قدیمی، ramdisk را بازنویسی می کند.
عملیات رونویسی محل شروع تصویر موجود در eMMC را تعیین می کند و تصویر جدید را در آن مکان کپی می کند. تصویر جدید (هسته یا ramdisk) ممکن است بزرگتر از تصویر موجود باشد. برای ایجاد فضا، بوت لودر می تواند داده ها را به دنبال تصویر جابجا کند یا با یک خطا از عملیات رها شود.
پارتیشن
init_boot
. این پارتیشن حاوی ramdisk عمومی برای دستگاه هایی است که با اندروید 13 و بالاتر راه اندازی می شوند.پارتیشن
system
این پارتیشن شامل فریم ورک اندروید می باشد.پارتیشن
odm
این پارتیشن شامل سفارشیسازیهای سازنده طراحی اصلی (ODM) برای بستههای پشتیبانی هیئت مدیره فروشنده (BSP) سیستم روی تراشه (SoC) است. چنین سفارشیسازیهایی ODMها را قادر میسازد تا اجزای SoC را جایگزین یا سفارشی کنند و ماژولهای هسته را برای اجزای برد، دیمونها و ویژگیهای خاص ODM بر روی لایههای انتزاعی سختافزاری (HAL) پیادهسازی کنند. این پارتیشن اختیاری است. به طور معمول، از آن برای شامل سفارشیسازی استفاده میشود تا دستگاهها بتوانند از یک تصویر فروشنده برای چندین SKU سختافزاری استفاده کنند. برای جزئیات، به پارتیشنهای ODM مراجعه کنید.پارتیشن
odm_dlkm
. این پارتیشن به ذخیره سازی ماژول های هسته ODM اختصاص یافته است. ذخیره سازی ماژول های هسته ODM در پارتیشنodm_dlkm
(بر خلاف پارتیشنodm
) امکان به روز رسانی ماژول های هسته ODM را بدون به روز رسانی پارتیشنodm
فراهم می کند.پارتیشن
recovery
این پارتیشن تصویر بازیابی را ذخیره می کند که در طی فرآیند OTA بوت می شود. دستگاههایی که از بهروزرسانیهای یکپارچه پشتیبانی میکنند، میتوانند تصاویر بازیابی را بهعنوان یک ramdisk موجود در تصویرboot
یاinit_boot
(به جای یک تصویر جداگانه) ذخیره کنند.پارتیشن
cache
این پارتیشن دادههای موقتی را ذخیره میکند و اگر دستگاهی از بهروزرسانیهای یکپارچه استفاده میکند اختیاری است. پارتیشن کش نیازی به نوشتن از بوت لودر ندارد، اما باید قابل پاک شدن باشد. اندازه پارتیشن به نوع دستگاه و در دسترس بودن فضا درuserdata
بستگی دارد. معمولاً 50 تا 100 مگابایت کافی است.پارتیشن
misc
این پارتیشن توسط پارتیشن بازیابی استفاده می شود و 4 کیلوبایت یا بزرگتر است.پارتیشن
userdata
این پارتیشن شامل برنامه ها و داده های نصب شده توسط کاربر، از جمله داده های سفارشی سازی است.پارتیشن
metadata
هنگامی که دستگاه از رمزگذاری ابرداده استفاده می کند، از این پارتیشن برای ذخیره کلید رمزگذاری فراداده استفاده می شود. اندازه 16 مگابایت یا بزرگتر است. رمزگذاری نشده است و داده های آن عکس فوری نیست. هنگامی که دستگاه به تنظیمات کارخانه بازنشانی می شود، پاک می شود. استفاده از این پارتیشن به شدت محدود است.پارتیشن
vendor
این پارتیشن حاوی هر باینری است که قابل توزیع در AOSP نیست. اگر دستگاه حاوی اطلاعات اختصاصی نیست، می توانید این پارتیشن را حذف کنید.پارتیشن
vendor_dlkm
. این پارتیشن به ذخیره سازی ماژول های هسته فروشنده اختصاص داده شده است. ذخیره سازی ماژول های هسته فروشنده در پارتیشنvendor_dlkm
(برخلاف پارتیشنvendor
) امکان به روز رسانی ماژول های هسته را بدون به روز رسانی پارتیشنvendor
فراهم می کند.پارتیشن
radio
این پارتیشن حاوی تصویر رادیویی است و فقط برای دستگاه هایی که دارای رادیو با نرم افزار مخصوص رادیو در یک پارتیشن اختصاصی هستند مورد نیاز است.پارتیشن
tos
این پارتیشن تصویر باینری سیستم عامل Trusty را ذخیره می کند و تنها در صورتی استفاده می شود که دستگاه دارای Trusty باشد. برای جزئیات، به پارتیشنهای TOS مراجعه کنید.پارتیشن
pvmfw
. این پارتیشن Firmware ماشین مجازی محافظت شده (pvmfw) را ذخیره می کند که اولین کدی است که در VM های محافظت شده اجرا می شود. برای جزئیات بیشتر به Firmware ماشین مجازی محافظت شده مراجعه کنید.
پارتیشن های پویا
دستگاههای دارای Android 11 و بالاتر میتوانند از پارتیشنهای پویا پشتیبانی کنند، این پارتیشنها یک سیستم پارتیشنبندی فضای کاربران برای Android هستند که امکان ایجاد، تغییر اندازه یا تخریب پارتیشنها را در طول بهروزرسانیهای هوایی (OTA) فراهم میکند. برای جزئیات، به پارتیشن های پویا مراجعه کنید.
پارتیشن های بحرانی را تعیین کنید
اگر دستگاه برای اجرا به پارتیشنها یا دادههای خاصی نیاز دارد، باید آن پارتیشنها یا دادهها را بهعنوان کاملاً محافظتشده یا قابل فلشکردن مجدد تعیین کنید، به این معنی که با استفاده از دستور fastboot oem
قابل بازسازی، ارائه یا استخراج هستند. این شامل داده هایی مانند تنظیمات کارخانه خاص هر دستگاه، شماره سریال، داده های کالیبراسیون و موارد دیگر می شود.
تغییرات اندروید 11
اندروید 11 شامل تغییرات متعددی در پارتیشنها میشود، از جمله محدودیتهایی در پیوند دادن به کتابخانهها و انواع جدید تصویر Soong.
شکل 1. طرح پارتیشن در اندروید 11
تصویر سیستم واحد (SSI). یک تصویر مفهومی جدید که شامل تصاویر
system
وsystem_ext
است. وقتی این پارتیشنها برای مجموعهای از دستگاههای هدف مشترک هستند، آن دستگاهها میتوانند SSI را به اشتراک بگذارند و از ساختن تصاویرsystem
وsystem_ext
صرفنظر کنند.پارتیشن
system_ext
. یک پارتیشن جدید که می تواند از منابعsystem
استفاده کند و می تواند شامل ماژول های سیستم باشد که:ماژول های سیستم AOSP را در پارتیشن
system
گسترش دهید. ما توصیه می کنیم چنین ماژول هایی را به AOSP آپدیت کنید تا بعداً بتوان آنها را در پارتیشنsystem
نصب کرد.بستهبندی ماژولهای OEM یا SoC خاص. ما توصیه می کنیم چنین ماژول هایی را جدا کنید تا بتوان آنها را در پارتیشن
product
یاvendor
نصب کرد.
پارتیشن
system
تصویر سیستم رایج مورد استفاده برای محصولات OEM. ما توصیه میکنیم که ماژولهای اختصاصی را از پارتیشنsystem
خارج کنید، یا با بالادستی آنها به AOSP یا با انتقال آنها به پارتیشنsystem_ext
.پارتیشن
product
این پارتیشن اکنون میتواند از رابطهای مجاز برای نصب ماژولهای خاص محصول استفاده کند که با هیچ پارتیشن دیگری همراه نیستند.
VNDK تغییر می کند
Vendor Native Development Kit (VNDK) مجموعه ای از کتابخانه های نصب شده در پارتیشن system
است و منحصراً برای فروشندگان طراحی شده است تا HAL های خود را پیاده سازی کنند.
در اندروید 10 و پایینتر، پارتیشن
vendor
میتواند به کتابخانههای VNDK در پارتیشنsystem
پیوند دهد، اما نمیتواند به کتابخانههای دیگر در پارتیشنsystem
پیوند دهد. ماژول های بومی در پارتیشنproduct
می توانند به هر کتابخانه ای در پارتیشنsystem
پیوند دهند.در اندروید 11 و بالاتر، پارتیشنهای
product
وvendor
میتوانند به کتابخانههای VNDK در پارتیشنsystem
پیوند داده شوند، اما نمیتوانند به کتابخانههای دیگر در پارتیشنsystem
پیوند داده شوند.
انواع محصول سونگ
سیستم ساخت Soong از انواع تصویر برای تقسیم وابستگی های ساخت استفاده می کند. ماژولهای بومی ( /build/soong/cc
) میتوانند ماژولهای فرآیند سیستم را به نوع اصلی و ماژولهای فرآیند فروشنده را به نوع فروشنده تغییر دهند. یک ماژول در یک نوع تصویر نمی تواند به ماژول های دیگر در یک نوع تصویر متفاوت پیوند داده شود.
در اندروید 10 یا پایین تر، یک ماژول سیستم به طور خودکار انواع اصلی را ایجاد می کند. همچنین میتواند انواع فروشنده را با تعریف
vendor_available: true
در فایلهایAndroid.bp
خود ایجاد کند. این ماژول های فروشنده را قادر می سازد تا به ماژول های سیستم پیوند بخورند. کتابخانههای VNDK که انواع فروشنده کتابخانههایsystem
هستند، همچنین میتوانند با تعریفvendor_available: true
در فایلهایAndroid.bp
خود، انواع فروشنده برای ماژولهای فروشنده ایجاد کنند (به مثال مراجعه کنید).در اندروید 11، یک ماژول سیستم میتواند با تعریف
vendor_available: true
یک نوع محصول (علاوه بر انواع اصلی و فروشنده) ایجاد کند.در Android 12 یا بالاتر، یک ماژول سیستم با
vendor_available: true
یک نوع فروشنده را علاوه بر نوع اصلی ایجاد میکند. برای ایجاد یک نوع محصول،product_available: true
باید تعریف شود. برخی از کتابخانه های VNDK بدونproduct_available: true
برای ماژول های محصول در دسترس نیستند.