پارتیشن های Ramdisk

در اندروید 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 است.

ramdisk.img
  -/
    - init.rc
    - init
    - etc -> /system/etc
    - system/ (mount point)
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    
فقط شامل یک هسته بوت معمولی است.

حاوی یک هسته و ramdisk.img است.

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 است.

system.img
  -/
    - bin/
    - etc
    - vendor -> /vendor
    - ...
   

حاوی محتویات ادغام شده $TARGET_SYSTEM_OUT و $TARGET_ROOT_OUT است.

system.img
  -/
    - init.rc
    - init
    - etc -> /system/etc
    - system/
      - bin/
      - etc/
      - vendor -> /vendor
      - ...
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    

حاوی محتویات ادغام شده $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)
    ...
    

طرح بندی پارتیشن (دستگاه های 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)
    ...