در اندروید 10 و 11، ramdisk مرحله اول شامل باینری init مرحله اول (که نصب اولیه را طبق ورودی های fstab انجام می دهد) و فایل های fstab فروشنده است. (مانند Android 9 و پایینتر، system.img
حاوی محتوای $TARGET_ROOT_OUT
است.)
برای دستگاههایی با boot-ramdisk (غیر A/B)، مرحله اول init یک فایل اجرایی استاتیک است که در
/init
قرار دارد. این دستگاههاsystem.img
را بهعنوان/system
mount میکنند، سپس یک عملیات root سوئیچ را برای انتقال mount در/system
به/
انجام میدهند. محتویات ramdisk پس از اتمام نصب آزاد می شوند.برای دستگاه هایی که از بازیابی به عنوان ramdisk استفاده می کنند، مرحله اول init در
/init
در ramdisk بازیابی قرار دارد. این دستگاهها ابتدا root را به/first_stage_ramdisk
تغییر میدهند تا مؤلفههای بازیابی را از محیط حذف کنند، سپس مانند دستگاههای دارای boot-ramdisk عمل میکنند (یعنیsystem.img
را به صورت/system
mount کنید، root را تغییر دهید تا مانت را به/
منتقل کنید، و محتویات رام دیسک رایگان پس از نصب). اگرandroidboot.force_normal_boot=1
در خط فرمان هسته (یا بوت کانفیگ از اندروید 12 به بعد) وجود داشته باشد، دستگاه ها به جای بوت شدن در حالت بازیابی، به طور معمول (در اندروید) بوت می شوند.
پس از اتمام مرحله اول init، /system/bin/init
با آرگومان selinux_setup
اجرا می کند تا SELinux را کامپایل کرده و روی سیستم بارگذاری کند. در نهایت، init /system/bin/init
را دوباره با آرگومان second_stage
اجرا میکند. در این مرحله فاز اصلی init اجرا می شود و با استفاده از اسکریپت های init.rc
فرآیند بوت را ادامه می دهد.
در بخشهای زیر تفاوتهای طرحبندی پارتیشن برای دستگاههای غیرA/B قبل و بعد از Android 10 توضیح داده میشود.
طرح بندی پارتیشن (دستگاه های غیر A/B)
در بخشهای زیر تفاوتهای طرحبندی پارتیشن برای دستگاههای غیرA/B قبل و بعد از Android 10 توضیح داده میشود.
boot.img
رامدیسک (اندروید 8.x و پایین تر) | سیستم به عنوان ریشه (اندروید 9) | رامدیسک (اندروید 10 و 11) |
---|---|---|
شامل یک هسته و یک ramdisk.img -/ - init.rc - init - etc -> /system/etc - system/ (mount point) - vendor/ (mount point) - odm/ (mount point) ... | فقط شامل یک هسته بوت معمولی است. | حاوی یک هسته و ramdisk.img -/ - init - vendor fstab files - system/ (mount point) - vendor/ (mount point) - odm/ (mount point) ... |
ریکاوری.img
شامل یک هسته بازیابی و یک ramdisk.img
بازیابی است
system.img
رامدیسک (اندروید 8.x و پایین تر) | سیستم به عنوان ریشه (اندروید 9) | رامدیسک (اندروید 10 و 11) |
---|---|---|
شامل system.img -/ - bin/ - etc - vendor -> /vendor - ... | حاوی محتویات ادغام شده system.img -/ - init.rc - init - etc -> /system/etc - system/ - bin/ - etc/ - vendor -> /vendor - ... - vendor/ (mount point) - odm/ (mount point) ... | حاوی محتویات ادغام شده system.img -/ - init.rc - init -> /system/bin/init - etc -> /system/etc - system/ - bin/ - etc/ - vendor -> /vendor - ... - vendor/ (mount point) - odm/ (mount point) ... |
طرح بندی پارتیشن (دستگاه های A/B)
در بخشهای زیر تفاوتهای طرحبندی پارتیشن برای دستگاههای A/B قبل و بعد از Android 10 توضیح داده میشود.
boot.img
سیستم به عنوان ریشه (اندروید 9) | رامدیسک (اندروید 10 و 11) |
---|---|
حاوی هسته بوت معمولی و دیسک بازیابی ( BOARD_USES_RECOVERY_AS_BOOT := true ).Recovery-ramdisk فقط برای راه اندازی در ریکاوری استفاده می شود. | حاوی هسته بوت معمولی و دیسک بازیابی ( BOARD_USES_RECOVERY_AS_BOOT := true ).Recovery-ramdisk برای بوت شدن در ریکاوری و اندروید استفاده می شود. ramdisk.img -/ - init -> /system/bin/init - first_stage_ramdisk - vendor fstab files - etc -> /system/etc - system/ (mount point) - vendor/ (mount point) - odm/ (mount point) ... |
system.img
حاوی محتویات ادغام شده $TARGET_SYSTEM_OUT
و $TARGET_ROOT_OUT
است.
system.img
-/
- init.rc
- init -> /system/bin/init
- etc -> /system/etc
- system/
- bin/
- etc/
- vendor -> /vendor
- ...
- vendor/ (mount point)
- odm/ (mount point)
...