מחיצות של Ramdisk

ב-Android 10 וב-Android 11, דיסק ה-RAM של השלב הראשון מכיל את קובץ ה-init הבינארי של השלב הראשון (שמבצע קיבוע מוקדם כפי שמצוין ברשומות fstab) ואת קובצי ה-fstab של הספק. (כמו ב-Android 9 ובגרסאות קודמות, הערך של system.img מכיל את התוכן של $TARGET_ROOT_OUT).

  • במכשירים עם boot-ramdisk (לא A/B), השלב הראשון של init הוא קובץ הפעלה סטטי שנמצא ב-/init. המכשירים האלה טוענים את system.img בתור /system, ואז מבצעים פעולה ברמה הבסיסית (root) של המתג כדי להעביר את הטעינה ב-/system אל /. התוכן של ה-ramdisk מתפנה אחרי השלמת הרכיבה.

  • במכשירים שמשתמשים בתיקיית שחזור כ-ramdisk, השלב הראשון של init נמצא ב-/init בתוך ה-ramdisk של התיקייה לשחזור. במכשירים האלה, קודם עוברים את ה-root ל-/first_stage_ramdisk כדי להסיר את רכיבי השחזור מהסביבה, ואז ממשיכים כמו במכשירים עם boot-ramdisk (כלומר, מחברים את system.img כ-/system, עוברים את ה-root כדי להעביר את החיבור הזה ל-/ ומפנים את התוכן של ה-ramdisk אחרי החיבור). אם הערך androidboot.force_normal_boot=1 מופיע בשורת הפקודה של הליבה (או ב-bootconfig מ-Android 12 ואילך), המכשירים יופעלו באופן רגיל (ב-Android) במקום להופעל במצב שחזור.

בסיום שלב ההפעלה הראשון, מתבצעת הפעלה של /system/bin/init עם הארגומנט selinux_setup כדי לקמפל ולטעון את SELinux למערכת. לבסוף, הפקודה init מפעילה שוב את /system/bin/init עם הארגומנט second_stage. בשלב הזה, השלב הראשי של האתחול יריץ את תהליך ההפעלה וממשיך את תהליך ההפעלה באמצעות הסקריפטים init.rc.

בקטעים הבאים מפורטים ההבדלים בתצוגת המחיצות במכשירים שאינם עם תמיכה ב-A/B לפני ואחרי Android 10.

פריסות של מחיצות (לא במכשירי A/B)

בקטעים הבאים מפורטים ההבדלים בתצוגות המחיצות במכשירים שאינם עם תמיכה ב-A/B, לפני ואחרי Android 10.

boot.img

דיסק ראם
(Android מגרסה 8.x ומטה)
מערכת כ-root
(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)
    ...
    

שחזור.img

מכיל ליבה לשחזור ו-ramdisk.img לשחזור

system.img

Ramdisk
(Android 8.x ומטה)
מערכת כ-root
(Android 9)
Ramdisk
(Android 10 ו-Android 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

מערכת כ-root
(Android 9)
Ramdisk
(Android 10 ו-11)
מכיל את הליבה הרגילה של האתחול ואת recovery-ramdisk‏ (BOARD_USES_RECOVERY_AS_BOOT := true).

Recovery-ramdisk‏ משמש רק כדי להפעיל את התכונה Recovery.
מכיל את ליבה רגילה של אתחול ו-recovery-ramdisk‏ (BOARD_USES_RECOVERY_AS_BOOT := true).

Recovery-ramdisk‏ משמש לאתחול גם למצב שחזור וגם ל-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)
    ...