در اندروید 10 و 11، ramdisk مرحله اول شامل باینری init مرحله اول (که نصب اولیه را طبق ورودی های fstab انجام می دهد) و فایل های fstab فروشنده است. (مانند Android 9 و پایینتر، system.img حاوی محتوای $TARGET_ROOT_OUT است.)
برای دستگاههایی با boot-ramdisk (غیر A/B)، مرحله اول init یک فایل اجرایی استاتیک است که در
/initقرار دارد. این دستگاههاsystem.imgرا بهعنوان/systemmount میکنند، سپس یک عملیات root سوئیچ را برای انتقال mount در/systemبه/انجام میدهند. محتویات ramdisk پس از اتمام نصب آزاد می شوند.برای دستگاه هایی که از بازیابی به عنوان ramdisk استفاده می کنند، مرحله اول init در
/initدر ramdisk بازیابی قرار دارد. این دستگاهها ابتدا root را به/first_stage_ramdiskتغییر میدهند تا اجزای بازیابی را از محیط حذف کنند، سپس مانند دستگاههای دارای boot-ramdisk عمل میکنند (یعنیsystem.imgرا به صورت/systemقرار میدهند، root را برای انتقال آن به/و محتویات ramdisk را پس از نصب آزاد میکنند). اگر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)
...