พาร์ติชั่น Ramdisk

ใน Android 10 และ 11 ramdisk สเตจแรกประกอบด้วยไบนารี init สเตจแรก (ซึ่งดำเนินการติดตั้งก่อนกำหนดตามที่ระบุโดยรายการ fstab) และไฟล์ fstab ของผู้จำหน่าย (เช่นเดียวกับใน Android 9 และต่ำกว่า system.img มีเนื้อหาของ $TARGET_ROOT_OUT )

  • สำหรับอุปกรณ์ที่มี boot-ramdisk (ไม่ใช่ A/B) init ระยะแรกจะเป็นไฟล์เรียกทำงานแบบคงที่ซึ่งอยู่ที่ /init อุปกรณ์เหล่านี้เมานต์ system.img เป็น /system จากนั้นดำเนินการสวิตช์รูทเพื่อย้ายเมานต์ที่ /system ไปที่ / เนื้อหาของ ramdisk จะถูกปล่อยหลังจากการติดตั้งเสร็จสิ้น

  • สำหรับอุปกรณ์ที่ใช้การกู้คืนเป็น ramdisk ขั้นตอนแรก init จะอยู่ที่ /init ภายใน ramdisk การกู้คืน อุปกรณ์เหล่านี้จะสลับรูทเป็น /first_stage_ramdisk ก่อนเพื่อลบส่วนประกอบการกู้คืนออกจากสภาพแวดล้อม จากนั้นดำเนินการเหมือนกับอุปกรณ์ที่มีบูต ramdisk (นั่นคือเมานต์ system.img เป็น /system สลับรูทเพื่อย้ายเมานต์นั้นไปที่ / และ ฟรีเนื้อหา ramdisk หลังจากติดตั้ง) หาก androidboot.force_normal_boot=1 มีอยู่ในบรรทัดคำสั่งเคอร์เนล (หรือ bootconfig จาก Android 12 เป็นต้นไป) อุปกรณ์จะบู๊ตตามปกติ (เป็น Android) แทนที่จะบูตเข้าสู่โหมดการกู้คืน

หลังจาก 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

แรมดิสก์
(Android 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

แรมดิสก์
(Android 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)
ประกอบด้วยเคอร์เนลสำหรับบูตปกติและ recovery-ramdisk ( BOARD_USES_RECOVERY_AS_BOOT := true )

Recovery-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)
    ...