พาร์ติชัน Ramdisk

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

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

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

หลังจากเสร็จสิ้นระยะแรก 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

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

การกู้คืน.img

มีเคอร์เนลการกู้คืนและ ramdisk.img การกู้คืน

ระบบ.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)
มีเคอร์เนลสำหรับการเปิดเครื่องปกติและ Recovery-ramdisk (BOARD_USES_RECOVERY_AS_BOOT := true).

Recovery-ramdisk ใช้เพื่อเปิดเครื่องในการกู้คืนเท่านั้น
มีเคอร์เนลสำหรับการเปิดเครื่องปกติและ Recovery-ramdisk (BOARD_USES_RECOVERY_AS_BOOT := true)

RAM การกู้คืน ใช้เพื่อบูตเข้าสู่ทั้งการกู้คืนและ 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)
    ...
    

ระบบ.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)
    ...