ใน 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 -/ - 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) ... |
recovery.img
มีเคอร์เนลการกู้คืนและramdisk.img
การกู้คืน
system.img
Ramdisk (Android 8.x และต่ำกว่า) |
ระบบในฐานะรูท (Android 9) |
Ramdisk (Android 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
ระบบในฐานะรูท (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)
...