ใน 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 -/ - init.rc - init - etc -> /system/etc - system/ (mount point) - vendor/ (mount point) - odm/ (mount point) ... | มีเคอร์เนลสำหรับบูตปกติเท่านั้น | ประกอบด้วยเคอร์เนลและ 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 -/ - bin/ - etc - vendor -> /vendor - ... | มีเนื้อหาที่ผสานของ system.img -/ - init.rc - init - etc -> /system/etc - system/ - bin/ - etc/ - vendor -> /vendor - ... - vendor/ (mount point) - odm/ (mount point) ... | มีเนื้อหาที่ผสานของ 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)
...