پارتیشن های Ramdisk

در اندروید ۱۰ و ۱۱، ramdisk مرحله اول شامل فایل باینری init مرحله اول (که نصب اولیه را طبق ورودی‌های fstab انجام می‌دهد) و فایل‌های fstab فروشنده است. (همانند اندروید ۹ و پایین‌تر، system.img حاوی محتویات $TARGET_ROOT_OUT است.)

  • برای دستگاه‌هایی که دارای boot-ramdisk هستند (غیر از A/B)، مرحله اول init یک فایل اجرایی استاتیک است که در /init قرار دارد. این دستگاه‌ها system.img به عنوان /system mount می‌کنند، سپس یک عملیات سوئیچ روت برای انتقال mount از /system به / انجام می‌دهند. محتویات ramdisk پس از اتمام mount آزاد می‌شوند.

  • برای دستگاه‌هایی که از ریکاوری به عنوان ramdisk استفاده می‌کنند، init مرحله اول در /init درون ramdisk ریکاوری قرار دارد. این دستگاه‌ها ابتدا root را به /first_stage_ramdisk تغییر می‌دهند تا اجزای ریکاوری را از محیط حذف کنند، سپس مانند دستگاه‌هایی با boot-ramdisk عمل می‌کنند (یعنی system.img را به عنوان /system mount می‌کنند، 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 است.

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

سیستم.img

رمدیسک
(اندروید ۸.x و پایین‌تر)
سیستم به عنوان ریشه
(اندروید ۹)
رمدیسک
(اندروید ۱۰ و ۱۱)

شامل یک 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 قبل و بعد از اندروید ۱۰ را شرح می‌دهند.

بوت.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)
    ...