پارتیشن‌های Ramdisk

در Android 10 و 11، رم‌دیسک مرحله اول شامل باینری init مرحله اول (که نصب اولیه را طبق مشخصات ورودی‌های fstab انجام می‌دهد) و فایل‌های fstab فروشنده است. (همانند Android 9 و نسخه‌های پایین‌تر، system.img حاوی محتوای $TARGET_ROOT_OUT است.)

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

  • برای دستگاه‌هایی که از بازیابی به‌عنوان ramdisk استفاده می‌کنند، init مرحله اول در /init در ramdisk بازیابی قرار دارد. این دستگاه‌ها ابتدا ریشه را به /first_stage_ramdisk تغییر می‌دهند تا عناصر بازیابی را از محیط بردارند، سپس همانند دستگاه‌های دارای boot-ramdisk عمل می‌کنند (یعنی system.img را به‌عنوان /system نصب می‌کنند، ریشه را تغییر می‌دهند تا این نصب را به / منتقل کنند، و محتوای ramdisk را پس‌از نصب آزاد می‌کنند). اگر androidboot.force_normal_boot=1 در خط فرمان هسته (یا پیکربندی راه‌اندازی از Android 12 و بالاتر) وجود داشته باشد، دستگاه‌ها به‌طور معمول (در Android) راه‌اندازی می‌شوند و به‌جای راه‌اندازی در حالت بازیابی، در Android راه‌اندازی می‌شوند.

پس‌از تکمیل مرحله اول راه‌اندازی، /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

Ramdisk
(Android 8.x و نسخه‌های پایین‌تر)
سیستم به‌عنوان ریشه
(Android 9)
Ramdisk
(Android 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)
    ...
    

recovery.img

دارای هسته بازیابی و ramdisk.img بازیابی است

system.img

Ramdisk
(Android 8.x و نسخه‌های پایین‌تر)
سیستم به‌عنوان ریشه
(Android 9)
Ramdisk
(Android 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

سیستم به‌عنوان ریشه
(Android 9)
Ramdisk
(Android 10 و 11)
حاوی هسته راه‌اندازی عادی و دیسک مجازی بازیابی (BOARD_USES_RECOVERY_AS_BOOT := true) است.

دیسک مجازی بازیابی فقط برای راه‌اندازی در حالت بازیابی استفاده می‌شود.
حاوی هسته راه‌اندازی عادی و دیسک حافظه بازیابی (BOARD_USES_RECOVERY_AS_BOOT := true) است.

از دیسک حافظه بازیابی برای راه‌اندازی در هر دو حالت بازیابی و Android استفاده می‌شود.
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)
    ...