در اندروید ۱۰ و ۱۱، ramdisk مرحله اول شامل فایل باینری init مرحله اول (که نصب اولیه را طبق ورودیهای fstab انجام میدهد) و فایلهای fstab فروشنده است. (همانند اندروید ۹ و پایینتر، system.img حاوی محتویات $TARGET_ROOT_OUT است.)
برای دستگاههایی که دارای boot-ramdisk هستند (غیر از A/B)، مرحله اول init یک فایل اجرایی استاتیک است که در
/initقرار دارد. این دستگاههاsystem.imgبه عنوان/systemmount میکنند، سپس یک عملیات سوئیچ روت برای انتقال mount از/systemبه/انجام میدهند. محتویات ramdisk پس از اتمام mount آزاد میشوند.برای دستگاههایی که از ریکاوری به عنوان ramdisk استفاده میکنند، init مرحله اول در
/initدرون ramdisk ریکاوری قرار دارد. این دستگاهها ابتدا root را به/first_stage_ramdiskتغییر میدهند تا اجزای ریکاوری را از محیط حذف کنند، سپس مانند دستگاههایی با boot-ramdisk عمل میکنند (یعنیsystem.imgرا به عنوان/systemmount میکنند، root را تغییر میدهند تا آن mount را به/منتقل کنند و محتویات ramdisk را پس از mount آزاد کنند). اگرandroidboot.force_normal_boot=1در خط فرمان هسته (یا bootconfig از اندروید ۱۲ و بالاتر) وجود داشته باشد، دستگاهها به جای بوت شدن در حالت ریکاوری، به طور عادی (به اندروید) بوت میشوند.
پس از اتمام مرحله اول init، فایل /system/bin/init را با آرگومان selinux_setup اجرا میکند تا SELinux را کامپایل و روی سیستم بارگذاری کند. در نهایت، init دوباره فایل /system/bin/init را با آرگومان second_stage اجرا میکند. در این مرحله، مرحله اصلی init اجرا میشود و فرآیند بوت را با استفاده از اسکریپتهای init.rc ادامه میدهد.
بخشهای بعدی تفاوتهای موجود در طرحبندی پارتیشنها برای دستگاههای غیر A/B قبل و بعد از اندروید ۱۰ را شرح میدهند.
طرحبندی پارتیشنها (دستگاههای غیر A/B)
بخشهای بعدی تفاوتهای موجود در طرحبندی پارتیشنها برای دستگاههای غیر A/B قبل و بعد از اندروید ۱۰ را شرح میدهند.
بوت.img
| رمدیسک (اندروید ۸.x و پایینتر) | سیستم به عنوان ریشه (اندروید ۹) | رمدیسک (اندروید ۱۰ و ۱۱) |
|---|---|---|
شامل یک هسته و یک
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 است.
سیستم.img
| رمدیسک (اندروید ۸.x و پایینتر) | سیستم به عنوان ریشه (اندروید ۹) | رمدیسک (اندروید ۱۰ و ۱۱) |
|---|---|---|
شامل یک
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 قبل و بعد از اندروید ۱۰ را شرح میدهند.
بوت.img
| سیستم به عنوان ریشه (اندروید ۹) | رمدیسک (اندروید ۱۰ و ۱۱) |
|---|---|
شامل کرنل بوت معمولی و دیسک بازیابی-رم ( 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)
...
|
سیستم.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)
...