พาร์ติชัน 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 ก่อนเพื่อนำคอมโพเนนต์การกู้คืนออกจากสภาพแวดล้อม จากนั้นจึงดำเนินการเช่นเดียวกับอุปกรณ์ที่มี boot-ramdisk (กล่าวคือ เมานต์ system.img เป็น /system เปลี่ยนรูทเพื่อย้ายการเมานต์นั้นไปยัง / และล้างเนื้อหา 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)
มีเคอร์เนลการบูตปกติและ 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)
    ...