מחיצות של Ramdisk

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

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

  • במכשירים שמשתמשים בשחזור כ-ramdisk, שלב האתחול הראשון נמצא במיקום /init בתוך ה-ramdisk של השחזור. במכשירים האלה, המערכת עוברת קודם אל /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 מופעלת שוב עם הארגומנט second_stage./system/bin/init בשלב הזה, השלב הראשי של 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)
מכיל ליבת אתחול רגילה ו-ramdisk לשחזור (BOARD_USES_RECOVERY_AS_BOOT := true).

ה-ramdisk לשחזור משמש רק לאתחול לשחזור.
מכיל את ליבת האתחול הרגילה ואת 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)
    ...